1. 程式人生 > >java程式設計師|超詳細面經(四面一總結),助你逆襲!

java程式設計師|超詳細面經(四面一總結),助你逆襲!

面經預告:阿里、網易、京東、多益網路。

面經不同的人問的問題很可能不同,不能押寶在這裡,不過幫助大家用來做模擬還是不錯的~以下按收到offer順序列出

 

多益網路-平臺研發

挺神奇的,流程上寫的就一面我還以為寫錯了,連hr面都沒有。。。

一面:8-17

自我介紹

簡單介紹一下你最熟悉的專案 a) 主要做了哪些工作 b) 有做相關優化嗎——(為了裝逼說了很久)

編譯型語言和解釋型語言解釋一下

手撕程式碼:輸入陣列,輸出陣列的所有子集 a) 說一下思路(因為涉及到回溯,說的有點亂,不知道那邊聽懂沒) (讓5-8分鐘寫虛擬碼,我因為leetcode寫過原題,寫太快而且寫了完整的程式碼。。不知道那邊會不會懷疑我作弊)

資料庫增刪改查語句說一下 a) 不用那麼具體,說關鍵字就行

const知道嗎——(知道是c++的常量關鍵字,不過不太會c++,熟悉的是java) a) 最熟悉的兩門語言是哪兩個 b) Java和python的區別——(這裡扯了很久,還扯了比賽的事)

什麼時候適合使用連結串列

說一下指紋識別的大概流程

最近有在做什麼專案——(可能是能不能來實習的試探)

對加班怎麼看待

今天就到這了,你基礎很紮實,知識面也很廣,過幾天會有hr聯絡你談其他的事情

Q——後面沒有別的面試了麼? A——這應該是最後一面 Q——剛才是口頭offer嗎? A——算是吧

 

網易-考拉-java研發

筆試之後,報銷去杭州的路費,22號的面試,一共三面,一天面完,面完後關注的公眾號會推送面試結果。

一面:8-22

先自我介紹吧

最熟悉的專案介紹一下(會挑某個問題細挖)

看你對jvm很熟悉是吧,介紹下java記憶體區域分配吧

那JMM知道嗎,介紹下

垃圾回收的演算法有哪些

為什麼要分代收集

Minor GC過程解釋一下

你剛剛說你對juc包比較熟悉,有用過執行緒池嗎?怎麼用的

說一下執行緒池有哪些引數

執行緒池的底層原理

死鎖的原因,寫一個簡單的會發生死鎖程式

對開源框架熟悉哪個?

看過原始碼是吧,那從原始碼層面解釋下AOP

資料庫平時用的哪個

MySQL引擎介紹一下

Inodb的索引資料結構?畫一個簡單的看看,說一下和b樹的區別

使用索引要注意哪些問題你知道麼

你說到最做字首,那我考考你,對ABC三列建立索引,把能用到索引的條件都列出來。 這裡我確定是“最左不能丟,中間不能斷”,但是面試官一口咬定AC也能用,我心裡想能是能用但是隻能用A的,不能使用AC,但是沒辦法,僵持了一下後只能順著大佬說。

MySQL怎麼實現分散式鎖的

選課系統需要那些表,你簡單寫一下

加入課程的得分那又怎麼設計

現在再寫一個sql,找出某一個課程中得分最高的學生名字

面對大資料資料庫層有哪些方法

你自己試過分庫分表麼

現在一個業務需求:考拉要發行一個優惠券,但是發行量很大,需要分庫,每張券都有自己的id和對應客戶id,現在讓你來設計,要怎麼分庫

http訪問流程說一下

tcp三握四揮

演算法方面,排序你知道哪些

把歸併排序寫一下

好了,不錯,去大廳休息下等下hr會通知你

現在一個業務需求:考拉要發行一個優惠券,但是發行量很大,需要分庫,每張券都有自己的id和對應客戶id,現在讓你來設計,要怎麼分庫

http訪問流程說一下

tcp三握四揮

演算法方面,排序你知道哪些

把歸併排序寫一下

好了,不錯,去大廳休息下等下hr會通知你

回答都不錯,不過這一面問的是真的多,一個小時整,。。 所以估計這面分數還可以,但是也導致下午的二面直接開啟困難模式 (中午本來想去見識下豬場食堂的,但是。。人氣太火爆,人是真的多!一個視窗排隊十幾二十米絕不誇張,於是我默默回到大廳啃奧利奧了。。

二面:8-22

自我介紹

熟悉jvm是吧,有沒有自己調優經歷

會用哪些jvm kit

如果一個linux線上專案經常發現full gc ,你會怎麼樣快速定位?——會一點

Jvm垃圾回收器有哪些

各有什麼區別

他們怎麼搭配的

G1的工作原理解釋一下

它的gc root 有什麼不同的地方

每個region是怎麼知道自己是什麼代的

年輕代的存活物件是怎麼移動到老年代的

不是問晉升條件和記憶體擔保,就問你怎麼移過去的——不會

那CMS熟悉麼,說一下為什麼他採用標記清除還是1

看你資料庫也挺熟(看到上個面試官提過的問題),你解釋一下mySql幾個引擎的區別

事務隔離級別有哪些,其中可重複讀是怎麼實現的

Mvcc的底層原理又是什麼

知道Redis麼,介紹下一般用它做什麼

他常用的資料結構以及他們的區別

遠端過程呼叫框架知道哪些

說一下呼叫過程

說一下dubbo原理——不會

http熟悉是吧,https的優化

http頭中的cached屬性解釋一下

去大廳等一下吧,hr等會兒會通知你

二面面完之後心裡很虛,這就是壓力面哈,問的是真的深和偏,因為好幾個問題確實不太會,以為自己gg了,然後出去後發現手機通知過了,總算杭州沒白來,休息會兒等待hr面了。

三面+hr面:8-22

這一面是主管和hr一起的,前面主管問技術,然後就走了?hr接著問

主管:

自我介紹

依次簡單介紹下你的實習和專案(中間偶爾有細問)

介紹下你的比賽

如果一個linux線上專案經常發現full gc ,你會怎麼樣快速定位? (媽耶,這不是上一輪剛問過麼。。。我打算回去再查來著,吐血。。)——把知道的說了

系統負載過高怎麼定位

這個問題程序不是java的又怎麼辦

看你專案都是單節點的,會分散式的麼——不太會

最近在學什麼技術

有什麼想問我的麼

Hr:

瞭解考拉麼——(每個公司面試前我都有做足功課)

這麼瞭解呢,那你也知道對於一個上升期間的部門,加班是無法避免的,你對995怎麼看?——我!喜!歡!

你老家哪裡的,家裡哪些人

家裡人知道你要來杭州麼

第一次來杭州麼,喜歡杭州麼

平時怎麼學習的

對工作氛圍有什麼要求麼

你有什麼要問我的麼 ——能委婉地告訴我的面試情況麼——emm,,沒什麼大問題,回去等通知吧

早上10點到的,出來都晚上6點了,也不知道那算不算口頭,擔心也沒用晚上就和同行小夥伴去西湖轉了一圈第二天就回西安了。

 

程式猿面試交流社群:839462919

 

京東-京東雲-java研發-java研發

一面:8-7

一共40分鐘,面試官是小姐姐,聲音好聽說話很溫柔,過程中會時不時讚許你,讓你更加自信。(貌似說是免了一輪簡歷面)

1. 介紹一個你最熟悉的專案; (1)專案中使用的什麼框架; (2)解釋一下這個框架; (3)這個專案中遇到的最大的困難,怎麼解決的;

2. 資料庫索引有哪些; (1)他們有什麼區別;(2)索引採用的是什麼資料結構;(3)B樹和B+樹的區別;

3. 有沒有對資料庫做過優化,列舉一下;

4. Hashmap與hashtable之間的區別; (1)談一下對執行緒安全的理解;(2)Synchronized的鎖優化機制; (3)樂觀鎖解釋一下;

5. Jvm的各個記憶體區域解釋一下;

6. 垃圾回收機制解釋一下;

7. 有哪些垃圾回收刷演算法,他們有什麼區別;

8. 演算法中,快排和歸併解釋一下; (1)他們的演算法複雜度分別是多少;

9. 瞭解哪些開源框架? (1)怎麼學習他們的? (2)看過哪些原始碼

10. 最近有在看什麼數,平時的學習方法;

11. 你對java各個版本瞭解很清楚是專門有去了解過嗎?

12. 我問完了,你有什麼想問的?

二面:8-20

1.自我介紹

2.說一下你的競爭力在哪

3.說一下你覺得技術含量最高的一個專案或者實習: Balabala..

a) 打斷一下,mvcc的解釋一下;

b) 怎麼實現的;

c) 你知道哪些資料庫引擎,說一下區別;

d) 繼續剛才你說的; Balabala..

a) 打斷一下,索引是怎麼知道哪些索引需要優化的;

b) 有沒有更好的方法;

c) Mysql日誌有去看過嗎;——沒

d) 繼續你剛才說的; Balabala..

a) 打斷一下,你還知道哪些前端攻擊,都介紹一下;

b) 他們的防禦方法知道嗎;

c) 會不會實現一個前段框架來判斷前端頁面可能存在的攻擊;——不會

d) 繼續你剛才說的; Balabala..

a) 打斷一下,你說的資料庫切換是動態的嗎;

b) 那現在給你一個需求將你專案中的資料庫切換改成動態的切換(不需要重啟服務);——不會

c) 繼續你剛才說的; Balabala..

4. 打斷一下,你說一下執行緒安全問題好了(估計是覺得我專案太low了);

a) 為什麼要注意執行緒安全;

b) 打斷一下,我說得是底層原理方面,也就是JMM那;

c) JMM8個原子操作說一下;

5. 知道哪些鎖優化機制

a) 除了鎖升級還有嗎?

6.知道分散式中介軟體嗎

a)Redis的AOF和RDB解釋一下;

7. 我問完了,你有什麼想問的麼?

Q:其實我基礎比較好,很多面試官您都沒問到。。

A:哦,我的問題已經問完了。

Q:呃、、聽說25號就結束所有流程是嗎?

A:是的。

Q:請問菜鳥網路對於應屆生的要求,是更偏向基礎還是更偏向應用?

A:emm。。。基礎!

掛完電話心裡一陣發慌,覺得是不是gg了,糾結了半個多小時問了下內推學長,說已經到三面了,才緩過來。。。

三面:8-24

對方電話先自我介紹是主管

自我介紹

專案介紹(問了蠻久)

Java垃圾回收解釋下——(問的這麼寬,那我就隨意發揮了)

打斷下,你看過原始碼是吧?那就問下一個

Java記憶體區域解釋下

有哪些常量池

方法區在不同版本有哪些實現

類載入過程簡單說一下

類能否多次載入——這裡說明下,可以使用熱載入實現多次載入

類載入器有哪幾種

雙親委派模型解釋下

能不能破壞,怎麼破壞

findClass和loadClass有何區別

執行緒安全解釋一下

Java有哪些方法解決這個問題

Volatile解釋一下

Jmm解釋一下

你對juc包很熟悉是吧,裡面有哪些東西大概說一下

同步器主要有哪些,分別解釋下

CountDownLatch和CyclicBarrier的區別,舉個例子說一下

Semaphore你也看過原始碼是吧,那你解釋下它的底層原理

集合類你常用哪些,說一下ArrayList底層

它和Map是同族麼,那HashMap的底層原理解釋一下

那你知道它和HashTable的區別麼

工程上常用另外一種類來取代HashTable你知道麼

說一下concurrentHashMap底層

可能存在什麼問題,哦,你還知道1.8版本的,那你解釋一下它用的CAS機制

它可能導致ABA問題,你知道什麼是aba麼,有什麼解決方法

他還可能導致別的什麼問題麼

執行緒池用過麼,說一下各個引數的含義

執行緒池的原理

java執行緒的各個狀態——這裡強調一下java執行緒的狀態有6種和作業系統的5大狀態不一樣,大家不要被網上無腦轉載的部落格給毒害了。

那作業系統的程序和執行緒有什麼區別,通訊方式各有哪些

Spring-AOP解釋一下,bean生命週期呢,這你也都看過原始碼是吧,那就問資料庫吧

MySQL幾個引擎區別

事務隔離哪些

Mvcc介紹

嗯,今天就到這裡吧,你的話應該沒什麼問題了,你能提前來實習麼?

有什麼想問的麼?

get主管的口頭offer,很開心~但是面主管之前接到一個電話說西安有有現場面也得去參加下,但是依然有點擔心現場面發揮不好把口頭offer泡湯了。(從這一面可以看出懂原始碼的重要性)

四面:8-26

四面和hr面都是那天的現場面。

由於回來的時候也接到hr的口頭肯定,所以回來就開始躺屍了,過了好久才總結,很多問題都給忘了。。。。這裡主要說幾個印象深的

自我介紹

實習、專案介紹(+細問)

正常挖基礎,挖了蠻久

手寫快排

手寫一個死鎖程式

一個連結串列,已經排序如何快速定位到中位數

一篇文章獲取出現次數最多的字母

如果是單詞呢

如果是一本書呢

如果是要在上億個號碼中找出出現最多的呢,說出你的思路,把你能想到的方法都說出來

秒殺系統怎麼設計

最近在看什麼技術書(面阿里當然說阿里出的那幾本書,其實是真的在看,很不錯:李智慧老師的《大型網站技術架構》、許令波老師的《深入分析Java Web技術內幕》)

說一個你可能不太舒服的問題,這個問題不算面試內,看得出你很聰明也很努力,但是你也要知道相對於這些東西,那些計算機出生的研究生們可能比你基礎要更加紮實一些,比如計算機內部的原理什麼的,你有考慮過這個問題麼?

你有什麼想問我的麼?

面完後,做到一邊等hr面,問一下旁邊人,說好幾個人要麼只免了hr要麼只免了技術面就都讓回去了。。。心想,這麼猛麼,剛才回答的還可以吧,應該會讓面hr的吧。。。

hr面:8-26

也忘了很多了,主要是日常聊天,小姐姐全程微笑,聊得很愉快,聊得很多,得有40多分鐘,也說幾個印象深的問題吧

自我介紹

實習、專案介紹(主要了解開發規模)

比賽介紹(因為是隊長,所以問了下任務分配)

日常聊天

你瞭解菜鳥網路麼——(甚至把我報的雲倉部門都說了個清楚)

哇,你是有親戚朋友在這個部門麼

那你知道阿里的一些不好的傳聞麼,你有什麼看法,比如關於我們hr的你知道麼——2015年的“擁抱變化”

看不出你對阿里的價值觀還了解這麼多,平時有關注阿里的技術發展麼

平時有自己的一套學習方法麼

自己覺得自己是怎麼樣一個人

周圍人,同門,隊友怎麼評價你的

家裡哪些人

和父母關係怎麼樣

知道父母生日麼

父母知道你想來阿里麼,父母怎麼評價阿里的

有女朋友麼

怎麼分手的方便說麼

去過杭州麼,評價一下杭州

目前手上有哪些offer

有什麼想問我的

問完後貌似除了一個在面技術就剩我一個了,我連著面了兩面的時間他們一共就一個技術專家和一個hr就面完了其他10多個人麼。。。。他們讓等了一下,然後另外一個男hr告訴我回去等結果,最遲9月第一週出結果,然後拍我肩膀小聲說我應該沒什麼問題,不要太擔心,再見~

 

程式猿面試交流社群:839462919 

 

京東-京東雲-java研發

當時已經和阿里內推學長確認過已經在錄取名單裡,所以後面都沒記,現在才總結(已經過去大半個月了),不過京東問的問題都很基礎,沒什麼特別的問題。

一面:

8月底貌似 全程基礎,沒什麼特別的

二面:

9月2號 除了基礎問了幾個特殊點的

快速判斷一棵樹是否是AVL

將一棵樹從右邊看過去的節點依次從上到下輸出

Tcp握手成功後,如果一方一方宕機,沒有主動請求關閉,連線會一直儲存麼? 也都算常見,所以也都答上了

hr面:9月4號

正常聊天,最後有問一句你能不能一直實習到明年畢業?

——不能(是個研究生都還要寫論文呢姐,。。這是故意要婉拒我?)

當天晚上收到offer

總結

以上就是我的秋招總結,說短也不短,差不多一個月,不過由於家裡有事提前結束相對於其他繼續收割的老哥們確實短了點。

最後選擇的話,一直想去阿里,周圍人也都知道,選擇了自己的執念,希望未來能一起進步,互不辜負。

一個好的結果 = (前期的努力 + 面試和筆試的發揮)*運氣, 既然運氣不能自控,那就好好把握自己能控制的,越努力越幸運不是麼。

前期努力和筆試沒什麼好說的了,面試很多人會緊張導致發揮不好,加之有些壓力面文件問題很偏很容易就奔潰了導致後續問題都受影響。

在這裡教大家一個訣竅——“把這場面試當作和朋友的一次飯後的技術交流”(覺得壓力大的可以事先想象下面試官當年也是和你一樣走過來的普通人,有喜怒哀樂,也被懟過,也出過醜。。。。逃)

最後再寫個插曲,就是阿里四面現場最後那個問題“ 說一個你可能不太舒服的問題,這個問題不算面試內,看得出你很聰明也很努力,但是你也要知道相對於這些東西,那些計算機出生的研究生們可能比你基礎要更加紮實一些,比如計算機內部的原理什麼的,你有考慮過這個問題麼 ?”

我的回答:

有,既然當初決定走這條跨專業的路,就沒想過要後悔,您也看到了,在後臺開發上我並不覺得我比他們有差,甚至我的熱情和鑽研精神讓我在某些深層的原始碼理解上更加深刻。 有一句話,我一直十分認同,也把它作為我的座右銘,“沒有絕對正確的事情,你能做的就是更加努力,這樣才能讓一切變得都是最好的安排!” 這並不是哪位名人留下的,是一位高中生當年高考失利後在日記本留下的一句話,後來他珍惜每一天, 從一個普通二本學校成功考研,讀研後認清形勢後決定跨專業找工作,伴隨一路汗水與收穫,所以現在他能自信地坐在您面前。

 

一次失敗並不代表什麼,關鍵是你失敗後你做了什麼,這代表了未來的一切。

“ 沒有絕對正確的事情,你能做的就是更加努力,這樣才能讓一切變得都是最好的安排! ”

這句話也送給大家,祝大家一切順利,共勉!