我是工程师,不是编译器

简介:

最近我接到一个面试电话,被问了许多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

目录
相关文章
|
机器学习/深度学习 数据采集 算法
机器学习-模型拟合:如何使用逻辑回归精准预测临床诊断结果?
本文旨在介绍逻辑回归模型在临床诊断结果预测中的应用,并探讨相关需求和挑战。首先,将详细介绍逻辑回归模型的原理和特点,以及其在机器学习中的地位和应用范围。接着,将阐述临床诊断结果预测的重要性和现实需求,以及逻辑回归模型如何满足这些需求。
694 0
|
10月前
|
运维 监控 中间件
数据中心运维监控系统产品价值与优势
华汇数据运维监控系统面向IT基础架构及IT支撑平台的监控和运维管理,包含监测、分析、展现和告警。监控范围涵盖了网络设备、主机系统、数据库、中间件和应用软件等。
337 4
|
10月前
|
存储 监控 Java
处理40亿个QQ号的挑战:如何在1GB内存中实现高效管理
在大数据时代,如何高效管理和处理海量数据是每个开发者和数据工程师面临的挑战。以40亿个QQ号为例,如何在仅有1GB内存的条件下完成数据的存储、查询和处理,成为了一个值得深入探讨的问题。本文将分享一些有效的策略和技术,帮助你在内存受限的情况下高效处理海量数据。
161 3
|
存储 C语言
C语言程序设计——ASCII码
C语言程序设计——ASCII码
|
机器学习/深度学习 传感器 人工智能
构建未来:AI技术在智能交通系统中的应用
【5月更文挑战第30天】 在快速发展的人工智能领域,智能交通系统作为一个高度集成了多种AI技术的应用平台,正在逐步改变我们的出行方式。本文将深入探讨AI技术在智能交通系统中的关键作用,包括实时数据分析、预测模型构建、自动驾驶车辆以及交通管理优化等方面。通过对当前技术的深度分析与未来趋势的展望,文章旨在提供一个全面的视角,理解AI如何塑造交通的未来。
|
机器学习/深度学习 传感器 算法
【无人机控制】基于线性二次型调节器LQR实现无人机飞行控制附matlab代码
【无人机控制】基于线性二次型调节器LQR实现无人机飞行控制附matlab代码
|
搜索推荐 SEO
谷歌seo快排技术怎么做?Google排名霸屏推广原理
而这个搜索结果页通常不容易被谷歌收录,所以单纯在别人网站上搜索关键词,并不能参与谷歌排名。
581 0
谷歌seo快排技术怎么做?Google排名霸屏推广原理
西门子S7-200 SMART整数运算指令概述及应用举例
本篇文章我们来学习西门子S7-200 SMART整数运算指令。S7-200 SMART的整数运算指令主要包括加、减、乘、除运算指令和递增、递减运算指令。
西门子S7-200 SMART整数运算指令概述及应用举例
HC-05蓝牙模块遇到的问题与解决方法及实现和手机通信
HC-05蓝牙模块遇到的问题与解决方法及实现和手机通信
4016 0
HC-05蓝牙模块遇到的问题与解决方法及实现和手机通信
|
移动开发 搜索推荐 API
《钉钉工作台速成手册》全新发布!
《钉钉工作台速成手册》电子书将从什么是钉钉工作台为开篇,带你从了解钉钉工作台到学会开发工作台全方位讲解。同钉钉一起,以“数字化”为业务思想,打造服务匹配精准、管理灵活可控、使用简单高效的一站式组织工作台。
2214 0
《钉钉工作台速成手册》全新发布!