※ 引述《del680202 (HANA)》之铭言:
: 不知到板上各位高手是如何面试一个资深工程师的
先说结论:
诱导对方发球;它若发得出好球,你打回去它又接得住的话,应该就不错。
===
是可以考个实作题,看看它程式写作风格 (工法,非排版) ,对细节逻辑的处理,
对时间空间的取舍,对问题的理解;看看它是一个十年还是十个一年。
原文里提到的“二元树找最大子树”这类题目不是不能考,但至少尽量照该职缺、
团队、公司在整个产业链里上中下游的位置调整重点。
如果是处于中下游“应用程式”,你知我知独眼龙也知,时间大多花在“选择工具
、整合方案以解决业务问题”上,与其考抽象的计算(compute) 能力,考“了解问
题并解决的能力”比较适当。
易言之,一样的题目,“二元树找最大子树”,先说明你的意图: 题目就是故意很
模糊,想知道它能否反问出更有意思的问题,例如:
* 这二元树的资料型态?范围?是否固定大小?
* 这二元树有多大?能整个塞进内存的是算大还是小?
* 这二元树会不会变动?有多频繁?有多少 reader/writer ?
每次变动是否 atomic/transaction ?
能否设计成变动后需要“重算”的地方愈少愈好?
* ...
让它自己发球,再挑个你觉得最有意思的 (且自己能掌握的) 深入讨论、试作,谈
谈如何测试这个机制 (“效能”, security, scaleability, ...) ,有的没的。
它自己发的球,你杀回去它接不住的话,它也只能怪自己 :D (我就被我自己发的
球K过, hen 痛 XD )
===
另一点,就资深(senior)工程师来说,我看的另一个重点,就是它的
带人(mentoring) 能力。它挂著“资深”的称号,就必须要当得起“资浅”人员的
“榜样(role model)”;例如:
* 沟通能力: 说服、协商、谈判、聚焦、化解冲突
* 领导能力: tribal leadership, situational leadership 这类相关学说
也就是说,除了技术底子、工程纪律外,还要有帮助团队文化向上成长的助力。
因为你送出来的讯息很清楚: “这个团队重视(value) 这个人的行事风格,所以这
个团队选择把 senior 这个称号挂在这个人身上”。反过来说,如果 senior 这个
称号在这个团队中是倚老卖老熬年资就能拿到手的,那整个团队就会跟着一起腐烂
。 (这与管理职不完全一样,管理职除了要像 senior 一样作榜样外,还必须为整
个团队的成败负责。)
===
其实,你知我知独眼龙也知,有些地方“面试”文化本身就很矛盾;粿也一样。
手上的事都作不完了,又被抓来当分母 (spread of accountability), 招进来的
新人作得好是上级同志领导有方,作不好会有事后诸葛出来说“怎么当初面试这新
人的人‘都’没有人看出来!?”是故,也很难怪别人使用 "Nobody gets fired
for choosing IBM." 战术,拿“二元树找最大子树”这类题去交差了事 XD
Kent Beck [1] 也有篇文,稍微谈到 Facebook 的情形:
* https://goo.gl/yJ9PuJ
* https://www.facebook.com/notes/kent-beck/fear-leads-to-anger-primary-and-secondary-emotions/1708089742557216/
[1]: https://en.wikipedia.org/wiki/Kent_Beck
只能说: “谁记得谁痛苦” :D
就看是人求事还是事求人,中意对方开出来的价,那就也只能给对方验货到满意惹