看板 Soft_Job 關於我們 聯絡資訊
※ 引述《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
et282523: 推~想知道那個加速技巧是什麼?聽起來很酷! 01/06 00:23
hSATAC: 查表法? 01/06 00:27
y2468101216: 我都不會 看來我還太嫩了 01/06 00:29
sedgewick: 哦,它只是一個單純的窮舉法... :P 01/06 00:30
sedgewick: 屬性不同啦, 譬如 web programmer 不會來我這... 01/06 00:31
recorriendo: 不能同意 把數值計算拿來做臨場考題 01/06 02:17
recorriendo: 真正做數值的 哪個不是numerical recipe放手邊隨時查 01/06 02:18
recorriendo: 把那些數值演算法背起來 並沒比較厲害 真的要考的話 01/06 02:19
recorriendo: 應該考演算法的診斷 直接給suboptimal數值演算法 問 01/06 02:21
recorriendo: 該算法可能碰到的問題 01/06 02:21
sedgewick: reco 兄, 我列的都只是大一大二程度的題目而已. 01/06 02:25
sedgewick: 還沒到深究 numerical analysis 的地步. 01/06 02:25
sedgewick: 但是這些題目會需要受試者同時又懂數字又懂電腦. 01/06 02:26
sedgewick: 這種人都是超級程式員的潛力股, 就算他其實數學很爛 01/06 02:27
sedgewick: 實務上我用這種類型的題目, 比起考程式本身要有鑑別力 01/06 02:28
sedgewick: 當然也可能遇上主考官不考這個... 絕對有可能. 01/06 02:29
sedgewick: 不過我是不覺得會用九九乘法表當成判斷標準就是了. 01/06 02:29
sedgewick: 至於考業界常用的演算法, 我的心得是............. 01/06 02:30
sedgewick: 這只會找到近親繁殖的產物而已, 非常畸形的篩選結果 01/06 02:31
recorriendo: 你這樣考簡單的 那更有問題啊 因為有看過就是有看過 01/06 02:36
recorriendo: 有人答出來 你就不知道是他剛好以前看過 還是現場想 01/06 02:37
sedgewick: 其實不會, 這種題目可以考倒台大資工跟數學出身的人. 01/06 02:38
sedgewick: 因為會寫程式的人通常把數學忘光了, 需要提醒... 01/06 02:39
sedgewick: 而數學很熟練的人, 會完全不知道怎麼處理程式問題. 01/06 02:39
sedgewick: 後者會被刷掉, 雖然基礎數學還在, 但是我是要找程式員 01/06 02:40
sedgewick: 最後的結果通常會有點意料之中或者意料之外... 01/06 02:41
sedgewick: 意料之中是說, 名校的學生平均而言都答得好上一大截. 01/06 02:42
sedgewick: 但是答得最好的那個可能背景完全難以想像... 01/06 02:42
sedgewick: 因為他的資歷裡頭完全沒有相關的東西, 譬如說化工畢業 01/06 02:43
sedgewick: 然後去台泥還是中油什麼地方上班三年. 01/06 02:43
sedgewick: 這種的我一定用, 那根本就是撿到寶. 01/06 02:44
sedgewick: 但是! 通常這類高手一問下去才會知道他打算出國了... 01/06 02:45
sedgewick: 大部分還是只能在答得很出色的族群裡面選一個. 01/06 02:46
galic: 數值運算有專用工具,不是一般程式在解決的面向 01/06 08:11
galic: 拿來做程式能力的判斷有點奇怪,這篇比較像是找特定人才(?) 01/06 08:16
galic: 至少我看到這類題目,直覺反應是用matlab之類的 01/06 08:22
yfr: 很別緻的篩選方法,請問你是數學系出身的嗎 01/06 09:19
yfr: 不過我老實說離開學校之後就沒碰數值,如果面試突然問個 01/06 09:22
yfr: 積分可能都要想一下,就像@galic說的,我直覺也是用Matlab解 01/06 09:24
yfr: 如果碩士在學時應該有把握可以答出來,可是這些年 01/06 09:32
yfr: 在業界被汙染(?)後,可能會答的2266 XDD 01/06 09:32
yfr: 我另外好奇的是這種篩選法,很可能會把資工出身的篩光光吧? 01/06 09:34
yfr: 反而答的好的比較容易是數學系或是其他工程類科系 01/06 09:35
yfr: 請問你們面試的職位是什麼呢? 01/06 09:37
AmosYang: 「每個程式員都只會重構他看得懂的部分. 」 XD 01/06 10:57
GoalBased: 會給公式又會引導,應該是要看解問題的能力吧 01/06 11:50
penguin7272: 大樂透怎麼包期望值都一樣吧, 可能是變異數最小? 01/06 13:19
neo5277: 上篇是九陰白骨爪 這篇是內功心法 01/06 13:34
neo5277: 上下卷應該M起來 01/06 13:34
bndan: 個人比較認同這種考法.也比較有意思.而且這考法對新人來說 01/06 16:22
bndan: 會是一個具有被認同感的考法... 01/06 16:23
vi000246: 叫我手算期望值就算不出了 囧 01/06 20:02
rupcj8: 包牌的期望值好像一樣? 還是是要求中獎機率? 數學有點爛XD 01/06 21:51
csfgsj: 外面都已上太空,這裡還在殺豬公。九九乘法表,呵! 01/07 09:02