2020屆春招實習面經(含阿里、騰訊、網易、京東、華爲、美團、快手、字節跳動)

前言:
之前發表了一篇實習複習的內容:

史上最全!20/21屆春招/秋招 實習/校招 JAVA面試全攻略!複習回顧這一篇就夠了!

在這篇文章詳細說了該如何去複習,也答應各位把面經整理一下,但是因爲入職的事情耽擱了,現在整理出來回饋給大家!

PS:樓主只收到網易、快手、華爲三家offer,也不是所謂的offer收割機。只是提供一些個人經驗,這個平臺幫了我很多,前人栽樹後人乘涼,共勉!

美團

一面

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.反問環節

PS:第一次面試,有點緊張,知識差不多都會,但是答的思路並不通暢。但是一個月之後收到感謝信。。。


快手(已offer)

一面

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

  • 單例模式,要求線程安全、懶加載(我寫的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:這個面試明顯比上一個氣場要強,問的問題比上一個面試官深,雖然基本上都答上了,但是面試官會對一些平時不太注意的細節加以詢問。整體的流程比較嚴肅。

HR面

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

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:在數據庫場景題上答的不好,其他的差不多答上,最後因爲部門名額沒了,收到感謝信了


【Java 面試那點事】

這裏致力於分享 Java 面試路上的各種知識,無論是技術還是經驗,你需要的這裏都有!

這裏可以讓你【快速瞭解 Java 相關知識】,並且【短時間在面試方面有跨越式提升】

面試路上,你不孤單!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章