×

Loading...
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务
Ad by
  • 推荐 OXIO 加拿大高速网络,最低月费仅$40. 使用推荐码 RCR37MB 可获得一个月的免费服务

(码工)准备面试的几点看法

本文发表在 rolia.net 枫下论坛跟一个朋友谈面试,有些想法,写下来供大家参考。

朋友是码工,面试不少,就是没有螯佛,他不知道是什么原因。俺聊了一下,感觉是技术问题。

面试官问朋友,数据库如何实现 many to many relationship,朋友说没答出来。俺有两个感触。

第一,即使是码工,数据库也是必须要懂的。俺做码工混饭这么多年,经过这么多个地方,没有一个项目不用数据库的。数据库的基本概念,比如 entities and relationships,primary keys and foreign keys,transactions,肯定是要懂的。数据库跟语言的接口,比如 Java 的 JDBC,JDBC 里的基本概念比如 Connection,Statement 应该是毫不含糊的。

第二,面试前要准备基本概念。以前俺面试,每次都花一天过一下这些基本概念。从你的角度看,你整天都是码码子,不需要跟这些基本概念打交道,你觉得不会回答这些问题一样吃饭。从面试人的角度看,他只有半个小时时间,问你基本概念,是最直接最有效的办法。而且他觉得,不懂基本概念,你就不会是一个好码工,其实也不无道理。

面试官问朋友,为什么要用 virtural destructor?朋友解释半天,指针这个,指针那个,就是说不到点子上,俺也有两个感触。

第一,朋友说,有这么多面试题要背,我英语又不好,怎么办?俺说,你错就错在这个“背”字,如果你不去背,而是去理解,就一点也不难了。比如这个 virtual destructor,它的目的就是要 derived class 里分配的资源能得到释放。理解了这一点,你什么都不用“背”,到时候你用自己的话讲出来就行了。

第二,面试回答问题,跟平时交流一样,贵在击中要害。朋友解释来解释去,似乎在说 virtual destructor 在运行时是如何实现的。大家在对某一个概念没有理解透的时候,就往往会从这些细节回答问题。这样做的结果往往是面试官不耐烦,觉得你不懂装懂。其实这个 virtual destructor 问题,如果你从要害上说,顶多五六个字就行了。从要害上回答问题,往往一个字面试官就知道你懂了,而且往往凭这一个字就放了你。

综上所述,学东西贵在理解,讲东西贵在击中要害。下回你准备基本概念的时候,要想办法去理解它。理解了以后再试图用几个字来解释它,如果你做不到,说明你可能没有理解透。

面试官问朋友为什么要用 factory pattern,又一次说明俺上面说的两点多么重要。朋友说他看了别人介绍的一篇文章,背下来了,但是背的不好。俺让他就当俺是面试官给俺回答这个问题,他说了好几句也说不到点子上,跟 virtual destructor 一样,俺觉着他好像也是在解释这个 factory pattern 是怎么实现的。

其实如果你真正理解这个 factory pattern,你就知道要点是 decoupling 和 cohesion。俺个人认为,coupling 和 cohesion 是软件设计里最重要的两个概念。其实所有的 design pattern,都可以从这两个角度解释。如果你能从这两个角度解释,只需一两句话,你就能得个七八十分。更多精彩文章及讨论,请光临枫下论坛 rolia.net
Sign in and Reply
Modify
Report

Replies, comments and Discussions:

  • 工作学习 / 事业与工作 / (码工)准备面试的几点看法
    • 离自己的专业太远,不敢对具体细节妄加评论。赞文章主题-----学东西贵在理解,讲东西贵在击中要害。
    • 这样的码工才值每小时$100+. 赞一个.
      • 刺哥说话不要不算话,俺今天就辞职,两周后去你那儿上班。
        • 让我先跟cca商量商量, 看看他给不给巴基特.
    • 补充一下。
      数据库方面,normalization 和 join,很基本,也是应该懂的,而且问到的概率不小。

      比理解更胜一筹的是用自己的脑子想。自己想一想,理解就更透彻。自己想的东西,不光不用记,你想忘记都不可能。从 coupling 和 cohesion 的角度看 design patterns,就是俺自己十几年前的想法,到现在还记得。另外自己想过的东西,你再说出来,跟别人的角度就可能不一样,有独创性,而且容易有血有肉,总体就更有说服力。

      还有自己想过的事,你就更可能有自信。俺一直想写的《自信》系列,有一篇俺就想说凡事要自己思考。
    • 说的很好,也举几个我曾经被面试的例子:
      1) 平时你看哪些文章报纸杂志来获取业界(以及其他领域)的动向?
      2)(三年前)你怎么看在video领域里security的实现,H.323和SIP的优缺点?
      3) 你在做presentation时,用户问了一个你不知道的技术问题,怎么处理?
      4) 你怎么看什么时候应该propose微软的UC+Polycom,什么时候应该propose Cisco
      ....
      • 原来老猫
        一直是心猿意马, 骑驴找马啊 :-)
        • Plan B永远是应该有的
          • 是,
            时候一到, 一切都抱 :-)
    • 表扬这浓浓的热忱。
      我的感觉是凡事讲个 OBJECTIVE 和 PURPOSE。这是从上到下的看一个“PROBLEM” 或者是 "IDEA" (所有的 DEVELOPMENT 都是用 PROBLEM 和 IDEA 开始的)。就是 BIRD-VIEW 来看。什么事都如此,有时可能看不清,慢慢总会看清。但是一个人(这里是码工)总是把自己当成个树,从一棵树看到森林,怎么看?不明目的纯码工,不可取啊。如果要明白目的,这基本概念是必须要掌握的,就会牢牢地刻在脑子里,想忘都不忘不掉。

      可能又听上去 NEGATIVE 了,见谅。
      • 帮你整理一下:(很多时候)development 是 problem solving 的过程;学习 design pattern 重要的是理解 intention;不要光学招式,要学其“意”;知其“意”,忘其“招”,风大爷和张大爷都是这么教的... lol...
        • 哈哈。能人总是重写,然后说一句 there was just a minor error ...
    • 招 jr 看基本概念;招 sr 看 vision / 大局观;两者的共同点是看 ---- 交流能力。
      • 请教一下你说的“交流能力”是指什么?
        • 比较基本的要求是,听懂问题,明白对方问什么,然后根据情况用一句话回答清楚,并准备用三句话展开,甚至 3 分钟来 detail it...
      • +100
      • As far as coders concerned they do coding not company vision /strategy, not even application design / architecture etc. Either Jr. or Sr. as long as they are good coders then they are fine.
        • 不用吧 vision 之类的词儿想得太大,都是相对的。其实 jr 也可以/需要有 vision / 大局观。大家都是拼 puzzle 的,拼好自己的那一块,再多了解周围几块就好了。jr 的那块小一点,sr 的大一些,能看到周围的几块最好,能知道整个 pic 就更好了...
          • Ideological thinking. A coder is just a small portion of an IT assembly line. Rule of sum is do your job and your job only. Very few exceptions unless in small scale companies.
    • 非常感谢兵哥,对我很有指导意义!另外请教兵哥,俺打算到码工行业卧底,能不能推荐一些好的 design pattern 方面的资料? 谢谢
      • 四人帮~
        • 谢谢,我明白四人帮是什么意思了。
          • What does it mean?
            • 就是4个人,呵呵。
            • Erich Gamma、Richard Helm、Ralph Johnson , John Vlissides
            • 兵哥、刺哥、猫哥、小溪美眉。
      • design pattern这种东西,根据俺的经验,写的程序多了,自然就会明白。前提是有一定的编码量,否则光靠死记硬背,为了用Pattern而用Pattern,只会写出一大堆四不像代码
        • 总的有点参考资料才能入门啊。
          • 入门的有一本中文版的不错《大话设计模式》,俺翻过几章,写得很有趣。google一下能找到很多下载连接。不过我记得大统华有实体书,就在韩寒的《他的国》旁边,^_^
            • 谢谢,去看看,然后顺便推销他的国。
            • 《他的国》你买了吗?我等着统计数据来了,向韩寒收回扣呐。
            • 用这本书来入门确实不错,读着有趣而易于理解,谢谢推荐。我准备从它开始了。
          • 专业上的东西还是尽量读英文的吧,省得人家问的时候还得想想怎么翻译。我当年读的是这本>>
            • 108刀砍得我浑身是血,正在寻找免费 pdf version
              • 买本二手的,才8块多。
                • 有这么便宜?
                • 邮寄要12刀。
                • 邮寄要18刀,最后一刻没舍得下手。
              • 想当年初来乍到,别的花费我能省则省,可百刀以上的书我没少买。舍不得孩子套不着狼啊。
                • 他爹,你的孩子还好吗?呵呵,开个玩笑。
    • 还有哪里能找到码工的参考面试题?我先熟悉一下。
    • 好!
    • "学东西贵在理解,讲东西贵在击中要害" - 这句不得不顶!
      • 哪位大侠给翻翻英语呗?
        • by google:Learn something to your understanding, talk about things in your blunt instrument
        • learn by heart, speak to the point
        • Learn thoroughly and fully absorb it, Speak clearly and to the point ("hit the nail on the head")
        • Chew before you swallow; aim before you...
          ...vomit?:-)
    • 可怜我小马也号称在码工中卧底好几年,居然连 design pattern 都还搞不清楚。我准备买块豆腐去撞死。
      • 小马,先等等。我有几本中英文的,快10年也没机会和兴趣看,可以送你。那些模式都是自寻烦恼。
        • 那太好了。“自寻烦恼”还不至于吧?俺脚着软件规范化还是很重要的。
          • Let me get you the book names tonight. I remember at least I have one in Chinese and one in English. if I can not find them, I will send you some in PDF.
            • Thanks a lot!
              • 1) Applied Java Patterns - Stephen Stelting & Olav Maassen 2)Java 与模式 - 阎宏 这两本都有点老,2002年的书了。
                如果想看看,给我私信。
                • 与君一晤,受益良多。谢谢。
                  • 2 old books
                    • 这两本也很不错。
                    • 好书啊,有免费的提供吗?
                  • 不客气,我的知识还停留在C和COBOL的年代,再混几年就回国养老了。
                    • 老兄,你太谦虚了。
      • 准备英文面试,不要看中文书。四人帮的原著是必读的,先看5遍原著比看其他的5本书强。
    • 国内急功近利式教育的结果。只知如何,不知为何。
      • 我倒是更觉得这个人不是国内培养出来的,是加拿大培养的码工。
    • 神,实在是太神了
    • 根据LZ所言,我做以下两项猜测。1,LZ没用JAVA开发过什么正经规模的APPS,读过一些书到是真的。2,LZ没有经历过10次以上的INTERVIEW 或被INTERVIEW。
      • 这么肯定? 要是不是像你说的那样的呢?
    • 这些都是最基本的概念。其实不需要死记硬背,真正做过的,有过经验的,都能马上用自己的话简单清楚地说出来。不能的,绝不是好码工