论坛首页 Java企业应用论坛

我是工程师,不是编译器

浏览 12266 次
精华帖 (0) :: 良好帖 (3) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-03-22  

导读:NumberGrinder 博主写于2009年的一篇旧文,上周被推荐至 HN 后又成为热帖。伯乐在线编译如下:

最近我接到一个面试电话,被问了许多Java的问题。这样的面试很平常,大部分的问题也都是标准问题:

● 什么是多态?

● List和Set有什么区别?你什么时候用List,什么时候用Set?

● 什么情况下你会遇见死锁?

● 强类型和弱类型有什么区别?

这些算是很合理的问题。我不喜欢那个多态的问题,因为它和大部分的面向对象语言以及继承紧密相关,而当我们覆盖和重载一个方法时,我们是不会意识到“哦!这实际上是一个多态!”而我会想“什么是继承,我什么时候应该用继承”,而这才是面向对象语言的关键。但是这是我个人的观点,可能会有其他不同观点。

强类型和弱类型的那一题有点不寻常,因为他实际上指的是类型检查而不是类型强度。当我说C是一种弱静态,Java是强静态,Python是强动态时,他有点迷糊(我认为JavaScript是弱动态,但我并没有说出来)。

接下来的是一些细枝末节的问题:

● List在哪个包中?

● File在哪个包中?

● 你要继承的时候用什么关键字?

(我们也会经常遇见一些标准问题“你5年内想成为什么样的人?”等等)

Russ Olsen提到了问细枝末节问题的结果

除了不能告诉你许多信息以外,问细枝末节的问题会付出两种代价:首先会占用你真正可以用来了解一个人的时间,你可以利用这些时间来了解这个人是否足够聪明,是否有合适的背景,是否合适你的团队。其次,这种类型的问题有可能会剔除掉那些真正聪明的,你真正想雇佣的人呢。

我是工程师,不是编译器

 

我现在列出这些细枝末节的问题,我认为还会引发一个结果:问这样的问题剔除掉那些真正合适的人之外,剩下的人将会错误的人选。

一个好的工程师在设计和创造系统的时候是抽象性的思维的,他们会想象算法,组件,工程性的设计。他们不需要知道语言的所有细节,尤其是当他们使用IDE时,IDE可以帮他们完成(我使用Eclipse:我输入List,然后输入control+空格,IDE会自动帮我载入java.util.List)。我能分辨出我需要哪个包,这比我能记住它们的名字更重要。

类似的,更重要的是我能告诉你什么时候我应该使用继承,什么时候应该使用多态,而不是仅仅记住概念。

总体而言:用Google 5秒钟可以找到答案的问题不是好问题。我最喜欢的电话面试问题是“你最喜欢的语言是哪一种?”然后接着是“它的弱点是什么?”

然而很多面试和考试测试的都是为了看你能否很好的取代编译器而设置的。甚至Java认证考试都只关注在语言的语法和编译上的问题,而不是测试实际编程的能力和实际设计系统个能力。

我是一个优秀的软件工程师,我不是一个优秀的编译器。我不能看了一段代码后就告诉你它有问题,它不会获取ClassNotFoundException,现代的编译器会告诉我问题的所在。即使不是马上知道,但当我编译的时候我会知道。这么说我就过于依赖IDE?也许吧,但这不是什么坏事,因为在办公室里我们还是要用到这些工具。

一句话:找一个合适团队的人选时,不要纠结于细枝末节的问题。

 

英文原文:numbergrinder  编译:伯乐在线 – 唐小娟

   发表时间:2012-03-22  
好像有点道理。。
但是,怎么才能让面试官知道你是个优秀的工程师呢?
0 请登录后投票
   发表时间:2012-03-23  
做的够多了,你就是人肉Compiler了
0 请登录后投票
   发表时间:2012-03-23  
你说我是超级人工智能编译系统的克隆人嘛。。哈哈
0 请登录后投票
   发表时间:2012-03-23  
当你把那些问题理解为考查基础,也就坦然了。他可以从侧面来反应你对一个语言的熟练程度。
0 请登录后投票
   发表时间:2012-03-23  
招聘初级程序员

找工作前背诵java面试大全,面试官考试抽取问题问 都成了潜规则了


0 请登录后投票
   发表时间:2012-03-23  
老外的文章?老外面试也是这些问题?
0 请登录后投票
   发表时间:2012-03-23  
上次做一个笔试题,第一个题,java是从什么语言发展而来的,囧,第二题,javac.exe(他真的写了.exe!!!)编译后的文件是什么,囧.....
0 请登录后投票
   发表时间:2012-03-23  
dieslrae 写道
上次做一个笔试题,第一个题,java是从什么语言发展而来的,囧,第二题,javac.exe(他真的写了.exe!!!)编译后的文件是什么,囧.....



在win下,这么说也没什么问题吧..
0 请登录后投票
   发表时间:2012-03-23   最后修改:2012-03-23
说一个最近遇到的,问我c语言中10个输入参数,10个输出参数,怎么做?
我一下子蒙了,考什么啊,后来才反应过来,他是想考结构体指针。
晕死了。我做了6年开发了,如果这个都不会,难道我是滥竽充数的?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics