生活在真空中的程序员
六年编程经验,月薪8K高不高?不高。六年编程经验,程序都写不好,更别提设计能力,该不该?不该。今天帮同事面试了一个六年工作经验的软件工程师,说实话,在这段时间我的面试过的几十个人中,他的水平还算中等,没有必要数落他。但把能力和经验、期望待遇相比,还有点意思。
因为是帮别人面试,事先没有准备,太概看了一下试题:对C语言的基本知识点倒也明白,不过编程能力似乎稀松平常,连几个像二分查找这样简单的算法都没写出来。
我一边看简历,一边问问题:
简历内容:黑体
我:正常
他:斜体
画外音:(括号内容)
l 熟悉VC和MFC
1. 你对熟悉COM吗?
熟悉,就是用DLL嘛。…
2. (是不是误解了我的意思) 我是说COM,微软件的组件对象模型。你能描述一下如何调用一个COM组件中的函数吗?
很简单,用LoadLibrary加载,再取得它的函数指针。…
3. (我怀疑他是否真的懂COM) 你知道IDispatch这个接口吗?它有什么用处?
好像是双接口吧。…不知道有什么用。
4. 对不起,你能讲一下COM和DLL的区别吗?
COM和DLL的区别有吗?我一直认为是COM就是DLL,DLL就是COM。
5. 肯定有区别,否则没有必要提两个概念了。
… 不骗你,我真的写过ATL程序。
(他的脸有些红了。有人说脸红是一种美德。知耻而后勇,孺子可教也。)
6. 你对MFC熟悉吗?
当然了,用了这么多年了。
7. 你对DOC/VIEW模型是如何理解的?
可以用多种形式表现同一种数据。
8. 大多数应用程序都只需要一种形式去表现,为什么还是要采用DOC/VIEW模型呢?
…不知道。
9. 一般提倡把用户界面和内部实现分离,你知道有几种方式可以把用户界面和内部实现分离吗?
…不知道。
10. (我见试题有道题目错了)SetWindowText这个函数你不知道吗?
API谁记得。
11. 你不觉得记住最常用的API,可以提高编程效率吗?
可能吧,不过VC里有提示,你输入..Set,它会提示你。
l 熟悉面向对象和UML
1. 你对面向对象怎么理解,你觉得面向对象的特性中,哪一条最重要?没有标准答案,随便说吧。
当然继承了,面向对象嘛。
2. 多态不重要吗?
也重要,同一个函数名,可以参数不同,使用起来很方便。(看来没有真正明白多态)
3. 你能讲一下序列图吗?可以举个例子。
他画了一个简图,两条竖线,还有两个水平箭头把它们连在一起。
4. 竖线顶部是不是少了点什么?不是吗?
…
5. 再想想,序列图的功能是什么?不是用来描述对象之间的交互的关系的吗?
(似乎有些火了)理论有什么用?你们到底是招程序员还是招系统分析员啊!!
6. 别着急,只是随便探讨一下。我们不招程序员也不招系统分析员,我们招软件工程师。即要懂编码也要懂设计。除了在大公司里,一个人只编码,一点设计也不懂,不太现实吧,是不是?
(等他平静下来)
l 熟悉HTTP和FTP协议、熟悉TCP/IP
1. 你知道HTTP协议对应的RFC编号吗?
什么编号?
2. R.F.C,我写在了纸上。
(看样了RFC对他来说是个陌生的概念)...不知道。
3. 你能写一个简单的HTTP请求头出来了吗?
GET … HTTP/1.1
Host: …
Accept: */*
Cookie: …
4. 和GET方法类似的有好几个,除POST外,你知道其它的吗?
就知道POST。
5. 你知道Cookie的格式吗?
不知道,乱七八糟的。
6. 你知道Host关键字用来做什么的吗?
不知道。
7. 你能画一下socket服务器端的流程吗?
socket
bind
listen(…, 5)
accept
8. 你知道Listen的第二个参数的意义吗?
同时处理客户端的数目。(看来他误解了这个参数)
9. 你能说说服务器端处理并发的几种方式吗?
好办,来一个请求就创建一种线程去处理。
10. 你不怕拒绝服务(DOS)攻击吗?
…
l 其它
1. 你们平时加班多吗?
不多
2. 那业余时间一定挺多,一般会在业余时间看书吗?
看,不过看得很杂。
3. 没事儿,我也看得很杂。你能提几本你认为最经典的书吗。
(思考状)《深入浅出MFC》
4. 是本好书。还有吗?
《C++编程思想》
5. 是本好书。还有吗?
(痛苦的思考状),不好意思,今天面试没有准备,实在想不起来了。(这也要准备?)
6. 没事儿。你看过《C++编程思想》。我问你几个C++的问题吧。你能说说拷贝构造函数和赋值操作的差别吗?
差别?…
7. (没听得太懂,只好问其它的) 用new分配的指针,你可以判断指针是否为空吗?
切,怎么可能为空。现在PC上的内存大的是。
8. 能谈谈你对设计模式的理解吗?
设计模式?是一本书吗?没听说过。(不会吧,又不是生活在真空里,至少听说过吧)
9. 可以认为它是一本书吧。你常上网吗?(经常上网的人,想不知道设计模式这概念都难啊)
当然经常上。
10. 你期望什么样的待遇。
我现在的月薪是8K。最好不要低于这个数。你们能给多少?
11. 不好意思,我们给不了那么高。最多4、5K吧。(我强调最多两个字,即使3K我也不想要他,不过是给台阶他下)
那算了,谢谢。