作者yauhh (喲)
看板Soft_Job
標題Re: [討論] 大家對新人程式的要求?
時間Sun Sep 21 13:04:13 2008
有點擔心一般的面試官出程式題會漸漸帶往偏差的方向,
使面試者試久了,就學到一種投其所好的思維,
將來思考任何程式都以快為準則,卻沒有思考寫程式的其他有趣的地方,
例如Knuth稱程式設計之藝術的那些方面.
有句話說:資訊安全的程度,就像鏈條一樣,強度等同於最弱的那一環.
比擬這點,程式的效率,差不多可以說是
「跟全部程式中效率最差的那一段程式碼一樣差」,
要說你寫的程式很快,必須保證效率最差的環節也是最快的,才能算數.
並不是養出隨手就寫出最快的程式碼就算是可錄取.
如果有高人是這個樣子,頂多稱為程式界的激進份子兼為優秀的第一線程式工.
這種人或許在第一線寫程式很猛,思考流程稍微可以,但創意就不見得可以.
把程式的寫法要求到極端是很恐怖的,例如:
for (i=10; i>0; i--) s += i;
本來C/C++提供的好功能讓妳隨便寫for迴圈都可以,但是一旦為了快,
從 1 加到 10 非這麼寫不可. 激進的面試官只喜歡看到這個答案.
但是,進行工作的時候,若是老想著每一個環節都要最快,
就是pre-mature optimization的毛病了.
而許多大工具和大架構的效能調校,通常不是把局部程式碼修得很快.
因此,我個人當面試者也是反看面試官的態度,
如果他只關心程式敘述層級的問題,差不多就知道是要找個工人而已.
這種工作我也不想要.
我很幸運找到了稍微高層一點的職位,讓我能夠有一些思考問題解決的空間.
很好奇,有沒有人找程式工作,在專長欄不特別指出會哪些語言和工具?
有人敢寫專長是problem solving或architecture performance tuning嗎?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.69.71
※ 編輯: yauhh 來自: 61.231.69.71 (09/21 13:05)
1F:推 psliurt:我程度不是很好,但是 文中的那個程式是無窮回圈嗎? 09/21 13:30
2F:推 ericinttu:i-- 吧. 另外不會是無窮迴圈, 會回到0的 09/21 13:34
3F:推 iincho:看你職位, 你應徵高階一點的位子就有機會...:p 09/21 13:34
4F:→ ericinttu:s也要給初始值才行 09/21 13:34
5F:→ ericinttu:對不起 班門弄斧了 orz 09/21 13:35
※ 編輯: yauhh 來自: 61.231.69.71 (09/21 13:38)
6F:推 iman00b:更極端的應該是 for (register int i... (敲昏拖走) 09/21 16:21
7F:推 SILee:"register int i"這樣的寫法compiler不見得會理你XD 09/21 17:00
8F:推 kerickuo:呃... 這個不是用 int n=10; (1+n)*n>>1 就解決了嗎? 09/21 17:21
而且我文章重點不在於有沒有創意,
而是在於你面試一個人是要給他足夠的發揮空間,看他能表現的限度,
或者是以一種限制再限制的"超高效程式"思維去嚇唬面試者,
對他們示威說:如果你程度不到這樣的位置,就不要投履歷來我這邊.
但我真的要再三強調,我絕對沒有攻擊他人缺創意的意思.
那些意思如果是你自己加的,不要把它塞到我這邊.
※ 編輯: yauhh 來自: 218.160.213.114 (09/21 19:55)
※ 編輯: yauhh 來自: 218.160.213.114 (09/21 20:02)
9F:推 leicheong:可以用assembly language寫inline function嗎? :p 09/21 20:03
10F:推 leicheong:另外problem solving那些... 我會覺得很難形容吧. 09/21 20:07
11F:→ leicheong:要知道programming本身就是problem solving, 要把這列出 09/21 20:07
12F:→ leicheong:來恐怕這能力的強度需求不會是一般的高... 真的提問時 09/21 20:08
13F:→ leicheong:解問題解得不夠漂亮恐怕考官的印象分會直線下降呢... :P 09/21 20:10
14F:→ leicheong:至少我在當interviewer時就會這樣想... 09/21 20:11
15F:→ yauhh:因為前面有人說,沒有人在介紹自己專長是使用扳手的... 09/21 20:16
16F:→ yauhh:所以我在想,那一大堆人都寫專長是C/C++,如果不要這麼寫的話, 09/21 20:17
17F:→ yauhh:是不是應該寫一些不會太不實際的專長,資料庫調校就是一例 09/21 20:18
18F:→ yauhh:另外,考題的質量上,以乘法為例,有一些程式寫法會用加法巧妙 09/21 20:28
19F:→ yauhh:替代;但是實際工作的處理上,不會隨時都在想這個優化方式 09/21 20:29
20F:→ yauhh:這樣,是不是說,把考題換成高層次一點的題目比較有意義? 09/21 20:30
21F:→ TKyo:如果 "1 加到 10" 是固定要做的, 直接定義結果常數就好 09/22 18:11
22F:→ TKyo:也不用跑迴圈去計算, 前提是它是 "固定" 要做的 09/22 18:11