明天要面试几个程序员。大家想想问些什么样的问题呢?  我想了几个,大家给点意见,有什么好的问题请指教  1.请写一个多态性的例子。
 
  2.请你说一下全局变量与面向对象编程的的看法。你以前做的系统中是如何处理二者关系的。
  
  3.在以前所做的系统中有没有想到用完全的面向对象的方式开发系统。在你以前做系统时注意哪些相关的细节和编程习惯。  4.在你做的模块完成以后,你会不会站在更高的角度去看一看自己写的代码?你将它重新实现过吗?你为什么会重写?  5.你对重构的理解是什么??你是如何做的。  6.请谈谈你以前做的项目,你在项目中是什么角色?只是写代码还是从业务开始你就接手了。  7.如果是PLMM,则加一个问题:“你有男朋友吗?”(开个玩笑,公司男的太多,大家都希望招两个MM,男女搭配,干活不累)  大家看看这样问可以吗??? 请给意见 ^o^

解决方案 »

  1.   

    7.如果是PLMM,则加一个问题:“你有男朋友吗?”(开个玩笑,公司男的太多,大家都希望招两个MM,男女搭配,干活不累)
      要是没有,"你是处女吗?..." 那做我老婆吧"
      

  2.   


    我穿好的防弹衣,带好了头盔,大家用力的扔臭鸡蛋过来吧!!!!大家不要只是说不好,给个理由先给!!!!!!大家给点建议好不好??? 大家还要拉小弟一把呀!!!!!!---------------------  对于第一问题是这样子的;偶见过几个写了两年的DELPHI了,竟然知道多态!!更谈不上在程序中使用了,所以偶怕了,才想起问这个问题,其实还有几个问题,偶没好意思拿出来。
      

  3.   

    比方说,问问你用坏过几个键盘?家里有几台电脑了?什么时候开始用电脑?有几年开发经验了?打字速度如何?没有鼠标怎么用WINDOWS操作系统及开发系统,请说具体一点。
      

  4.   

    这几个问题也不是我脑袋一拍就想出来的。只是我对我自己学习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]);你会用哪一种方法。
      
     
      

  5.   

    呵呵
    如果我明天要面试,一定会先到CSDN上来看看
    看一看有没有考官在上面放题的呢?
      

  6.   

    lxpbuaa(桂枝香在故国晚秋) 原来老兄是学飞行器的。我小时候喜欢航模,可一架都没有,邮购过一次发动机可没影了。
      

  7.   

    你问的都是垃圾问题,要明白你是招聘的程序员,不是理论员,问那么多不切实际的问题有什么用?
    既然你那么强调“对象”这个概念,只需要问:请问你对“对象”是如何理解的?
    你只需要听听他们对对象的看法是否比较清楚就行了,一个好的程序员只要能真正把握住“对象”这个概念就是高手(这是我个人的看法,我现在离这个目标还差得很远很远),其他的什么多态啊,重构都是没必要问的,多态和重构只是对“对象”的一种思维延伸而已,对“对象”真正理解的人对于这些都是小菜一碟。另外,我同意楼上reallike(认真学习Cpp用Cpp考虑delphi) 的话,自学能力重要,当然,我个人认为招聘程序员必须把握住三点:1、团队精神;2、事业精神;3、自学能力。
      

  8.   

    呵呵,个人认为要对“对象”这个东东理解清楚,就去学java吧,那才是真正面向对象开发的语言,想当初大学毕业前,我自学了delphi,学很肤浅,花了很长时间对“对象”这个概念都没有真正搞清楚,工作后用的是java,用了一段JAVA之后才发现自己对“对象”这个概念理解真的是速度倍增,可惜的是,我到现在对java都不敢兴趣,不过却让我对“对象”的概念理解又上升了N个档次,不过我最钟爱的还是delphi和powerbuilder,delphi已经有两年没有摸过了,现在又从头开始摸它,却发现比原来学的轻松多咯,因为个人对“对象”的理解加深了一点:)
      

  9.   

    我觉得还得测量一下IQ和EQ,然后算一下IQ/EQ,数值太小的叫他滚蛋吧.
      

  10.   

    同意soaringsouth(栈桥捉鳖)的看法!
    ZyxIp(绝望中...) 自己先回答一下,试一下别人能不能看出你的水平!
      

  11.   

    但我想编程应做一个有心人,大家都做了这么久了自己一定也会总结一些如何才能更好的实现的方法,一天拿起书一看:“哦,原来我这样做理论上叫这个名字呀!!”写了这么久的代码,有很多问题看书通过理论才能更快提高自己。  如果只是想着实现,只是知道一些好的方法,但不能总结也不好。  以前写代码的时候写了一段时候觉得总是提高不了,看看书才知道原来自己这样做人家早就总结出一套很好的可行方法了。  象第二个问题,我现在编程中就不用全局变量,也不会在一个窗体中直接去读写另一个窗体的控件都是通过给窗体添加属性来实现。用了全局变量就破坏了整个系统的完整,整个系统都应是一个类。  刚开始学DELPHI的时候认为实现的最小单位是过程和函数,也只是想知道这个控件如何用那个控件如何用,学了一段时间也会定义类,也知道控件只不过是看得到的类,但我觉得更深刻理解OOP是一天在看别人的代码,突然发现他给窗体添加了 Published ,加了一个属性,以前自己也这样做过,但一直好象不将窗体做为一个类,只是将它当做一个放控件的平台桌面。从那以后我就不用全局变量了,每新添加一个窗体时将DELPHI自动添加的 var form1:Tform;都删除掉。  我的程序也不用数据绑定,如数据库支持存储过程,则在程序中不会出现语句,只是调用存储过程,我的程序只有一个ADOConnection ,很少有ADOQuer放在界面上,都是动态创建后将数据读到StringGrid或ListView中后就释放。  公司里DELPHI程序员也没几个, 别人的风格都也不是这样子,但他们也不能告诉我哪一种方法最好,所以要我面试我就会问这些问题。  至于第一个问题,“请写一个多态性的例子”,很简单,对于很多人来说问这个问题就象是问他1+1等于几一样,会觉得瞧不起他。前面试过几个都不会,偶可没办法,只好问一下。  对于第7个问题,偶是考虑到大家的意见:“如果是PLMM的话,技术不过关没什么,大家可以教,工作他们自己分摊”。
      欢迎大家发表自己的意见,理不辩不明,事不辩不请。偶不怕大家笑话。分不多,望大家原谅。    
      

  12.   

    visli() ( )   楼主你他妈的是个人渣!!!!!!!!!!!!!!!!!!!!!!!1
    --------------------------------------------------
      多谢你发表的意见,实在不好意思,偶现在还不知道自己是什么样的人,你说偶是人渣一定有你自己的理由,麻烦你说出来听听,不要不好意思。  大家说什么都可以,偶只是想知道如何做才是对的,当然偶也不会完全听什么人的,只要你能说服俺,俺就服你。
      
      visli()老兄如果能说服偶让偶觉得偶真是一个人渣,那偶就承认自己是人渣。  不过偶也确实做过不少坏事,偶昨天还上色情网站;偶还打过架,偶还骂过人,偶做的坏事真是太多了。  但做啥子事管你P事,你觉得不爽你不会闭嘴??觉得不爽过来咬我呀!!!  
      

  13.   

    能过 你的1-6关 会有ppmm才怪
    除非ppmm就问NO.7
      

  14.   

    我的回答:(帮我打一下分罗,我知道蛮差的,如果我错了指出来也好。)  1.请写一个多态性的例子。
      答:只在书上看过现在已忘记了相关概念,或许用过。但真举不出什么例子。
     
      2.请你说一下全局变量与面向对象编程的的看法。你以前做的系统中是如何处理二者关系的。
      答: 我认为全局变量有违面向对象的理念,但是全局变量有的时候真的方便。所以我在不麻烦的情况下尽量不用全局变量。非到万不得已时使用,且最多不超过5个。  3.在以前所做的系统中有没有想到用完全的面向对象的方式开发系统。在你以前做系统时注意哪些相关的细节和编程习惯。
      答:以前有想过,但编程技术真不过关。现在也在努力做到这一点。一般来说。我写的代码会遵循相应的编码规则,会给函数或过程写说明。会给变量及相应算法给出注释。每一阶段编码完成后会写编码小结。  4.在你做的模块完成以后,你会不会站在更高的角度去看一看自己写的代码?你将它重新实现过吗?你为什么会重写?
      答:会,开始写时肯定对相应业务不是很熟悉,等整个模块完成后相对于业务应该比较了解,但对于刚开始时不了解业务且已经实现的架构及设计上肯定会有更好更适合业务的设计。至于为什么会重写。最主要的是每个程序员都不想自已写出来的是垃圾。这是最主要的。   5.你对重构的理解是什么??你是如何做的。
      答:我是自学的只有两年多一点写代码经验。或许用过。概念不是很清楚。  6.请谈谈你以前做的项目,你在项目中是什么角色?只是写代码还是从业务开始你就接手了。
      答:我以前做过三四个大的项目,前面两个只是配角,写写代码。后来就一起去了解业务并参与系统架构的设计。  7.如果是PLMM,则加一个问题:“你有男朋友吗?”(开个玩笑,公司男的太多,大家都希望招两个MM,男女搭配,干活不累)
      答:我是男的。(郑重申明:本人非常敬仰MM做程序员,她们一般都非常优秀。但是,长相都一般)。  我从来没正规的学过。我大专毕业。在学校里学得都是比较老的基础东西。真正吃饭的东东全是自已自学的(培训太贵)。我已经很认真的回答了。估计象我这样不会录取吧。请高手作答谢谢!
      

  15.   

    还是carrotbill(萝卜) 聪明,如是PLMM直接就问最后一个问题。问:“小姐你会DELPHI吗?”。答:“会一点。”。问:“你想学DELPHI吗?我们这可以给你安排专职人员进行培训!”。答:“我看你象色狼.....”。“啊!!!!!!!这么快就让你发现了,不好意思,下次偶会表现更好一点的”。
      

  16.   

    visli()老兄说人是一个人渣,那就说人渣得了,干吗还加个他妈的,哎,素质真差!不过我觉得面试真的试不出什么东东,有很多水平高的人往往比较内向,言语表达能力奇差.但水平真高. 公司通过面试招到的人大部分是表达能力比较好的, 就是不懂对象,也能说的让你觉得对象应该像他那样理解. 但. 理解对象真的那么重要吗? 表达能力好对程序员对公司重要吗? 我觉得还是笔试要来的实在一些, 而且不要出些名词解释什么的题, 最讨厌了. 可以考虑出些基础题和你们编程过程中遇到过的比棘手的问题问问别人, 从而确定一个人的基础和经验有多少. 再加上问一些近来看些什么书, 以后有什么打算等等从而对应聘人的志向和人生观等等问题有个了解,看看适合不适合贵公司. 以上纯属个人见解.
      

  17.   

    我就的就最后一条留下吧
    其他的cut吧
    嘿嘿~
    是在找程序员么?
      

  18.   

    To PrettyMurphy(土豆) 老兄首先我声明,我喜欢土豆每次涮的时候吃得最多的就是它。
     
      ▼第一问题(请写一个多态性的例子)你这样回答:只在书上看过现在已忘记了相关概念,或许用过。但真举不出什么例子。  理解多态性就象理解指针一样,在首次接触指针的时候,有很多程序员理解它很困难。然后过了一段时间,他们运用指针就象系鞋带一样自然,已经无须在考虑。多态性也是如此,开始也是不清楚的,然后逐渐明白了。突然之间他们的编程能力有了巨大的飞跃,就象理解指针一样。  多态性与OOP 的关系就和指针与C与或OBJECT PASCAL 的关系一样。如果是Object Pascal 程序员,但不理解指针就至少失去了Object Pascal 提供的一半的功能。对于OOP和多态性也是如此程序员声称自己理解OOP但不明白多态性的全部含义,他们就失去了这种技术的一半功效.(引自:Delphi 4编程技术内幕 Charile Calvert著,P51)  我相信上面的所说的,大家也都相信,你也许只是不知道。   其它几个问题我觉得第4个最好,你说(至于为什么会重写。最主要的是每个程序员都不想自已写出来的是垃圾。这是最主要的)。对于每一个自己写的代码来,说我们应追求最好的实现方法。这不只是说对公司最主要的是对自己有很大的好处。我也不知怎么说,反正如果我发现程序有更好的解决方法我总是想去重新实现,不过带来的后果是进度好象总比别人慢,怛我的程序比起来是修改最容易,出错最少的。  总之你只要用心去写,比较爱好就行。大家用的技术都差不多大,不了比别人多知几个函数API,但如何将这些东西良好的组织才是重要的。
      

  19.   

    唉,怎么这样呢?有必要吗?就在全局变量上较真。那是你的理解,何不开个帖子咱们来讨论一下全局变量的优势呢?别一棍子打死,封装自有封装的好处。封装背后还有其他的东西。另外,类似:var 
      form1: TForm;删除它又咋?不删除又咋?我不删除,就留着。但是你不说,嘿嘿,尽管定义了,我发现我几乎不用这个form1,form2。好像用得很少。如果有全局变量,我会弄到一个文件里面。如果不是类的出现,全局变量就是面向过程编程的一个重要环节。
      

  20.   

    多态性,其实多态性处处存在。Iw549提出之后,我们大家在一起讨论了很久。用Nicrosoft申旻的例子来讲,多态就是飞机 ----> 喷气式飞机
         ----> 直升飞机而飞机自然就是那个虚函数,而后面的两种飞机就是晚绑定的。用我的话就是 水 ------> 蒸汽
       ------> 冰嘿嘿,其实多态就是一个概念下的实现形态。就是如此简单。
      

  21.   

    代码实现就是:飞机基类  TPlane = class
      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;喷气式飞机。看完这个几乎就明白什么是多态了。
      

  22.   

    当然了这些只是谈谈,而且都是以我的编程习惯来问的。所以才在这让大家指点一下。  试用期肯定是要的,过不了试用期肯定是呆不下去的。  我现在觉得我不象是为公司招人,而是想招一个能在一起切磋的朋友,最好水平比我高,我还可以
    学习一下,钱不是我掏,不过公司好象也不会大方。  偶认识的DELPHI程序员不多,有个高手朋友现在也在外地到Linux下用Kylix去了,他可是真正高手,Delphi2就开始用了。
      
      嘿嘿,不过要是让我管理项目,我就是不让用全局变量。var form1: TForm;也一定要定义到打开它的过程中去,自动添加的一定要删除。
    不知道这样做 reallike(认真学习Cpp用Cpp考虑delphi) 老兄会不会和我打架,气的吐血。
      
      
      

  23.   

    reallike成熟多了...是不是发生什么事了?
      

  24.   

    哦,这就算我对第一个问题的回答吧。尽管使用了申哥的代码。如果我应聘我就会写我的代码的。生活中有关多态的例子太多了。好,回答第二个问题。全局变量,顾名思义,谁都可以用它。任何人都可以访问。尽管有悖于面向对象里面的数据封装。面向对象可以用类来描述任何事物。不过也是需要的。据个例子,(胡闹的,玩玩而已嘻嘻。):T中国人 = class
    protected
      身份证: 证件类型;
      户口本: 证件类型;
      //有点简单。可以扩充
    end;T我 = class(T中国人)
    private
      工资: 货币;
      伞: 雨具; //我突出说这个伞
      procedure 私生活;
    public
      procedure 吃饭;
      procedure 睡觉;
    end;T你 = class(T中国人)
    private
      工资: 货币;
      procedure 你的私生活;
      //而你没有伞
    public
      procedure 吃饭;
      procedure 睡觉;
    end;如果有个procedure 下雨();出现你咋办?你没有伞啊,我做到了未雨绸缪了。你会骂:谁闲着没事天天拿着把伞,你小子就是一傻逼。:〉所以,还不如定义一个全局变量  var
      伞: 雨具;也就是说,这个是公共雨伞,是在大厦前,商场前,或者其他地方,不过你用了记得要归还。如果不归还…… 那你私人占有,那就另说了。其实数据封装就是如此,防止不规范,不道德,不正确的访问。如果这些都排出,并不是一些重要数据,你设立成全局变量会减少一些工作量。比如说伞这个,如果人人都做到规范的使用,我也不会天天带伞满大街的跑。随手就有伞用,那多好?
      

  25.   

    是呀!!类的定义就是这样的,但我觉得在实现的时候才体现多态。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;看了实现时这样的操作才知道什么是多态。
      

  26.   

    回答第三题:以前做过的系统没有做到完全是用面向对象,因为用delphi做到完全面向对象的人还是少数。我认为能做到像申旻这样的使用delphi做面向对象找不出几个。我也不是,尽管我理解了一些,但是能够做到应用,那还是另一方面。如果去找一些Java的程序员,或者cpp的程序员,那会多一些。
      

  27.   

    To reallike(认真学习Cpp用Cpp考虑delphi) 关于你的第二个例子,伞的问题。  如果我实际也要伞的话我就会在中国人类中定义,当然如果说有的人就是不用伞我会在 T中国人 下定义一个子类 T有伞的中国人 ,T没有伞的中国人。  当然那一种方法也没有错,其实要分优劣也不容易。我追求的是尽量保证对象封装的完整性,整个程序都是一个一个的对象组成,要是出现这种贯穿全局的变量就成了不和谐的音符。 在一个项目开发过程中,大家都会尽量用同样的风格开发,比如说可以用全局变量,而我在我做的模块中就不用全局变量,也没有破坏风格。而如果项目不让用全局变量,而你的编程习惯是用全局变量,你在实现的时候就会比较别扭,也更容易出错。
      

  28.   

    嗬嗬,为了一把小小的雨伞而定一两个多余的类这不是多此一举?只要不影响吃饭睡觉,不影响到你的身份证户口,大不了叫procedure 下雨;给淋透了,回去洗个澡就得了。世界上没有完美的东西,防患于未然。孰轻孰重要分清楚,要不会捡了芝麻丢了西瓜。如果是雨衣呢?你会不会定义一个T没有雨衣的中国人?如果定义我们的街道,我们的公园,你是不是也封装到T城市里没有公园的中国人?把重要的防起来,不要被别人看到,没有必要的放在一起,大家都看。生活中我们就需要许多公共的东西,TObject ----> TApplication才几个类?
      

  29.   

    一个programmer必须要了解OO,但是OOP并不是一切......为什么全部局限于OO呢?多考察他的团队能力和沟通能力
      

  30.   

    更好的例子就是Var 
      垃圾堆: 未知类型;这个你要不设成公共,那就……或许按照你的做法会T垃圾堆 = class但是有必要吗?这样所定义的类和record没有区别,还不如record效率高为什么不用全局变量或者record呢?每一个人都像一个被封装好了的对象。但是人之间的联系大多数都是在一些公共的地方。老是通过它的父类,先祖联系,那就太局限了。T中国人,如果是T美国人,那T我和T你如果和这个T他: T美国人联系呢?通过它的public里面提供的?我们的public提供的?那会失去效率。我知道你会说,我会通过T人,来联系。我不多说了
      

  31.   

    我觉得 reallike(认真学习Cpp用Cpp考虑delphi) 说的有道理!楼主对面向对象有一点过了!按楼主意思是不是作数据库系统的就都得把成百上千的数据表都对象化,只因它们是可以对象化的。面向对象也只是编程技术中的一种而已!