明天要面试几个程序员。大家想想问些什么样的问题呢? 我想了几个,大家给点意见,有什么好的问题请指教 1.请写一个多态性的例子。
2.请你说一下全局变量与面向对象编程的的看法。你以前做的系统中是如何处理二者关系的。
3.在以前所做的系统中有没有想到用完全的面向对象的方式开发系统。在你以前做系统时注意哪些相关的细节和编程习惯。 4.在你做的模块完成以后,你会不会站在更高的角度去看一看自己写的代码?你将它重新实现过吗?你为什么会重写? 5.你对重构的理解是什么??你是如何做的。 6.请谈谈你以前做的项目,你在项目中是什么角色?只是写代码还是从业务开始你就接手了。 7.如果是PLMM,则加一个问题:“你有男朋友吗?”(开个玩笑,公司男的太多,大家都希望招两个MM,男女搭配,干活不累) 大家看看这样问可以吗??? 请给意见 ^o^
2.请你说一下全局变量与面向对象编程的的看法。你以前做的系统中是如何处理二者关系的。
3.在以前所做的系统中有没有想到用完全的面向对象的方式开发系统。在你以前做系统时注意哪些相关的细节和编程习惯。 4.在你做的模块完成以后,你会不会站在更高的角度去看一看自己写的代码?你将它重新实现过吗?你为什么会重写? 5.你对重构的理解是什么??你是如何做的。 6.请谈谈你以前做的项目,你在项目中是什么角色?只是写代码还是从业务开始你就接手了。 7.如果是PLMM,则加一个问题:“你有男朋友吗?”(开个玩笑,公司男的太多,大家都希望招两个MM,男女搭配,干活不累) 大家看看这样问可以吗??? 请给意见 ^o^
要是没有,"你是处女吗?..." 那做我老婆吧"
我穿好的防弹衣,带好了头盔,大家用力的扔臭鸡蛋过来吧!!!!大家不要只是说不好,给个理由先给!!!!!!大家给点建议好不好??? 大家还要拉小弟一把呀!!!!!!--------------------- 对于第一问题是这样子的;偶见过几个写了两年的DELPHI了,竟然知道多态!!更谈不上在程序中使用了,所以偶怕了,才想起问这个问题,其实还有几个问题,偶没好意思拿出来。
比如说第5条(你对重构的理解是什么??你是如何做的。)我也是听了这个词不久,不过我觉得自己以前就是这样做过。
刚来公司的时候对面向对象编程根本就不知道,只是知道这个控件能做什么,那个控件能做什么,然后将它们就是组合起来。就用这样的代码完成了功能。可是过了一段时间后觉得程序结构和实现方式不太好,就用新的方式重新又写了一遍,随着对编程思想的理解和对业务的熟悉觉得以前的代码还是不够好,结构不很合理,细节问题也没有处理好,于是就又写一遍。刚开始交给我的模块有的写过四五次。 不久前在CSDN上看了一文章说觉得我这也算重构,我觉得这样子可以很好的提高自己。 我现在认为我是绝对用面向对象的思想开发系统的,在我的程序中不会出现全局变量,包括窗体中的
var
Form2: TForm2;implementation这的Form2: TForm2;都会移到要打开窗口的事件中。反正就是想和大家讨论一下如何的做才是对的,才是更好的。其实还有一个小问题:如果你要截取字符串中的少数几个字符你会Copy还是会用别的方法。如取str的第3,4,5 位的字符显示出来。var
str:string;
begin
str:='ABCDEFG'; showmessage(Copy(str,3,3)); showmessage(str[3]+str[4]+str[5]);你会用哪一种方法。
如果我明天要面试,一定会先到CSDN上来看看
看一看有没有考官在上面放题的呢?
既然你那么强调“对象”这个概念,只需要问:请问你对“对象”是如何理解的?
你只需要听听他们对对象的看法是否比较清楚就行了,一个好的程序员只要能真正把握住“对象”这个概念就是高手(这是我个人的看法,我现在离这个目标还差得很远很远),其他的什么多态啊,重构都是没必要问的,多态和重构只是对“对象”的一种思维延伸而已,对“对象”真正理解的人对于这些都是小菜一碟。另外,我同意楼上reallike(认真学习Cpp用Cpp考虑delphi) 的话,自学能力重要,当然,我个人认为招聘程序员必须把握住三点:1、团队精神;2、事业精神;3、自学能力。
ZyxIp(绝望中...) 自己先回答一下,试一下别人能不能看出你的水平!
欢迎大家发表自己的意见,理不辩不明,事不辩不请。偶不怕大家笑话。分不多,望大家原谅。
--------------------------------------------------
多谢你发表的意见,实在不好意思,偶现在还不知道自己是什么样的人,你说偶是人渣一定有你自己的理由,麻烦你说出来听听,不要不好意思。 大家说什么都可以,偶只是想知道如何做才是对的,当然偶也不会完全听什么人的,只要你能说服俺,俺就服你。
visli()老兄如果能说服偶让偶觉得偶真是一个人渣,那偶就承认自己是人渣。 不过偶也确实做过不少坏事,偶昨天还上色情网站;偶还打过架,偶还骂过人,偶做的坏事真是太多了。 但做啥子事管你P事,你觉得不爽你不会闭嘴??觉得不爽过来咬我呀!!!
除非ppmm就问NO.7
答:只在书上看过现在已忘记了相关概念,或许用过。但真举不出什么例子。
2.请你说一下全局变量与面向对象编程的的看法。你以前做的系统中是如何处理二者关系的。
答: 我认为全局变量有违面向对象的理念,但是全局变量有的时候真的方便。所以我在不麻烦的情况下尽量不用全局变量。非到万不得已时使用,且最多不超过5个。 3.在以前所做的系统中有没有想到用完全的面向对象的方式开发系统。在你以前做系统时注意哪些相关的细节和编程习惯。
答:以前有想过,但编程技术真不过关。现在也在努力做到这一点。一般来说。我写的代码会遵循相应的编码规则,会给函数或过程写说明。会给变量及相应算法给出注释。每一阶段编码完成后会写编码小结。 4.在你做的模块完成以后,你会不会站在更高的角度去看一看自己写的代码?你将它重新实现过吗?你为什么会重写?
答:会,开始写时肯定对相应业务不是很熟悉,等整个模块完成后相对于业务应该比较了解,但对于刚开始时不了解业务且已经实现的架构及设计上肯定会有更好更适合业务的设计。至于为什么会重写。最主要的是每个程序员都不想自已写出来的是垃圾。这是最主要的。 5.你对重构的理解是什么??你是如何做的。
答:我是自学的只有两年多一点写代码经验。或许用过。概念不是很清楚。 6.请谈谈你以前做的项目,你在项目中是什么角色?只是写代码还是从业务开始你就接手了。
答:我以前做过三四个大的项目,前面两个只是配角,写写代码。后来就一起去了解业务并参与系统架构的设计。 7.如果是PLMM,则加一个问题:“你有男朋友吗?”(开个玩笑,公司男的太多,大家都希望招两个MM,男女搭配,干活不累)
答:我是男的。(郑重申明:本人非常敬仰MM做程序员,她们一般都非常优秀。但是,长相都一般)。 我从来没正规的学过。我大专毕业。在学校里学得都是比较老的基础东西。真正吃饭的东东全是自已自学的(培训太贵)。我已经很认真的回答了。估计象我这样不会录取吧。请高手作答谢谢!
其他的cut吧
嘿嘿~
是在找程序员么?
▼第一问题(请写一个多态性的例子)你这样回答:只在书上看过现在已忘记了相关概念,或许用过。但真举不出什么例子。 理解多态性就象理解指针一样,在首次接触指针的时候,有很多程序员理解它很困难。然后过了一段时间,他们运用指针就象系鞋带一样自然,已经无须在考虑。多态性也是如此,开始也是不清楚的,然后逐渐明白了。突然之间他们的编程能力有了巨大的飞跃,就象理解指针一样。 多态性与OOP 的关系就和指针与C与或OBJECT PASCAL 的关系一样。如果是Object Pascal 程序员,但不理解指针就至少失去了Object Pascal 提供的一半的功能。对于OOP和多态性也是如此程序员声称自己理解OOP但不明白多态性的全部含义,他们就失去了这种技术的一半功效.(引自:Delphi 4编程技术内幕 Charile Calvert著,P51) 我相信上面的所说的,大家也都相信,你也许只是不知道。 其它几个问题我觉得第4个最好,你说(至于为什么会重写。最主要的是每个程序员都不想自已写出来的是垃圾。这是最主要的)。对于每一个自己写的代码来,说我们应追求最好的实现方法。这不只是说对公司最主要的是对自己有很大的好处。我也不知怎么说,反正如果我发现程序有更好的解决方法我总是想去重新实现,不过带来的后果是进度好象总比别人慢,怛我的程序比起来是修改最容易,出错最少的。 总之你只要用心去写,比较爱好就行。大家用的技术都差不多大,不了比别人多知几个函数API,但如何将这些东西良好的组织才是重要的。
form1: TForm;删除它又咋?不删除又咋?我不删除,就留着。但是你不说,嘿嘿,尽管定义了,我发现我几乎不用这个form1,form2。好像用得很少。如果有全局变量,我会弄到一个文件里面。如果不是类的出现,全局变量就是面向过程编程的一个重要环节。
----> 直升飞机而飞机自然就是那个虚函数,而后面的两种飞机就是晚绑定的。用我的话就是 水 ------> 蒸汽
------> 冰嘿嘿,其实多态就是一个概念下的实现形态。就是如此简单。
protected
FModal: string; //型号
public
procedure fly(); virtual; abstract; //起飞抽象方法
procedure land(); virtual; abstract; //着陆抽象方法
function modal(); virtual; abstract; //查询型号虚方法
//可能的其他操作
end;
飞机的概念。派生类一: TCopter = class(TPlane)
public
Constructor Create();
Destructor Destroy(); override;
procedure fly(); override;
procedure land(); override;
function modal(); override;
//可能的其他操作
end;派生类二: TJet = class(TPlane)
public
Constructor Create();
Destructor Destroy(); override;
procedure fly(); override;
procedure land(); override;
//可能
end;喷气式飞机。看完这个几乎就明白什么是多态了。
学习一下,钱不是我掏,不过公司好象也不会大方。 偶认识的DELPHI程序员不多,有个高手朋友现在也在外地到Linux下用Kylix去了,他可是真正高手,Delphi2就开始用了。
嘿嘿,不过要是让我管理项目,我就是不让用全局变量。var form1: TForm;也一定要定义到打开它的过程中去,自动添加的一定要删除。
不知道这样做 reallike(认真学习Cpp用Cpp考虑delphi) 老兄会不会和我打架,气的吐血。
protected
身份证: 证件类型;
户口本: 证件类型;
//有点简单。可以扩充
end;T我 = class(T中国人)
private
工资: 货币;
伞: 雨具; //我突出说这个伞
procedure 私生活;
public
procedure 吃饭;
procedure 睡觉;
end;T你 = class(T中国人)
private
工资: 货币;
procedure 你的私生活;
//而你没有伞
public
procedure 吃饭;
procedure 睡觉;
end;如果有个procedure 下雨();出现你咋办?你没有伞啊,我做到了未雨绸缪了。你会骂:谁闲着没事天天拿着把伞,你小子就是一傻逼。:〉所以,还不如定义一个全局变量 var
伞: 雨具;也就是说,这个是公共雨伞,是在大厦前,商场前,或者其他地方,不过你用了记得要归还。如果不归还…… 那你私人占有,那就另说了。其实数据封装就是如此,防止不规范,不道德,不正确的访问。如果这些都排出,并不是一些重要数据,你设立成全局变量会减少一些工作量。比如说伞这个,如果人人都做到规范的使用,我也不会天天带伞满大街的跑。随手就有伞用,那多好?
Jet:TJet;
Copter:TCopter;
begin
Jet:=TJet.Create;
TreeView1 .Items[0].Data :=Jet;
Copter:=TCopter.Create;
TreeView1 .Items[1].Data :=Copter;
end;选择节点时这样写,不用区分它具体是什么飞机: TPlane(TreeView1.Selected.Data).fly;看了实现时这样的操作才知道什么是多态。
垃圾堆: 未知类型;这个你要不设成公共,那就……或许按照你的做法会T垃圾堆 = class但是有必要吗?这样所定义的类和record没有区别,还不如record效率高为什么不用全局变量或者record呢?每一个人都像一个被封装好了的对象。但是人之间的联系大多数都是在一些公共的地方。老是通过它的父类,先祖联系,那就太局限了。T中国人,如果是T美国人,那T我和T你如果和这个T他: T美国人联系呢?通过它的public里面提供的?我们的public提供的?那会失去效率。我知道你会说,我会通过T人,来联系。我不多说了