※ 引述《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
就看是人求事還是事求人,中意對方開出來的價,那就也只能給對方驗貨到滿意惹