Re: [討論] 大家對新人程式的要求?

看板Soft_Job (軟體人)作者 (喲)時間17年前 (2008/09/21 13:04), 編輯推噓8(8014)
留言22則, 9人參與, 最新討論串9/16 (看更多)
有點擔心一般的面試官出程式題會漸漸帶往偏差的方向, 使面試者試久了,就學到一種投其所好的思維, 將來思考任何程式都以快為準則,卻沒有思考寫程式的其他有趣的地方, 例如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)

09/21 13:30, , 1F
我程度不是很好,但是 文中的那個程式是無窮回圈嗎?
09/21 13:30, 1F

09/21 13:34, , 2F
i-- 吧. 另外不會是無窮迴圈, 會回到0的
09/21 13:34, 2F

09/21 13:34, , 3F
看你職位, 你應徵高階一點的位子就有機會...:p
09/21 13:34, 3F

09/21 13:34, , 4F
s也要給初始值才行
09/21 13:34, 4F

09/21 13:35, , 5F
對不起 班門弄斧了 orz
09/21 13:35, 5F
※ 編輯: yauhh 來自: 61.231.69.71 (09/21 13:38)

09/21 16:21, , 6F
更極端的應該是 for (register int i... (敲昏拖走)
09/21 16:21, 6F

09/21 17:00, , 7F
"register int i"這樣的寫法compiler不見得會理你XD
09/21 17:00, 7F

09/21 17:21, , 8F
呃... 這個不是用 int n=10; (1+n)*n>>1 就解決了嗎?
09/21 17:21, 8F
而且我文章重點不在於有沒有創意, 而是在於你面試一個人是要給他足夠的發揮空間,看他能表現的限度, 或者是以一種限制再限制的"超高效程式"思維去嚇唬面試者, 對他們示威說:如果你程度不到這樣的位置,就不要投履歷來我這邊. 但我真的要再三強調,我絕對沒有攻擊他人缺創意的意思. 那些意思如果是你自己加的,不要把它塞到我這邊. ※ 編輯: yauhh 來自: 218.160.213.114 (09/21 19:55) ※ 編輯: yauhh 來自: 218.160.213.114 (09/21 20:02)

09/21 20:03, , 9F
可以用assembly language寫inline function嗎? :p
09/21 20:03, 9F

09/21 20:07, , 10F
另外problem solving那些... 我會覺得很難形容吧.
09/21 20:07, 10F

09/21 20:07, , 11F
要知道programming本身就是problem solving, 要把這列出
09/21 20:07, 11F

09/21 20:08, , 12F
來恐怕這能力的強度需求不會是一般的高... 真的提問時
09/21 20:08, 12F

09/21 20:10, , 13F
解問題解得不夠漂亮恐怕考官的印象分會直線下降呢... :P
09/21 20:10, 13F

09/21 20:11, , 14F
至少我在當interviewer時就會這樣想...
09/21 20:11, 14F

09/21 20:16, , 15F
因為前面有人說,沒有人在介紹自己專長是使用扳手的...
09/21 20:16, 15F

09/21 20:17, , 16F
所以我在想,那一大堆人都寫專長是C/C++,如果不要這麼寫的話,
09/21 20:17, 16F

09/21 20:18, , 17F
是不是應該寫一些不會太不實際的專長,資料庫調校就是一例
09/21 20:18, 17F

09/21 20:28, , 18F
另外,考題的質量上,以乘法為例,有一些程式寫法會用加法巧妙
09/21 20:28, 18F

09/21 20:29, , 19F
替代;但是實際工作的處理上,不會隨時都在想這個優化方式
09/21 20:29, 19F

09/21 20:30, , 20F
這樣,是不是說,把考題換成高層次一點的題目比較有意義?
09/21 20:30, 20F

09/22 18:11, , 21F
如果 "1 加到 10" 是固定要做的, 直接定義結果常數就好
09/22 18:11, 21F

09/22 18:11, , 22F
也不用跑迴圈去計算, 前提是它是 "固定" 要做的
09/22 18:11, 22F
文章代碼(AID): #18rTNGzl (Soft_Job)
討論串 (同標題文章)
文章代碼(AID): #18rTNGzl (Soft_Job)