做為一名大四的學生,我面試過不少的單位,有成功的也有失敗的,但是對我來說所有的失敗在某種意義上都是一種成功,特別是我下面寫的這些,寫這篇文章的時候,我已經簽了南京的一家軟件公司,但是想起今年2月21日我面試蘇州台灣的99v公司的經歷聯想到我們現在學習編程的一些情況我真的深有感觸,這次面試使我深深的體會到了失敗但也收獲了很多。我要說的將分成三部分,
1.是我面試的具體經過
2.是由面試想到的
3.現今我應該做的。
當然這些話很大程度上是我個人的意見,不可能完全得到大家的贊同,所以在某些觀點上如果哪位朋友覺得跟我的有很大出入,請不要介意,也不要對我攻擊,就當我沒有說過,歡迎和我聯系共同探討這些問題!我的EMAIL:[email protected]
1.面試經過大約在年前我接到了台灣瑞晟蘇州公司的面試通知,通知我2月21日到蘇州工業園區面試,接到面試後的幾天我把一些專業課溫習了一遍,特別是和,由於大學幾年裡,我一直專研這些方面,加上通過了高級程序員的考試,對於一些常用的算法我差不多也達到了爛熟於胸的地步,當時的感覺是如果問了我這些方面的問題我應該是沒有問題的!21日那天我被安排在4:30面試,由一位技術人員單獨給我面試,在問了一些簡單的問題之後他給我出了一道編程題目,題目是這樣的:
1)寫一個函數計算當參數為n時的值1-2+3-4+5-6+7......+n
哼,我的心裡冷笑一聲!沒想到這麼簡單,我有點緊張的心情頓時放松起來!
於是很快我給出我的解法:
longfn
for
returntemp;
}
搞定!當我用期待的目光看著面試官的時候,他微笑著跟我說,執行結果肯定是沒有問題!但當n很大的時候我這個程序執行效率很低,在的開發中,程序的運行效率很重要,能讓少執行一條指令都是好的,他讓我看看這個程序還有什麼可以修改的地方,把程序優化一下!聽了這些話,我的心情當時變的有點沉重,沒想到他的要求很嚴格,之後我對程序進行了嚴格的分析,給出了改進了的方案!
longfn
while
returntemp;
}
雖然我不敢保證我這個算法是最優的,但是比起上一個程序,我將所有涉及到乘法指令的語句改為執行加法指令,既達到要題目的要求而且運算時間上縮短了很多!而代價僅僅是增加了一個整型變量!但是我現在的信心已經受了一點打擊,我將信將疑的看者面試官,他還是微笑著跟我說:“不錯,這個程序確實在效率上有的很大的提高!我心裡一陣暗喜!但他接著說這個程序仍然不能達到他的要求,要我給出更優的方案!天啊!還有優化!我當時真的有點崩潰了,想了一會後,我請求他給出他的方案!然後他很爽快的給出了他的程序!
longfn
if
return;
else
return+n;
}
搞笑,當時我目瞪口呆,沒想到他是這個意思,這麼簡單的代碼我真的不會寫嗎,但是我為什麼沒有往那方面上想呢!他說的沒有錯,在n很大很大的時候這三個程序運行時間的差別簡直是天壤之別!當我剛想開口說點什麼的時候,他卻先開口了:“不要認為CPU運算速度快就把所有的問題都推給它去做,程序員應該將代碼優化再優化,我們自己能做的決不要讓CPU做,因為CPU是為用戶服務的,不是為我們程序員服務的!多麼精辟的語言,我已經不想再說什麼了!接著是第二個問題:
2),他要求我用一種技巧性的編程方法來用一個函數實現兩個函數的功能n為如:fn1=n/2!+n/3!+n/4!+n/5!+n/6!
fn2=n/5!+n/6!+n/7!+n/8!+n/9!現在用一個函數fn實現,當flag為0時,實現fn1功能,如果flag為1時實現fn2功能!他的要求還是效率,效率,效率!說實在話,如果我心情好的話我應該能給出一種比較好的算法,但我那時真的沒有什麼心思再想了,我在紙上胡亂畫了一些諸如6!=65!的公式後直截了當的跟他說要他給出他的答案!面試官也沒有說什麼,給出了他的思路:
定義一個二維數組floatt存入[2!,3!,4!,5!,6!},
最後得到計算值!呵呵,典型的空間換時間的算法!
這些總共花了50分鐘的時間,還有十分鐘我就跟他很隨意的聊聊天,聊了一些編程以及生活的問題,那時的我已經很放松了,因為我知道這次面試結果只有一個:失敗。5:30的時候面試官要我等通知,於是我離開了他們公司。這就是面試的整個經過!
;