一面(10分鐘) 一面只有10分鐘,開頭就自我介紹下,介紹了一分鐘把。然后面試官就讓我說說我的一個(gè)項(xiàng)目。然后我就開始說啊,從項(xiàng)目開始的時(shí)候什么都不懂,到第一次上線崩掉之后,開始考慮分布式設(shè)計(jì),然后引入負(fù)載均衡啊,然后還有圖片數(shù)據(jù)庫(kù)服務(wù)器分離啊,引入redis服務(wù)器啊,分布式session啊,然后還有針對(duì)預(yù)估的最大并發(fā)做了壓力測(cè)試啊,然后給他畫了個(gè)項(xiàng)目最終改造完成后的系統(tǒng)拓?fù)鋱D。 全程都是我說,他一句話也沒說,說了得有七八分鐘吧。 然后我說完他也沒針對(duì)這個(gè)項(xiàng)目問我啥問題,就問了幾個(gè)其他的問題。 1、學(xué)java幾年了,平時(shí)學(xué)java怎么學(xué)的啊,看過哪些書? 我說我沒怎么看書,只看了think in java的幾個(gè)核心章節(jié),平時(shí)都是喜歡看別人博客。 2、http狀態(tài)碼3xx 4xx 5xx分別是啥 重定向,客戶端錯(cuò)誤,服務(wù)器端錯(cuò)誤 3、如果我們一個(gè)項(xiàng)目,理論上需要1.5G的內(nèi)存就足夠,但是項(xiàng)目上線后發(fā)現(xiàn)隔了幾個(gè)星期,占用內(nèi)存到了2.5G,這時(shí)候你會(huì)考慮是什么問題?怎么解決? 我回答會(huì)首先考慮內(nèi)存泄漏,使用MemeryAnalyzer之類的工具分析檢查哪里有泄漏,然后他又問用過MemeryAnalyzer嗎? 我說沒用過。。 然后一面就這么完了,我出來之后等面試的時(shí)候認(rèn)識(shí)的小伙伴問我怎么還沒開始面,我說我面完了(繼續(xù)手動(dòng)笑哭) 二面(30分鐘) 一面完5分鐘開始,這個(gè)面試官讓我懷疑我是不是自帶了逗逼屬性,我一說話他就笑,可能我說話有時(shí)候是有點(diǎn)逗,當(dāng)然也是因?yàn)橛X得自己肯定過不了二面,所以特別放的開(再次笑哭),然后整個(gè)面試就很和諧,面試官也笑了全場(chǎng),本來他剛開口的時(shí)候還是很嚴(yán)肅的,所以啊,面試千萬(wàn)別慌,面試官也想以后有個(gè)談的來的同事嘛,對(duì)吧=。= 這輪面試我面完都覺得肯定過不了,總共問了那么幾個(gè)問題我好幾個(gè)沒答上來,所以呢,我覺得能過還是因?yàn)榍懊骓?xiàng)目聊的不錯(cuò)。 開始還是先說項(xiàng)目,然后又是一面那一套,但是這個(gè)就問的很細(xì)了,我說完之后就開始問很多細(xì)節(jié)的東西,比如分布式session怎么實(shí)現(xiàn)的,然后redis里面放了什么東西啊,核心邏輯怎么實(shí)現(xiàn)的啊,BLABLABLA,項(xiàng)目聊了20分鐘,這時(shí)候說下一點(diǎn)感悟,就是聊的時(shí)候一定讓把你解決問題已經(jīng)學(xué)習(xí)的過程體現(xiàn)出來,這些可能是面試官希望看到的。包括遇到問題時(shí)你的思維方式等等,項(xiàng)目這東西就不多說了,因?yàn)槊總€(gè)人的項(xiàng)目不同,自己根據(jù)自己的項(xiàng)目準(zhǔn)備好可以吸引到面試官的點(diǎn)就ok了。下面就是問的幾個(gè)問題了。 因?yàn)榇蟛糠謺r(shí)間在聊項(xiàng)目,后來也沒問幾個(gè)問題。 1、hashmap的原理。 結(jié)合著源碼blabla,然后包括1.6時(shí)Entry,1.8是Node 還有對(duì)key的hashcode1.6和1.8用的算法不一樣啊之類的blabla,說了一通,什么fail-fast機(jī)制啊啥啥啥的。 2、哪些方法實(shí)現(xiàn)線程安全。 synchronized,reentrantlock,volatile,然后重點(diǎn)說了下volatile在某些情況下可以實(shí)現(xiàn)線程安全,然后就把面試官注意力往volatile上引,因?yàn)関olatile這個(gè)專門看了一下,果然,面試官馬上問了volatile。 3、volatile是實(shí)現(xiàn)了什么功能呢? 然后就把自己看得亂扯了一通,比如volatile修飾匯編時(shí)會(huì)在修飾字段前加LOCK字段啊,內(nèi)存屏障啥啥啥的扯了一通,就是想讓面試官覺得對(duì)某些方面了解還是蠻深的。 4、如果想實(shí)現(xiàn)一個(gè)線程安全的隊(duì)列,可以怎么實(shí)現(xiàn)? JUC包里的ArrayBlockingQueue 還有LinkedBlockingQueue啥的又結(jié)合源碼說了一通。 5、說說http報(bào)文的header里面有什么? WTF!一臉懵逼,沒怎么看網(wǎng)絡(luò)這部分,腦子一片空白,直接說記不清楚了。 6、給了一個(gè)類加載時(shí)先后順序的問題,給了段代碼,讓你寫出輸出結(jié)果,就靜態(tài)代碼段啊構(gòu)造函數(shù)之類的加載順序。 這個(gè)我也是給跪了,我寫對(duì)了結(jié)果,但是給他解釋為什么的時(shí)候解釋錯(cuò)了,把順序記反了,還是自己沒記清楚。。。 7、JVM的內(nèi)存分區(qū) 五個(gè)分區(qū),然后扯了扯垃圾回收算法,主動(dòng)扯,然后就被打斷了,就說不用說了。 8、數(shù)據(jù)庫(kù)的事務(wù)管理級(jí)別,默認(rèn)什么級(jí)別,會(huì)出現(xiàn)哪些問題 四個(gè)級(jí)別,默認(rèn)我說是讀已提交,但是其實(shí)MYSQL的默認(rèn)應(yīng)該是可重復(fù)讀,這個(gè)我也是回來才發(fā)現(xiàn)的。然后就說了默認(rèn)讀已提交會(huì)出現(xiàn)不可重復(fù)讀和幻讀。 9、最后讓寫個(gè)SQL語(yǔ)句。 我當(dāng)時(shí)是懵逼的,我直接給他說我平時(shí)寫sql都是搜索引擎查著語(yǔ)法寫,然后他說沒事兒,又不讓你全寫對(duì),你咋想的咋寫就行了。然后大概SQL應(yīng)該是個(gè) select。。SUM()。from A left join B on A.id=B.id Where ...ORDER BY ... 然后我當(dāng)時(shí)是真記不清了。。sql寫的少,然后把left join on 寫成了left join where 然后最后order by 也忘掉了。。 問完他讓我前臺(tái)等等結(jié)果,我以為掛定了,畢竟真的答的爛。結(jié)果沒想到竟然給我過了。 所以還是。。。緣分啊。。。 三面(HR 30分鐘) hr面沒啥好說的,政治正確,表現(xiàn)出強(qiáng)烈的想來網(wǎng)易,想來杭州,并且表現(xiàn)我很希望穩(wěn)定的在網(wǎng)易待著的意愿,聊唄。不過我這hr比較嚴(yán)肅,男hr,全程撲克臉,搞得我壓力蠻大的,不過還是聊了半個(gè)小時(shí),然后聊完下午三點(diǎn),打車西湖坐個(gè)船,杭州之旅圓滿。
面試官問的面試題: 編程語(yǔ)言基礎(chǔ)(C++、Java) + 算法題(中等難度) + 數(shù)據(jù)結(jié)構(gòu) (樹、鏈表為主)+ 計(jì)算機(jī)網(wǎng)絡(luò)(TCP/IP相關(guān)) + 操作系統(tǒng)(進(jìn)程和線程、內(nèi)存調(diào)度)+ 項(xiàng)目經(jīng)歷