在我期望某人已经在大学学习了几年编程的人与实际知道的人之间,似乎存在巨大差异。
我不觉得我在面试中问的问题过于复杂。我的一些常见问题是:
引用类型和值类型有什么区别?
如果受访者似乎不太了解自己的答案,或者如果他不知道我使用的术语,我会要求他向我解释当我写int = 0时会发生什么,从而获得更多细节。在方法中,对象o = 0,对象o = new MyClass()等如何?
基本上,我会尽一切努力诱使受访者告诉我有关调用堆栈,堆等的信息,并且我会尽量坚持语言不可知论的概念。如果受访者告诉我他做了很多C或C ++或c#,我将更深入地研究特定的语言,并可能深入研究实现细节。
如果需要,我问受访者什么是调用栈,或者以他选择的命令式语言将传递给函数的参数存储在哪里。
大多数受访者不知道什么是调用堆栈,更不用说拳击方面的考虑了。
抽象类和接口之间有什么区别?在哪种情况下,您应该使用另一种方法?
通常,我还请他们想象一个小型库的设计,该库的用例旨在使用一些继承和一些抽象工厂
大多数受访者都不知道真正的继承目的是什么。他们通常知道一些关键字(虚拟关键字,覆盖关键字等),但并不真正知道何时使用它们,更不用说解释什么是虚拟表了。
即使我事先筛选了简历,即使对于在涉及复杂体系结构的现实生活项目中拥有5年经验的人,我也要说不到25%的受访者能够正确回答这两个问题。当我说得正确时,我并不是说“深入”……只是为了大致了解该概念。
对于初中生,我可以聘用一个不知道如何很好地组织时间的人,或者不熟悉例如工业建筑过程的人,但是我有一种感觉,如果一个人没有听说过“几年学习计算机科学后,他要么很愚蠢,要么没有动力,要么非常不明智地选择了他的大学。
你认为我在这里太极端了吗?大学毕业后学习这些基本概念是否普遍?您是否认识一些不熟悉这些技术并在几年后成为非常优秀的软件工程师的人?您认为我的公司在吸引人才方面可能存在问题,还是在自己的招聘过程中遇到相同的问题?
编辑。关于“即时类型”的事情,这只是从法语到英语的字面翻译,因为我们通常会用法语进行采访。我已经解决了我的问题。但是,尽管如此,我认为你们所有人都完全理解我的意思,这是我的意思,不是吗?