java大廠面經-阿里騰訊、網易美團、京東、華爲、快手、字節全在這裏了

前言

在這篇文章詳細說了該如何去複習,以前也答應各位把面經整理一下,可是由於入職的事情耽擱了,如今整理出來回饋給你們!java

美團

一面

0.自我介紹
1.問項目(項目詳細介紹、用到什麼技術、有什麼優化)
2.線程池?建立線程池須要哪些參數?是否會存儲內存溢出?
3.經常使用的數據結構?
4.棧跟隊列的區別?
5.編程題:使用兩個棧實現隊列的功能
6.mysql的b樹和b+樹?
7.聚簇索引和非聚簇索引?
8.索引的優化,索引的失效?爲何不是索引建的越多越好?
9.線程安全的問題?(這個問題我並無聽懂)
10.建立線程須要建立哪些資源?線程有哪些狀態?
11.線程的start方法和run方法?
12.線程之間通訊有哪些方法?進程之間通訊有哪些方法?
13.線程和進程之間的區別?
14.tcp和udp的之間的區別?
15.drop、truncate、delete之間的區別?
16.javaGC有哪些算法?常見的垃圾回收器?
17.java內存區域?
18.何時會進行young GC?何時會進行full GC?
19.反問環節python

快手

一面

0.自我介紹
1.ApplicationContext這個接口?有什麼用?繼承自什麼接口?
2.springboot的啓動流程?
3.三道代碼題:mysql

  • 單例模式,要求線程安全、懶加載(我寫的DLC的模式,基於這個又問了一下volatile和synchronized的原理和爲何在這裏用)
  • 把一個長度爲 n 的數組分紅 k 段,讓每段和的最大值最小。(這道題思路跑偏了,面試官說複雜度過高)
  • 每間隔m個元素反轉一次鏈表(1-2-3-4-5-6,間隔2的反轉:2-1-4-3-6-5)

PS:一面就三道編程題把我弄得有點蒙,面試小哥說時間不夠了,我給你安排二面吧...面試

二面

0.自我介紹
1.作項目遇到的問題?
2.單線程改成多線程會產生什麼問題?(由於我項目中使用了多線程優化和線程池)
3.線程池的參數?
4.線程池的內存溢出是什麼狀況?
5.阻塞隊列介紹一下?加鎖的狀況?
6.寫過關於信號量的東西嗎?(面試官對我把阻塞隊列中底層源碼lock.newCondition做爲鎖表示懷疑,因此問出來了這個問題)
7.線程池的啓動流程?
8.線程池的過時時間這個參數,指的是什麼?線程池的過時時間到了以後,線程是如何被操做的?
9.OSI七層模型?
10.TCP和UDP的區別?
11.三次握手協議?
12.hashmap的原理?hashcode和equals的關係?hashcode相等,equals是否相等?
13.hashmap爲何是線程不安全的?
14.hashmap的尾部遍歷?(沒答上來)
15.數據庫的優化過程?
16.explain的查看哪些字段?(答的不完整)
17.數據庫爲何使用B+樹而不是使用B樹?
18.索引存儲的位置?磁盤仍是什麼?
19.B+樹的葉子有什麼特色?爲何B+樹適合範圍查詢?
20.什麼是回表操做?如何避免索引的回表?
21.什麼狀況的會用到鎖?介紹一下java中的鎖?
22.synchronized的鎖的底層實現?
23.鎖升級理論?何時會轉化爲重量級鎖?
24.算法題:給定數組,一個給定值,尋找數組中兩個數字之和爲指定值。(使用了暴力解法,面試問了一下優化方式,沒答上了)
25.反問環節算法

PS:這個面試明顯比上一個氣場要強,問的問題比上一個面試官深,雖然基本上都答上了,可是面試官會對一些平時不太注意的細節加以詢問。總體的流程比較嚴肅。spring

HR面

正在騰訊的筆試,打來了電話,說詢問一下狀況。。。sql

1.實習經歷
2.實習項目
3.項目的解決思路
4.在實習公司如何學習
5.對應聘部門的瞭解
6.反問數據庫


阿里

一面

1.自我介紹
2.在學校的GPA,在學校有沒有參加ACM和數學建模
3.你我的的博客地址(我寫了本身常常寫博客)
4.閱讀過的技術書籍,遇到問題怎麼去查找
5.hashmap的基本原理
6.處理hash衝突的方式
7.jdk1.8使用treemap來處理哈希衝突,你是怎麼理解的?
8.arraylist和linkedlist的區別
9.增長刪除線性表的第一個元素,使用哪一種數據結構
10.JVM的內存結構
11.新生代和老年代的GC算法
12.內存泄露是什麼?什麼狀況出現?
13.HTTP常見狀態碼
14.HTTP和HTTPS的區別
15.mysql提供哪幾種索引
16.單庫數據庫知足不了性能,如何處理
17.分庫分表的水平和垂直切分
18.Redis的分佈式鎖
19.什麼是公平鎖?什麼是非公平鎖?
20.常見的設計模式?
21.工廠模式使用場景
22.Linux命令:awk命名(分割符),查找指定列;pdm集羣找出文件
23.線程池的實現思路
24.反問:部門的主要內容、HC多很少、本身的不足編程

總結:基本上都答出來,Linux命令兩個都不知道,沒有考察編程,由於面試官說我筆試不是很好,因此沒考察,後面的會重點考察。設計模式

PS:而後就沒而後,今年阿里瘋狂刷KPI,我投的屬於比較晚的,截止到4.30號,仍是沒有消息,找內推人獲得的回覆是,面試官比較忙,而後我就主動結束了內推流程了。。。


騰訊

一面

1.懟項目
2.瘋狂懟項目
3.歸併排序
4.TCP爲何須要三次握手而不是二次握手
5.反問:部門是什麼,二面何時,部門的業務和語言
PS:這是PCG部門,部門的語言是go、python、java,我猜想這個面試官的主要方向不是java,沒有問我java方面的,問了30分鐘的項目,最後的結論是:項目太少、語言掌握太少。

一段時間以後就收到感謝信了(估計是語言不符)


網易(已offer)

一面

0.自我介紹
1.線程和進程的區別?
2.進程何時會從用戶態進入內核態?爲何須要引入用戶態和內核態?
3.什麼是守護進程
4.什麼是孤兒進程?什麼是殭屍進程?
5.進程的通訊方式?本機進程與進程使用socket的場景?
6.TCP和UDP的區別?
7.OSI七層協議?五層協議?
8.路由器和交換機分別位於哪層協議?
9.TCP保證可靠的機制?
10.TCP如何確認每次數據的正確性?
11.三次握手和四次回收?
12.TCP創建鏈接和斷開鏈接的狀態(time_wait和close_wait)
13.time_wait和close_wait大量存在的緣由和處理辦法
14.time_wait 的存在時間爲2msl,爲何?
15.數據庫索引?
16.數據庫索引優缺點?索引回表(結合着一個場景題)
17.何時數據庫索引失效?
18.隊列和棧的區別?平衡二叉樹?
19.AVL樹、B樹、紅黑樹的區別?
20.java面向對象特性?繼承、封裝、多態?
21.什麼是反射?使用場景?
22.jvm的內存區間分佈?堆和棧分別存儲的內容?
23.對象的方法參數存儲的位置?
24.gc回收、分代垃圾回收算法、年老代和年輕代回收?
25.hashmap在jdk1.8的變化?
26.項目介紹
27.項目本身作的優化
28.一致性hash算法、負載均衡
29.反問:部門狀況、語言、表現如何、多久能夠接到通知

PS:網易的招聘流程給個人感受很不錯,通知也很及時,問的也很基礎,面試感受比較好。

二面

0.自我介紹
1.項目相關?郵件存儲的方式(個人項目是郵件項目)
2.技術上的優化方案?
3.算法題:01二維數組,上下左右視爲連續,求二維數組中連續的最大1的個數。
4.java中支持併發的容器
5.hashmap的底層實現?get的操做過程?
6.從網頁上寫下一個URL,都有什麼過程?
7.https的非對稱加密?加密過程?
8.反問環節

PS:面試小哥全稱帶笑,算法題也是引導着很快就作出來了。

HR面

0.自我介紹
1.學校擔任過什麼職位
2.對網易的見解
3.平時玩遊戲嗎?玩什麼遊戲?
4.平時如何學習的?經過什麼方式去解決問題?
5.說一下你以爲你處理的最好的事情?
6.反問

PS:網易這個hr給個人感受就比較親切,開始的時候還自我介紹了一下,給我一種十分尊重的感受,而後交流的時候也十分輕鬆,就感受本身已通過了。。。


京東

一面

0.自我介紹
1.平時怎麼學?看過什麼書?
2.項目相關?幾我的作的?如何配合工做?功能模塊遇到的問題?如何優化?
3.實習時間?有什麼感覺?
4.上一個實習加班嗎?
5.hashmap如何遍歷?
6.hashcode和equals方法區別和做用?
7.new一個對象,java中有什麼操做?
8.類加載的過程?
9.泛型?泛型的兩個關鍵字介紹一下?(extends、super)
10.Spring的AOP,底層的兩種實現?(兩種動態代理模式)
11.sql語句,班級表,查出重名的人?
12.sql語句優化(慢查詢、explain)
13.網關接口,每一個接口被調用的次數(這個沒答出來,說了一下冪等性的惟一id的那種模式,面試官反饋好像能夠)
14.本身的平時愛好?
15.本身的缺點?
16.你有什麼要問的嗎?

總結:感受面試的比較倉促,而後就沒有了,也沒有感謝信。。。


華爲(已offer)

一面

0.自我介紹
1.算法題:整數數組,打印一個和最大的連續子數組,和相同的狀況下打印最長的狀況。
2.常見排序方法?
3.快速排序和冒泡排序的區別?是否穩定、時空複雜度?
4.遞歸方法的優缺點?
5.研究生實習時長?
6.實習期間的主要收穫是什麼?
7.反問環節?

PS:一面比較簡單。

二面

0.自我介紹
1.學校何時開學?
2.何時能來實習?
3.導師對實習的態度?
4.學校的位置?
5.對微服務架構的理解?
6.實習的目的?
7.會選擇留在華爲嗎?
8.使用過什麼數據庫?
9.有女友嗎?(emmmm)

PS:這個大佬是2004年碩士畢業進華爲的(我也不知道爲何二面會安排這種資歷的面試我。。。),這個大佬剛進華爲的時候被派到我學校附近工做,常常去我學校吃飯打籃球,就對我很親切,全稱聊的很開心,當天晚上就給offer了。


字節跳動

一面

0.自我介紹
1.抽象類和接口的區別?分別用於在什麼場景?
2.String 、Stringbuffer、Stringbuilder
3.重載和重寫的區別?
4.arraylist和linkedlist的區別?
5.爲何hashmap不是線程安全的?
6.線程的狀態?
7.wait和sleep的區別?
8.synchronized的類鎖和對象鎖?
9.線程池在CPU密集型和IO密集型?
10.youngGC和fullGC的觸發條件?
11.young區分爲哪些區,哪一個區滿了會觸發youngGC?
12.垃圾回收器?G1和CMS的瞭解?
13.java內存模型?
14.線程的同步和通訊?
15.volatile關鍵字?底層的機制?
16.float和double的浮點的精度運算?
17.數據庫場景題:

  • 創建聯合索引(a,b,c),而後在where條件是:a=xxx and b>xxx and c=xxx; 這個時候聯合索引是否被用到,(索引會在>或者<中止。)
  • 索引不變,where條件是:c=xxx and b>xxx and a=xxx;索引是否被用到(這個where條件跟第一個是一致的,數據庫會進行優化。)
  • 表並不存在索引,查詢條件是where a=xxx order by b;這個時候應該如何創建索引?(創建一個ab的聯合索引,會先過濾a索引,在排序b索引)

18.樂觀鎖和悲觀鎖?
19.spring的初始化的流程?
20.Redis的數據結構?
21.Redis的分佈式鎖?
22.Redis的哨兵機制?
23.消息中間件使用過嗎?
24.編程題:兩個單向鏈表進行加和,例如1->2->3->4,另外一個是3->4,返回一個鏈表1->2->6->8;不能夠遍歷轉出數字直接加。。。

PS:在數據庫場景題上答的很差,其餘的差很少答上,最後由於部門名額沒了,收到感謝信了

最後

對於大廠面試,我最後想要強調的一點就是心態真的很重要,是決定你在面試過程當中發揮的關鍵,若不能正常發揮,極可能就由於一個小失誤與offer失之交臂,因此必定要重視起來。另外提醒一點,充分複習,是消除你緊張的心理狀態的關鍵,但你複習充分了,天然面試過程當中就要有底氣得多。上面的面試題以及答案我都整理成了一份文檔,能夠關注個人公衆號:前程有光免費獲取!你們看完有什麼不懂的也歡迎私信問我!

相關文章
相關標籤/搜索