我是工程师,不是编译器

简介:

最近我接到一个面试电话,被问了许多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?也许吧,但这不是什么坏事,因为在办公室里我们还是要用到这些工具。
一句话:找一个合适团队的人选时,不要纠结于细枝末节的问题。

 

原帖地址:http://www.iteye.com/topic/1121960

目录
相关文章
|
IDE 编译器 开发工具
编程前的准备:编译器的安装
编程前的准备:编译器的安装
55 0
|
1月前
|
缓存 编译器 API
C# 一分钟浅谈:Roslyn 编译器平台介绍
【10月更文挑战第27天】Roslyn 是 Microsoft 开发的开源编译器平台,支持 C# 和 VB.NET。它将编译过程分解为多个阶段,并提供丰富的 API 供开发者分析、生成和修改代码。本文介绍了 Roslyn 的基本概念、安装配置、基础示例和高级应用,帮助开发者更好地理解和使用这一强大工具。
44 0
|
2月前
|
Java 编译器 程序员
1.5 高级计算机语言和编译器
高级编程语言,如C和Java,通过更接近人类思维方式的指令简化了编程过程,使得开发者能够在更抽象的层面上表达逻辑,避免了直接操作繁琐的机器语言。编译器作为桥梁,将这些高级语言翻译成不同CPU可执行的机器码,使得代码具有跨平台的潜力,并极大地提升了编程效率与易学性。
68 11
|
4月前
|
Rust 安全 JavaScript
探索Rust在系统编程领域的前景:虚拟机和编译器开发的新篇章
【8月更文挑战第31天】在系统编程领域,性能与安全性至关重要。Rust作为一种新兴语言,凭借其独特的内存安全和并发特性,正逐渐成为虚拟机和编译器开发的首选。本文通过案例分析,探讨Rust在这些领域的应用,例如Facebook的Compiler VM (CVM)项目和实验性的JavaScript JIT编译器Mithril。Rust的静态类型系统和所有权模型确保了高性能和安全性,而其强大的包管理和库生态则简化了虚拟机的开发。随着Rust社区的不断成熟,预计未来将有更多基于Rust的创新项目涌现,推动系统编程的发展。对于追求高性能和安全性的开发者而言,掌握Rust将成为一个重要战略方向。
85 1
|
7月前
|
存储 算法 安全
【C++ 泛型编程 高级篇】 C++编译时函数调用技术深度解析
【C++ 泛型编程 高级篇】 C++编译时函数调用技术深度解析
87 1
|
存储 自然语言处理 程序员
【C语言】 程序员的自我修养之(程序编译过程)
【C语言】 程序员的自我修养之(程序编译过程)
109 0
|
存储 Rust 算法
用了这么多年Rust终于搞明白了内存分布!
本文详细描述了Rust内存分布的基础知识,并且配上了不少图片帮助理解。
4471 1
|
存储 C语言
C语言初学者之初识代码专项练习
小伙伴们大家好,如果你是C语言初学者啊👨‍💻👨‍💻👨‍💻不知道如何练习敲代码,我可以建议你去做一些比较适合于初学者📕题目,来巩固自己所学的知识并且提高自己的编码能力。 你可能会问我?作为初学者我对代码不是很了解的,我也不知道应该做哪些题目,遇到难题我就想放弃abandon!有没有推荐的题目!
134 0
|
自然语言处理 编译器
进入编译器后,一个函数经历了什么?
进入编译器后,一个函数经历了什么?
94 0
进入编译器后,一个函数经历了什么?
|
缓存 JavaScript Java
说说 方舟编译器
说说 方舟编译器
说说 方舟编译器