Re: [請益] 我是不是程式設計師的料?

看板Soft_Job作者 (三分熟的鬧鐘)時間9年前 (2015/01/06 00:11), 編輯推噓8(8046)
留言54則, 15人參與, 最新討論串28/29 (看更多)
※ 引述《administer (系統管理者)》之銘言: : 作為一名受害者,我要勇敢上來踢爆sedgewick大大您的見解有偏差 : 以證明批踢踢真der害人不淺QAQ 咳, 抱歉這個嘛... 咳咳, 其實有下半卷沒講. 順便跟大家分享一下我的經驗. :P 既然是 job 類板, 我也來寫一些關於面試錄取與否的咚咚. : ※ 引述《sedgewick (三分熟的鬧鐘)》之銘言: : : hsundo 兄不要氣餒, 不過你這個程式是真的要改一下. : 這週小妹弟被導航王公司通知面試工程師 : 過去前一個小時要寫考卷,其中有一題是C++閏年題 : 正當小妹弟躊躇該怎麼寫比較能展現我的高度智商時 : 突然腦中靈光一閃,我相信最簡單的程式就是最好的程式 : 經過版上大大的教誨更是自信十足 : 於是就遵照sedgewick大大的示範 : 我依樣畫葫蘆: : printf("2000, 2004, 2008 ... 2100\n"); :              ↑ :           中間太長懶的列 這個程式的數字如果全對(去掉尾巴那個 2100 還沒有其他錯誤). 那其實也還好, 甚至不要錯太離譜嘛... 也還好. 請聽我道來... 以程式訓練而言, 九九乘法表當然是基本中的基本. 另外什麼費氏數列也是基本題, 科科. 不過通常面試不會只考基本題, 譬如九九乘法表會有所謂的進階題. 我可以洩幾題我的題庫給大家看. 類似題一: 假設用 1000x1000x1000 的三維矩陣表示一個 1μm x 1μm x 1μm 的空間. A.) 每個矩陣元素有一個既定的數字叫做溫度 T. 請以程式概念表達如何計算 gradient(T) 與 laplacian(T). B.) 每個矩陣元素有一個既定的向量叫做電場 E. 請以程式概念表達如何計算 curl(E) 與 divergence(E). C.) 請預測 A.) 與 B.) 程式的困難處會是哪些? PS: 我會把所有數學符號的運算方法全部寫出來, 這個不必猜. 類似題二: 請寫程式計算橢圓 x^2 + 4y^2 = 1 的周長. 並估計 1.) 計算誤差 2.) 程式執行所需的時間 PS-1: 老規矩, 會給線積分的形式, 不過要自己會轉成差分. PS-2: 這有另一個變形是求 x^2 + 2y^2 + 3z^2 = 1 的表面積. 這一類叫做數值方法的入門題. 專門考驗一個人有沒有辦法把數學形式轉成電腦可以處理的形式. 以我的經驗, 每個可以在「引導下」把問題答完的面試人員... 都會是非常優秀的程式人員. 看職位也可能考難一點的. 譬如說 sin(1/x) = 0 在 10^-20 到 1 之間有幾個解之類的. 至於這些題目嘛, 我通常不知道標準答案, 但是我會知道答案是不是正確方向. 第二種是機率跟排列組合之類的問題. 一次考足資料結構跟演算法. 基本題當然是 1A2B 那種咚咚. 進階題就很多啦, 譬如寫一個模擬 Buffon's needle 的程式. 或者寫一個預測等電梯時間的程式. 或者又寫個大樂透用一萬元包牌, 號碼要怎麼選, 期望值才會高的程式. 老話一句, 在「引導下」可以答得很好的人, 通常程式也寫得不錯. 總之九九乘法表或者萬年曆怎麼寫根本就不重要. 它們其實只是壓驚用的題目. 避免應徵人員被一堆奇怪的問題嚇到無法作答. 而我發現, 被錄取的人都可以很好地回答我所列出來的那些問題. 所以先科科一下. 繼續我們來分享什麼叫做程式技巧... 我覺得最大的苦惱是... 「每個程式員都只會重構他看得懂的部分. 」 而且..................會充滿熱情. 讓我最幹的一點是, 通常這些在整組程式當中只是無關痛癢的東西. 有人會認真跟我討論一百筆資料的排序該怎麼寫, 而不必呼叫 qsort(). 問題是這個東西了不起佔個 1ppm 的運算量. 另外佔了 30% CPU time, 一個 selection rule 寫了一萬五千行的「片段」. 完全視而不見... 因為看不懂. 還會有人跟我討論這個 if 跟某一個 if 應該併在一起. 因為什麼又什麼(通常是因為 condition 在那個 snapshot 一樣. ) 當我說, 那請把那一個十幾層, 總共四千多行的 if-else 處理一下時... 又繼續裝傻. 這些都是真實發生的事情. 而這些看起來非常荒謬的寫法(if-else 寫到數千數萬行)... 通常都是很有名的加速技巧. 譬如我的手上就有一段程式碼, 只有一個 ANSI C function. 但是整個檔案的大小是 4.6MB. 你沒看錯, 這個函式寫了將近 5MB. 當然這鐵定是 code generator 做出來的. 不過我說要把對應的 generation rule 找出來時, 就是不會有人做. 每個人寧可跟我討論這個按鈕應該是紅色還是綠色. 我要說的是, 大家真的覺得一個按鈕是什麼顏色有這麼重要嗎? 當然有時候很重要, 但是有更多的時候不是那麼重要. 所以嘛..............九九乘法表或萬年曆怎麼寫, 會很重要嗎? 好吧, 我也不敢保證. 不過對我來說不是那麼重要, 因為這是標配. 當然我還是會考; 是因為因為因為... 它是給受試者緩和情緒用的. : 然後我就從古亭捷運站按回卷了QQ : PS. 它們公司環境很不錯,裝潢讓人心情很放鬆的說~ 管理員兄不要傷心, 這是下半卷. :D 話說我的考試沒什麼程式技巧就是了. 譬如我不會問 printf - main 的結果是什麼. -- 新詩練習:新鮮。踩破初春裡的狗大便;不經意的滄桑,滿溢著嫩黃的喜悅。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.195.57.20 ※ 文章網址: http://www.ptt.cc/bbs/Soft_Job/M.1420474305.A.BA6.html

01/06 00:23, , 1F
推~想知道那個加速技巧是什麼?聽起來很酷!
01/06 00:23, 1F

01/06 00:27, , 2F
查表法?
01/06 00:27, 2F

01/06 00:29, , 3F
我都不會 看來我還太嫩了
01/06 00:29, 3F

01/06 00:30, , 4F
哦,它只是一個單純的窮舉法... :P
01/06 00:30, 4F

01/06 00:31, , 5F
屬性不同啦, 譬如 web programmer 不會來我這...
01/06 00:31, 5F

01/06 02:17, , 6F
不能同意 把數值計算拿來做臨場考題
01/06 02:17, 6F

01/06 02:18, , 7F
真正做數值的 哪個不是numerical recipe放手邊隨時查
01/06 02:18, 7F

01/06 02:19, , 8F
把那些數值演算法背起來 並沒比較厲害 真的要考的話
01/06 02:19, 8F

01/06 02:21, , 9F
應該考演算法的診斷 直接給suboptimal數值演算法 問
01/06 02:21, 9F

01/06 02:21, , 10F
該算法可能碰到的問題
01/06 02:21, 10F

01/06 02:25, , 11F
reco 兄, 我列的都只是大一大二程度的題目而已.
01/06 02:25, 11F

01/06 02:25, , 12F
還沒到深究 numerical analysis 的地步.
01/06 02:25, 12F

01/06 02:26, , 13F
但是這些題目會需要受試者同時又懂數字又懂電腦.
01/06 02:26, 13F

01/06 02:27, , 14F
這種人都是超級程式員的潛力股, 就算他其實數學很爛
01/06 02:27, 14F

01/06 02:28, , 15F
實務上我用這種類型的題目, 比起考程式本身要有鑑別力
01/06 02:28, 15F

01/06 02:29, , 16F
當然也可能遇上主考官不考這個... 絕對有可能.
01/06 02:29, 16F

01/06 02:29, , 17F
不過我是不覺得會用九九乘法表當成判斷標準就是了.
01/06 02:29, 17F

01/06 02:30, , 18F
至於考業界常用的演算法, 我的心得是.............
01/06 02:30, 18F

01/06 02:31, , 19F
這只會找到近親繁殖的產物而已, 非常畸形的篩選結果
01/06 02:31, 19F

01/06 02:36, , 20F
你這樣考簡單的 那更有問題啊 因為有看過就是有看過
01/06 02:36, 20F

01/06 02:37, , 21F
有人答出來 你就不知道是他剛好以前看過 還是現場想
01/06 02:37, 21F

01/06 02:38, , 22F
其實不會, 這種題目可以考倒台大資工跟數學出身的人.
01/06 02:38, 22F

01/06 02:39, , 23F
因為會寫程式的人通常把數學忘光了, 需要提醒...
01/06 02:39, 23F

01/06 02:39, , 24F
而數學很熟練的人, 會完全不知道怎麼處理程式問題.
01/06 02:39, 24F

01/06 02:40, , 25F
後者會被刷掉, 雖然基礎數學還在, 但是我是要找程式員
01/06 02:40, 25F

01/06 02:41, , 26F
最後的結果通常會有點意料之中或者意料之外...
01/06 02:41, 26F

01/06 02:42, , 27F
意料之中是說, 名校的學生平均而言都答得好上一大截.
01/06 02:42, 27F

01/06 02:42, , 28F
但是答得最好的那個可能背景完全難以想像...
01/06 02:42, 28F

01/06 02:43, , 29F
因為他的資歷裡頭完全沒有相關的東西, 譬如說化工畢業
01/06 02:43, 29F

01/06 02:43, , 30F
然後去台泥還是中油什麼地方上班三年.
01/06 02:43, 30F

01/06 02:44, , 31F
這種的我一定用, 那根本就是撿到寶.
01/06 02:44, 31F

01/06 02:45, , 32F
但是! 通常這類高手一問下去才會知道他打算出國了...
01/06 02:45, 32F

01/06 02:46, , 33F
大部分還是只能在答得很出色的族群裡面選一個.
01/06 02:46, 33F

01/06 08:11, , 34F
數值運算有專用工具,不是一般程式在解決的面向
01/06 08:11, 34F

01/06 08:16, , 35F
拿來做程式能力的判斷有點奇怪,這篇比較像是找特定人才(?)
01/06 08:16, 35F

01/06 08:22, , 36F
至少我看到這類題目,直覺反應是用matlab之類的
01/06 08:22, 36F

01/06 09:19, , 37F
很別緻的篩選方法,請問你是數學系出身的嗎
01/06 09:19, 37F

01/06 09:22, , 38F
不過我老實說離開學校之後就沒碰數值,如果面試突然問個
01/06 09:22, 38F

01/06 09:24, , 39F
積分可能都要想一下,就像@galic說的,我直覺也是用Matlab解
01/06 09:24, 39F

01/06 09:32, , 40F
如果碩士在學時應該有把握可以答出來,可是這些年
01/06 09:32, 40F

01/06 09:32, , 41F
在業界被汙染(?)後,可能會答的2266 XDD
01/06 09:32, 41F

01/06 09:34, , 42F
我另外好奇的是這種篩選法,很可能會把資工出身的篩光光吧?
01/06 09:34, 42F

01/06 09:35, , 43F
反而答的好的比較容易是數學系或是其他工程類科系
01/06 09:35, 43F

01/06 09:37, , 44F
請問你們面試的職位是什麼呢?
01/06 09:37, 44F

01/06 10:57, , 45F
「每個程式員都只會重構他看得懂的部分. 」 XD
01/06 10:57, 45F

01/06 11:50, , 46F
會給公式又會引導,應該是要看解問題的能力吧
01/06 11:50, 46F

01/06 13:19, , 47F
大樂透怎麼包期望值都一樣吧, 可能是變異數最小?
01/06 13:19, 47F

01/06 13:34, , 48F
上篇是九陰白骨爪 這篇是內功心法
01/06 13:34, 48F

01/06 13:34, , 49F
上下卷應該M起來
01/06 13:34, 49F

01/06 16:22, , 50F
個人比較認同這種考法.也比較有意思.而且這考法對新人來說
01/06 16:22, 50F

01/06 16:23, , 51F
會是一個具有被認同感的考法...
01/06 16:23, 51F

01/06 20:02, , 52F
叫我手算期望值就算不出了 囧
01/06 20:02, 52F

01/06 21:51, , 53F
包牌的期望值好像一樣? 還是是要求中獎機率? 數學有點爛XD
01/06 21:51, 53F

01/07 09:02, , 54F
外面都已上太空,這裡還在殺豬公。九九乘法表,呵!
01/07 09:02, 54F
文章代碼(AID): #1KghV1kc (Soft_Job)
討論串 (同標題文章)
本文引述了以下文章的的內容:
以下文章回應了本文
完整討論串 (本文為第 28 之 29 篇):
文章代碼(AID): #1KghV1kc (Soft_Job)