交大學子技術類筆試經驗分享

才智咖 人氣:2.69W

    經過將近2個月的折騰,job hunter的日子也已經over了。無數次上這個版,今天冒著被取消offer的危險給大家洩點題,來點面經,給學第學妹們多點參考資料。希望大牛們不要嘲
笑我,主要是面向學弟學妹們或者將來要找工作的同學的參考資料,針對cs||se方向的同
學。

交大學子技術類筆試經驗分享

    首先,談談筆試的電面。筆試或者電面一般是公司挑人的第一關,而在這一輪,不同公司
會有不同的風格,但是大體上,掌握好這些東西肯定是錯不了。

    1. english , 外企筆試或者電面基本都是用英語的,所以英語至少要看得動,能跟他們聊。其實周圍蠻多同學對自己英語沒有自信,其實我認為只要過了6級就這一關就肯定夠用了
。尤其是電面的時候,技術上可能是用中文說,部分公司(morgan...)除外,但是總歸得準
備一份流利的英語自我介紹對不對?

    2. 基本學科 。像google, baidu這樣的公司只考演算法,其實基本學科的東西相對就比較弱了。但是其他公司基本上就是你這幾年學到的東西,首先當然是coding能力,要不寫 cod
e,要不看code,  在筆試的時候只需寫出思路就行了,不必每個變數,每個迴圈就斤斤計較;但是在微軟電面的時候會有一個live meeting的東西共享一個記事本,讓你在上面寫code, 這時就最好注意一下你的coding style, 包括方法變數命名,先寫test case, 考慮周不周到,而且微軟那邊特別愛考字串轉int, int轉字串;比如後者,你就要先考慮int有沒有可能是數;是不是可以擴充套件把進位制用變數或者引數描述;在求int的位數(字串長度)的時候怎樣求,用迴圈除以進位制數還是直接用log的方法等等。基本coding能力還是很重要地。

    其次就是各個科目了,資料結構:很多人說這個很重要,其實這個沒有想象中的需要那麼
多的精力,只需要知道概念就是了,連結串列,二元樹,圖,基本排序演算法這些概念要知道;
比如二元樹中序+前序(後序)能決定其排列等基本性質;

    然後類似於一些比較經典的演算法題目:

    如何判斷兩個連結串列是否有交叉點,連結串列資訊不知道,希望是o(n)的演算法,而且o(1)的空間;

    同樣不知道連結串列資訊,如果判斷一個連結串列是否有環?

    如何在大數組裡去重?

    如何在兩個二元樹中求得最大子樹(高度最高)?

    其實演算法這個東西我也不知道怎樣準備,知道一些基本概念(遞迴,回溯,hash, 動態規劃,分支之類的)然後平時可以多上acm的網站練練手,做多了也就有感覺了(其實我自己都沒
怎麼做過這些題目)

    網路:總歸得知道tcp/ip的7層協議,沒層是做什麼的,有哪些代表協議,其中最重要的就是網路層和傳輸層,ip地址,子網掩碼的作用及原理, icmp(ping), nslookup, netstat 之類的命令也應該有所瞭解;tcp/udp有什麼區別; 資料庫: 總歸得知道基本sql語句怎麼寫,包括一些基本函式(max, sum),和一些in, some, all的關鍵字,其次事務的基本性質(acid) 隔離級別正規化的概念也要知道;作業系統,這個學的時候肯定要好好學,不過貌似面試的時候不會考得很深,比如程序執行緒的區別啦,程序排程演算法,死鎖形成4大要素以及分別對應的解決方案,比較容易考的是銀行家演算法,以及虛存頁面置換演算法,比較容易考的是lru,最好的工作集反而考得不多;其他科目就可以忽略啦 哈哈但是不是讓大家不學。

    筆試的時候一般會有智力題目,像之前在筆試微軟的時候居然有一道"愛因斯坦的超級問題",這個沒什麼好準備的,能做就做,不能做準備也沒用,具有比較大的偶然性,所以可以
不管這一塊;