總的來說,我覺得是一個比較正常的公司,不會問特別奇怪的問題,除了項目上我和他有點糾纏不清,其他上面會就是會,不會就是不會。
電面(一面)
Java基礎(chǔ)(主要是多線程)
- HashMap怎么實現(xiàn)的?
我問他要說1.7還是1.8的,他說那你說一下區(qū)別吧。我覺得我可以說的更好,下次就直接說,不問了。到關(guān)鍵處直接說是1.7是用什么,1.8是用什么。 - ConcurrentHashMap呢
這個我說錯了,其實這個沒有用樂觀鎖,是使用將HashMap分了幾個塊進(jìn)行加鎖的,這樣能提高并發(fā)性。 - 那ConcurrentHashMap使用get的時候需不需要加鎖?
答錯了,噗。 - volatile了解嗎?
volatile是表示可視化,每次修改之后其他線程立即可見,主要原因是volatile每次修改之后會先同步到內(nèi)存,然后每次讀取的時候就會從主內(nèi)存刷新。還有一點就是可以避免語句的重排序(編譯優(yōu)化將兩句不影響其他的語句進(jìn)行重排序),實現(xiàn)這個的方式是volatile每次在寫入的時候都會有一個內(nèi)存屏障。 - volatile是原子性的嗎?
不是的。原因是從工作線程中取得volatile的值雖然是原子性的(每次都會在主存中取得最新的值)壓入到棧中,但是當(dāng)進(jìn)行運(yùn)算的時候,可能已經(jīng)被其他線程改了,這時候就不能保證了,比如i++。 - 那什么能實現(xiàn)原子性的i++?
答曰ActomicInteger和直接加鎖。 - 那ActomicInteger是怎么實現(xiàn)的?
就是compareAndSet。
8.還問了compareAndSwap怎么實現(xiàn)?那不和compareAndSet一個道理? - 線程池用過嗎?
用過Executors的newFixedThreadPool(). - 為什么用這個?參數(shù)是怎么設(shè)定的?
CPU數(shù)n+1 看書的
JVM
GC了解嗎
線程的狀態(tài)了解嗎
算法
快排
ngnix,開源框架,redis你怎么一個都不懂?
現(xiàn)場面(二面)
現(xiàn)場二面的時候先寫了一下判斷一棵樹是不是二叉樹的子結(jié)構(gòu)。然后等了兩個半小時,終于到我。
面試官看完我寫的題好像也沒有評論。然后開始看我的簡歷和之前筆試的成績,隨口問我一面有沒有問HashMap,我說問了,然后告訴他問的是什么,我怎么回答的,感覺面試官比較滿意吧。
-
問我記不記得選擇題哪一道題做錯了,我說不記得了,有些不會就是蒙(是不是錯別字啊)的,面試官笑了說我倒還挺實誠
- 問我什么是最優(yōu)置換算法(估計是筆試做錯的題),我說不知道。然后他就啟發(fā)我,問我如果10G內(nèi)存,有三個進(jìn)程,分別占用2G,3G。然后問我如果有個6G的進(jìn)程要運(yùn)行,能不能加載到內(nèi)存。我說可以(猜的),我說可以置換出來。后面他又補(bǔ)了幾句,告訴我這就是最優(yōu)置換。
-
項目相關(guān)。主要是和我探討我簡歷里面心得體會的部分。
- 既然索引能保證查詢快,那當(dāng)時是怎么發(fā)現(xiàn)查詢慢的。主要是可以通過慢查詢和Explain語句查看。還有一個是什么我當(dāng)時記不得了,就給他大概說了下,總之就是可以看表里面建的所有主鍵索引什么的,我發(fā)現(xiàn)數(shù)據(jù)庫沒建立索引。
- 怎么進(jìn)行模塊劃分。我就說了下經(jīng)常修改的不要和不變動的放在一起,測試和修改都很麻煩。他可能覺得我說得對,點了點頭。
- 異常都有哪些,怎么處理。
我還主動講了一下系統(tǒng)的架構(gòu),我為什么要做這些(避免被甩鍋)和避免被甩鍋的。感覺面試官也表示理解吧。
2G內(nèi)存,100G磁盤,10G數(shù)據(jù)怎么排序。我不會,面試官給我講了下,就讓我現(xiàn)場二面了。
現(xiàn)場面(總監(jiān)三面)
- 講講自己的項目。我講的就是剛才那一套。問的很細(xì),包括傳感器是什么樣的,網(wǎng)關(guān)和節(jié)點怎么供電之類的。
- 你用心跳包什么的如果服務(wù)器宕機(jī)或者socket斷開連接了怎么辦。我沒有回答的很好,他大概有點不滿意,就直接換問題了。
- 為什么TCP是三次連接。我就給他講為什么兩次不可以。結(jié)果他說沒講清楚,其實我覺得好清楚。所以我又講了一遍,他聽明白了,覺得我對TCP理解的比較好。問我為什么了解這些,我說主要還是怕被甩鍋。
- 建立索引相關(guān)。包括怎么發(fā)現(xiàn)查詢慢和沒有建立索引和B+樹索引的優(yōu)勢。
- MySQL引擎的區(qū)別。我講MyISAM不支持事務(wù),而且不支持外鍵。他問我為什么MyISAM為什么不支持事務(wù),我說我覺得是因為MyISAM效率更高。又追問我為什么,我說是什么我自己都忘了,但是依稀記得事務(wù)的建立是需要成本的。
- 什么是事務(wù)。這個之前給楠哥講過,很簡單。
- 問一些家庭情況,爸媽是不是不想讓唯一的女兒出去。
- 鄙視一下項目不行。
- 質(zhì)問我為什么不問遠(yuǎn)景能源是干什么的。
HR面
- 為什么把教育背景放在最后。鄙視一下我的本科教育背景。但是我強(qiáng)調(diào)自己在每個學(xué)校成績都是前茅。
- 如果BAT給你Offer,你怎么選擇。
- 對自己的人生規(guī)劃
- 生孩子的話人生怎么規(guī)劃
- 家庭和事業(yè)的平衡
- 如果周圍人都比你牛你能承受嗎。
體會
一定要想清楚自己的優(yōu)勢,然后每個問題都要表現(xiàn)自己的優(yōu)勢,而不是用官話套話告訴面試官。如果每個問題都能讓面試官有這樣一種感覺,那么他就不會為難你,哪怕有些問題沒有答上來(也就是說,技術(shù)面也會帶有主觀感覺)。