第一次面試經歷和體會分享-職場故事
被拒,感覺很不爽,但是更多的是反思和后悔:把我反思的結果跟大家共享,希望大家能有所收獲。
首先聲明我面試的是技術類的,所以非技術類的同學就不要看了,其次我是數學系的,一些情況只是個案,所以大家要有所看有所不看。
從頭開始,在去 Tencent 筆試之前我一直在安安靜靜的準備考研究生,沒有參加他們舉行的宣講會,甚至沒有按時在網上投簡歷,筆試是帶著簡歷爭取來的,筆試很簡單:但你C/C++的基礎一定要好,特別是細節,我大概看了一下試卷的分數,六七十的比較多,八十的非常少,但是九十的也有。另外,東大考點比南大考點的容易,所以那個工作人員說,那邊的考點的面試資格分數稍高一點,不說了,這些大家都知道。
一面我感覺很順利,除了面試我的MM把二叉搜索樹排序誤作堆排序外,一切都還順利。先是做自我介紹,我就說了不到兩分鐘,就不說了,她就開始問問題。(被刷,這為我二面埋下了伏筆,我一會再說)。
我大致談了一下我曾經做過的一些項目經歷,并且重點強調了我在這些項目中的收獲,她好象很滿意。接下來問我一些C++方面的問題,很多,非常多,一個接著一個,有變量的存放區域,有函數的存放區域(我說是代碼區,她好象不滿意),內聯函數和成員函數的差別(我感覺有點奇怪),就只各自說了一下各自的實現,有繼承的實現機制,有虛函數的實現機制,有虛函數和純虛函數的區別,有虛基類應用的時機,指針申請和釋放的注意事項,內聯函數比普通函數更快(我回答了內聯函數是在調用的位置展開,而普通函數是有跳轉,她好象不太滿意,我有補充了還有參數的傳遞和返回值的開銷,她才放過我),還有不下10個這樣的關于C++的問題,我都盡量做了回答。
得到的經驗是:我的關于于C++的理論經驗太膚淺,特別是對編譯器的了解知道的太少,我認為主要是因為我學計算機的切入點是計算方法,所以這方面不太注重(只注重方法的優化效率,不太也沒有能力注重編譯器的優化運用,所以大家有機會補充一下理論方面的知識,理論很重要特別是在面試的時候,在平常學習的時候不要只把精力放在算法上。
她接下來問我TCP/UDP的差別,我就直說我不清楚,我對計算機網絡通信不熟(我確實沒在這方面看過,考程序員時看了一下,忘記了),所以她就沒問我這個方面的問題。
接下來她開始問我算法,先讓我敘述了一下hash map的實現原理和缺點極其實現方法,又說"你講一下堆的實現方法",我很輕松的講完了,我就感覺她不太滿意,因為她一直在問我一些明顯是在引導我的問題,比如父親和兒子節點的關系是什么,我回答說如果父親是i,兒子是2i,2i+1,根據i開始計數可能有所不同,她好象還不滿意,就問我你怎么區分兒子的大小,我說沒必要啊,只需要把兩個二子中大的調上去了,扯了很長一端時間,她中間還問了我二叉樹遍歷的情況,我也順利的答了(后來才知道她一直在引導我),她最后有問了一句,你為什么不規定左兒子大與右兒子哪,我當時聽了就怒了,馬上說,哦,你說的是二叉搜索樹排序不是堆排序,接著有給她講了半天兩者的區別,她還認為堆排序效率太低,因為每次都要調整一次,我明確告訴她堆排序的排序效率是O(nlogn)的,不低,而且搬出了侯捷的一句話。
這個過程我發揮的很少,不過她好象沒有堆排序的概念,我很納悶(不知道是不是一個圈套)。可能是時間太久的緣故她沒有再問我算法,就問了一些個人的意向,要不要考研什么的,我就直說了,我說這是我投的第一份簡歷,如果我拿到offer我就不考研了,如果拿不到,我就到計算機系去讀研。她沒說什么(這為我二面失敗又埋下了伏筆),她接著說,你不適合做開發,因為我們開發人員都主要是研究生,而且是計算機系的(我感覺扯),我說我可以學啊,我承認在一些方面的不足,但是我有數學做基礎的。她說,你算法很好,如果你有作測試的意向,我們可以考慮一下,我考慮了一會說,我考慮一下,然后說,可以啊。(但是不是很熱切的那種)。接著我就扯了,在走之前我笑著說了一句:二叉樹排序和堆排序是不一樣的。(現在也不后悔這句話)。