前期準備:
- 關於刷題:刷題不多,leetcode有150+道,8月就沒刷題了,我是按照leetcode tag 標籤刷的,有連結串列、樹、二分查詢、hash表、堆等分類標籤,我刷題完了在個人部落格上記錄了一些當時刷的題,偶爾會回顧一下(非常偶爾)。。個人leetcode題解
- 關於語言: 其實讀研,沒搞什麼研發的高大上專案,有個java 的水專案。對c++我也只是停留在課程設計水平。。所以準備看看java. 相關的書就是《深入理解JVM》, 《java併發程式設計的藝術》。。我個人沒咋看,就看了幾章JVM, 其餘時間看了點java面試題。 所以java崗的面試,我很吃力。。。那些不怎麼要求語言的,還能對戰幾面。。。
- 關於計算機基礎 作業系統問的多(程式執行緒,通訊),網路(TCP UDP HTTP)網路程式設計(selector, poll , epoll )
- 關於偷懶 偷懶的我,好多東西都是在面試中學會的,因為自己基本處於焦慮狀態,專業書本也看不下去。。總結下面試,很多時候也有重複的問題的。好多次面試都出什麼大檔案裡查詢的問題。再就是看《劍指offer》 《程式設計師面試寶典》,會發現很多面試題似曾相識吶。。啊哈哈哈 面試官陪你一起寫演算法題,感覺也是一種鍛鍊和提升。。
- 關於小技巧 面試過程中,遇到會的演算法題,不要寫的太快。假裝有個循序漸進的思考過程。有的面試官可能不看重你是否做出來,而是看你思考的過程吧。 另外面試官一直否定你的時候,氣場千萬不要弱! 如果他是真的不看好你,你再低姿態也沒用,反而自己不開心。 萬一他是考驗你的自信心呢? 如果 我再遇到面試官一直嘆氣質疑你專案太簡單,技術過時的話,我會首先承認在學校確實和企業有差距,但是IT技術本來就是日新月異的,我有學習能力,我之前都能搞出來,新東西肯定也能很快搞定吶!一定要相信自己!!絕對不要慫!
春季實習面試
2017微軟轉正實習生
第一面沒問演算法,直接問專案,首先我解釋了幾個課程設計,後來按著機器學習一直問。。沒怎麼回答好。。後來講了一下簡歷寫的個小遊戲。
二面開始問我迷宮查詢怎麼實現的,就是深度優先和廣度優先的搜尋。問了倆演算法,比較簡單:一個是樹的層序遍歷,另一個求經過root的兩個樹節點之間的路徑長度。手寫程式碼,講思路和測試用例。另外引申了一下求兩個節點的不經過root的最短路徑長度。我說要求最近公共祖先,但是程式碼還沒想出來咋寫呢,時間也差不多,就結束了二面。
三面竟然問一些語言特性。。java hashmap 和 hashtable的區別(執行緒安全)。。c++ virtual, 解構函式,過載重寫。按著執行緒安全的問題問啊問。。我就知道互斥鎖。。最後給看了一個c語言strtoken函式的定義,然後白板實現。自我感覺這個函式寫的差不多,就是前面一些語言特性沒回答好。。 對了,因為strtoken 不是執行緒安全的,面試官又問我該咋辦。。我又只能回答說加鎖。。。。。。
微軟的訊息等了太久了!!備胎一個月了,蘇州那邊打電話問我能不能去蘇州實習。。然後說不太可以。。畢竟學校在北京。。然後GG了。。現在後悔,不該為了怕導師而拒絕微軟啊,校招的時候實習經歷還是比較有分量的。
小米實習面試
1 最近公共祖先。 如果有parent 指標, 相當於求兩個連結串列的交點了。如果是普通二叉樹就遞迴判斷。 當初沒好好刷題呀。leetcode.com/problems/lo…
2 旋轉陣列二分查詢
最後小米實習去了一週。迫於導師淫威, 怕怕地辭職了。太慫了。。而且等我辭職後竟然放假了並且導師也對我們找工作放水了!! 又心塞!!!
頭條實習面試
一面掛。 問求第k大個數字。用快排寫的。 寫的比較慢。 又問專案。感覺沒亮點。 掛!
內推秋招
百度複合搜尋提前批面試
- 一面: 程式執行緒,三次握手,死鎖以及怎麼處理。專案。 演算法題:兩個連結串列求交點
二面: 1) 智力題, 一個密碼鎖有6個數字, 求不小心拿反了還是正常數字的概率;求不小心拿反了和拿正的數字一樣的概率 2)演算法題,一個陣列 1-n 中缺失了一個數字。查詢到那個數。 我用二分查詢做的。 3)面試官感覺不懂機器學習, 讓我講了下svm, 給她說了下原理。
三面:部門經理,有點傲氣。。喜歡打斷人說話,問職業規劃之類的(職業規劃真的會有很多人問到,好好準備)。問有沒有男朋友(懵逼),問對頭條和百度的看法。 問遇到困難怎麼解決,我一不注意說Google一下。。然後馬上意識到啊這是在百度啊。。接著添上 或者百度一下。。。
最終說兩週給訊息, 也沒給。掛了!!/(ㄒoㄒ)/~~
360中科院專場
面試真的靠緣分和運氣嗎,感覺水過的。
一面問,寫個atoi吧,考慮好各種情況。 我就寫。。剛寫了兩分鐘,面試官忍不住了,你咋寫這麼多。。。我說我得考慮充分啊,他說別寫了講講吧。。。就講了下。然後又問,編輯距離知道嗎?我說動態規劃,剛要寫,然後他說好,知道了不用寫。然後問了下svm,gbdt 的東西, 就過了
二面說,山東人啊。。360好多山東人呢。。哎你這專案都是工程的呀,咋來找演算法,我說因為熱愛 = =(內心:我就是試試看啊)。 沒寫演算法題,聊了聊專案,問svm 摺頁損失公式,並問L2正則作用。竟然過了(黑人問號??)
三面hr: 自我介紹,優點,對360的瞭解, 對人工智慧研究院的瞭解。。。
目前狀態是進入offer(備胎)池, 據說360以往也是這樣的情況,會有很多人選入備胎,有效期到年底。據說有師姐在備胎好幾個月後收到了360offer...所以大家保險起見,不要覺得360三面過了就穩了。。基本當沒有這個備胎。。
百度本地鳳巢
一面:由於我簡歷寫的熟悉java, c++略懂,他就問了下簡單的c++的語言特性, const 關鍵字。面試官很nice,告訴我別緊張。。就想了解一下我會的東西。然後問了排序,按某種分類把排序演算法分類一下。我按時間複雜度分的。後來又問了下各個排序的原理講了一下。 演算法題:記不太清了,就是一個二叉樹遍歷的變形,輸出二叉樹中路徑尾節點能被5整除的路徑?寫了個遞迴的,又問非遞迴的。。大致說了下。他問,是不是刷題挺多。。我說,大家都會刷一些吧。。。問用linux開發嗎?我說寫過c/c++ makefile。 面試官就噼裡啪啦記錄。
二面:shell 命令。。不熟, 問怎麼用shell指令碼寫記憶體監控,直接說不會。 後來又讓我用shell查詢統計一個檔案裡的幾行記錄,我說我用sql吧。。。。面試官無奈地點頭了。後來問 linux 讀檔案的時候核心發生了啥?然後問了selector, poll epoll... 當時都沒看(現在也沒來得及看 = =), 就記得selector 監控多個io通道啥的,大致說了下。 演算法題: minstack. 參見劍指offer,但是第二個棧不用每次都push min
三面:開放題。 問了搜尋相關的。 問好多url,裡面可能有好多重讀欄位怎麼儲存。開始說字首樹,想了想,說先按照? / 分詞, 儲存倒排索引。面試官莫名覺得我不錯,但我自己感覺二面三面答的都不好。
最後百度提前批只有這一個部門過了,然後百度提前批一般是面試通過後經理或者hr要你身份證號,通知你9月初筆試。筆試通過後10天左右告知。9月底會發正式offer,告知薪資之類的。
百度金融
- 一面 java 記憶體結構, 程式計數器存的啥?為啥建立連線三次握手,而釋放連線要四次揮手?(把過程說了下,說四次揮手是因為伺服器還要發資料給客戶端,傳送完畢後還要確定一次,不知道對不對)演算法題:1)兩個字串中,一個字串相比另一個字串少了一個字元,找出來這個字元。 我說排序後用雙指標或者hash表,寫了程式碼。2)算 a + b, 不能用加號或減號。說了用位運算,但是進位那裡卡殼了,正確答案見blog.csdn.net/unimen/arti…
int add(int num1, int num2)
{
if (0 == num2)
return num1;
int sum = num1 ^ num2;
int carry = (num1 & num2) << 1;
return add(sum, carry);
}複製程式碼
3) 二叉樹中序遍歷,遞迴 非遞迴都寫了遍。。。
二面, 問專案,然後看到我有個模擬挖礦(比特幣相關的東西)的小應用,和金融比較相關,就簡單介紹了下。以為我懂區塊鏈之類的,然而並沒有。演算法題!連結串列帶random指標深拷貝的問題!! 我竟然忘記咋做了,一直在想不用hash表的那種演算法,最後面試官提示可以用額外的資料結構,就說了用hash表存原節點和新節點的關係。完整答案:www.cnblogs.com/chrischennx…
三面 人生理想,職業規劃,性格優點。 然後說我不大自信。以後面試要自信
鏈家
5個筆試題,現場筆試後再面試。
筆試
1 陣列中超過一半的數。 blog.csdn.net/lskyne/arti…
2 括號是不是合法匹配, 用了個棧
3 m個連續珠子有n個不同的顏色,求最小包含n個顏色的連續珠子長度 blog.csdn.net/zhccl/artic…
4 一堆ip訪問記錄(ip, 時間),如果10分鐘內連續訪問超過1024次就是非法的,找出這些非法ip
5 判斷迴圈依賴。(圖裡是否有環,應該是用拓撲排序)一面: 執行緒有沒有自己的獨立資源? 三次握手過程。 b+樹 data存在哪?(葉子節點),葉子節點有聯絡嗎?(有,連結串列相連的形式)為啥?(方便遍歷,區間查詢) 你覺得筆試題能答多少分?我說七八十吧,他說差不多。說他覺得沒啥問題了, 問了解鏈家嗎,我說。。租房賣房的吧。。。北京好多門頭店啊。。。最後又說鏈家技術不錯。。
二面: 鄙視我的專案,覺得太簡單。。 哎, 我也知道啊。。我也很絕望啊。。。寫了個sql,問職業規劃,我說做搜尋相關的吧。。他說鏈家沒有。。我說比較偏演算法的研發吧,他說這說法好虛啊。。。最後說 嗯你等一下我考慮一下吧。。。然後過幾分鐘給我掛了。 感覺職業規劃真的挺重要的,雖然之後不一定按自己說的做,但還是要大致有個規劃,讓面試官覺得 你這個人是對自己負責的。 所以我職業規劃是什麼,我研究生上的這麼雜我也很絕望啊。。。。
網易有道
演算法崗, 不match. 看我簡歷後,說他們主要是搞深度學習,象徵性地問了幾個演算法題。記得一個題大約是:
www.cnblogs.com/huangwei102…
百度運維
資料庫索引 用了什麼資料結構, 和紅黑樹區別
hashMap 初始化多大, 什麼時候重新擴容
兩個連結串列判斷是否有交點
翻轉字串 in-place "how are you" 轉成 “you are how”
三次握手; 四次揮手什麼時候是在 time-wait 狀態
http 協議組成部分
jvm 垃圾回收, cms 收集器
elatic search 索引合併?
執行緒 interrupted 是進入什麼狀態
讀寫鎖 : 讀寫鎖特點:
1)多個讀者可以同時進行讀
2)寫者必須互斥(只允許一個寫者寫,也不能讀者寫者同時進行)
3)寫者優先於讀者(一旦有寫者,則後續讀者必須等待,喚醒時優先考慮寫者)
jvm OM 異常 通常是怎麼個情況, 如何調優。。。
然後電話面試完就再沒訊息了。。
華為優招
啥也沒問基本。。聊專案也有沒有引申出一些知識點
祖龍娛樂
1 給一個java 程式,說出執行期間,jvm各個記憶體儲存資料的變化,包括各個變數儲存在哪,物件構造的過程,程式計數器,棧的壓棧返回過程。然後評價我答的不太具體,只是說了各個資料的儲存區域。
2 申請了很多 物件, 會出現什麼問題? 各個記憶體區域都有可能因為什麼而出現問題?
3 垃圾回收演算法
說了eden和 survivor 後, 讓具體描述那個 8:1:1 怎麼複製回收的
4 判斷html 字串是否合法, 給合法的標籤列表, 要合法不能不同的標籤相互交錯。
5 account (aid, money)
設計 addMoney, subMoney transMoney(Account a, int money) 的執行緒安全的演算法。
我寫了之後,忘記考慮money的正負 是否溢位的情況,把我鄙視一番。 還有轉賬的方法, 兩個物件都加鎖,會造成死鎖產生, 他問我咋辦,我說一次都申請了,寫的程式碼成了整個序列的了。 最後才想到 按順序申請,可以每次先給id小的account物件加鎖, 然而他已經對我徹底失望。其實感覺一開始就對我沒抱希望的樣子。
頭條校招內推面試
一面: (1)大檔案100億個數字,求前m大的數 (2)程式和執行緒區別,啥時候應該用多執行緒,啥時候用多程式。 執行緒的好處? 協程?www.cnblogs.com/lxmhhy/p/60… (3)索引為何用b樹 不用二叉樹 database.51cto.com/art/201504/…索引很大需要存到磁碟,高度小了,需要的io操作少(4)兩個有序陣列,求第k個數, 說了雙指標的做法,O(k), 面試官讓想更優的, 沒想出來。應該是用二分查詢的方法。 bookshadow.com/weblog/2015… (5) 看什麼技術類的書籍,講講jvm裡都講了啥。
二面:(1) 面試官脾氣很好。。問了下資料庫事物隔離,一開始說不大瞭解,突然想到之前看了髒讀,不可重複讀,幻讀。。說了之後面試官也沒深入問。http://www.cnblogs.com/zhoujinyi/p/3437475.html 然後問mysql的一些問題,為何一般不用select *, 要用select 需要的欄位呢?嘗試回答了,不大對,面試官就解釋了一遍。。我忘了他講的啥了。。。好像之前還被問到 limit 分頁的數字大為啥效率會變低。。資料庫不太瞭解。
三面 :(1) 問了jvm的, gc, 怎麼判斷物件存活。 volatile(兩個特性) sychronized: 修飾一個類,其作用的範圍是synchronized後面括號括起來的部分, 作用的物件是這個類的所有物件。 修飾一個方法,被修飾的方法稱為同步方法,其作用的範圍是整個方法, 作用的物件是呼叫這個方法的物件; 修改一個靜態的方法,其作用的範圍是整個靜態方法, 作用的物件是這個類的所有物件;修飾一個程式碼塊,被修飾的程式碼塊稱為同步語句塊,其作用的範圍是大括號{}括起來的程式碼, 作用的物件是呼叫這個程式碼塊的物件; wiki.jikexueyuan.com/project/jav… (2)實現LRU O(1) 但是面試官描述得有問題,說使最近用次數最少的blabla..,我說你說的是LFU啊,不是LRU. 他說差不多!!??說了LRU的資料結構,他又說加過期時間怎麼整。。 我只能想到O(n)遍歷刪除的。(3)後來寫了求樹中兩個子節點直接最長距離的。。差點沒寫上來。 一開始想對每個節點求左右高度,有重複計算,後來寫程式碼時,就想到在遞迴中可以求一遍就好了。寫好了面試官問了下邊界情況,檢查了下沒問題。。然後說今天面試結束了,日常提問環節。。 瞎問了點問題。。
最後面頭條的感受:感覺面了假的頭條。。 頭條實習一面掛的陰影還在, 咋還能給我終面過了。面試真是運氣+眼緣啊。忐忑。 hr說九月中下旬給通知,也還不一定給offer。
小米內推
一面: 瞎扯專案, 演算法題: 二維陣列中,每個元素有個數字,求某一個點到任意一點的sum和(只能向右或者向下) dp記錄到每個點的sum。 第二個題, 求一個字串,包含一個字符集的最短長度。網易有道一面題
二面: 專案,講了java 記憶體。程式執行緒。 26進位制轉換。 一堆ip中,查詢一個ip是否存在。
最後問能不能實習。好多公司都希望是先去實習。最後微信問了面試官結果,說是通過,再給hr報備。
最後總結: 目前9月初,校招還未正式開始,基本都是內推的。不知道校招會是什麼情況,但是現在來看,內推已佔坑很多了,大家還是早開始早準備。前期我是海投的,包括一些小點的公司,面試了很多次,無數次的自我介紹、專案介紹。 注意一下,有的公司校招和內推不影響的,內推掛了可以再參加校招,而頭疼是內推掛了,校招也不能參加了。一般來說,部門之間的內推面試不衝突的,比如百度可以面試好多部門。另外除了公司官網,要經常逛逛 北郵人 牛客等,多關注一些內推公眾號, 多發現招聘訊息,多點機會!