2020 華為|字節(jié)|騰訊|京東|網(wǎng)易|滴滴面經(jīng)分享(6 個 offer)
本文是一位讀者的面經(jīng)分享(最終選擇了騰訊),封面為讀者本人。我對文章進了重新排版。

每個人成功的經(jīng)歷都不可復制, 我們可以借鑒吸收別人的經(jīng)驗為己所用。非常希望這篇文章的內(nèi)容可以對小伙伴們有幫助!
另外,把自己上岸的經(jīng)歷分享出來是一件非常棒的事情,我在這里實名為這位讀者點個贊 ?
個人介紹
目前大三,本科就讀于電子科技大學。
我在大一進入學校實驗室學習,負責數(shù)據(jù)收集、日常開發(fā)、NLP。用到的技術包括:
語言:Java、Python 技術: 爬蟲:協(xié)程、異步 OI、正則表達式 后端:SpringBoot、MyBatis、MySQL 前端:HTML、CSS、JavaScript、BootStrap 深度學習:Pytorch、Keras
在實驗室接觸的比較廣泛,不過感覺不夠深入,于是在大二下開始深入后端技術。
我在大二下開始做了些開源項目并深入 Java 相關技術,深入學習了:Java 核心技術、Java 虛擬機、Java 并發(fā)編程、設計模式、MySQL、Spring、SpringBoot、Mybatis。
在大三上期,11 月開始準備 Java 實習相關事務:
一個月的面試后,陸續(xù)拿到了字節(jié),網(wǎng)易、京東、滴滴、騰訊和某區(qū)塊鏈公司的 6 個實習 offer。
復習經(jīng)歷
因為之前就深入學習過,所以總的復習時間也不長,大概是一周左右,后面是通過邊面試邊查漏補缺的方式來補短板。
前兩天的復習內(nèi)容:
Java 基礎
面向對象特性:封裝,多態(tài)(動態(tài)綁定,向上轉型),繼承 泛型,類型擦除 反射,原理,優(yōu)缺點 static,final關鍵字String,StringBuffer,StringBuilder底層區(qū)別BIO、NIO、AIO Object類的方法自動拆箱和自動裝箱
Java 集合框架
List : ArrayList、LinkedList、Vector、CopyOnWriteArrayListSet: HashSet、TreeSet、LinkedHashSetQueue: PriorityQueueMap: HashMap,TreeMap,LinkedHashMapfast-fail,fast-safe 機制 源碼分析(底層數(shù)據(jù)結構,插入、擴容過程)、線程安全。
Java 虛擬機
類加載機制、雙親委派模式、3 種類加載器( BootStrapClassLoader,ExtensionClassLoader,ApplicationClassLoader)運行時內(nèi)存分區(qū)(PC,Java 虛擬機棧,本地方法棧,堆,方法區(qū)(永久代,元空間)) JMM:Java 內(nèi)存模型 引用計數(shù)、可達性分析 垃圾回收算法:標記-清除,標記-整理,復制 垃圾回收器:比較,區(qū)別(Serial,ParNew,Parallel Scavenge ,CMS,G1)Stop The World 強、軟、弱、虛引用 內(nèi)存溢出、內(nèi)存泄漏排查 JVM 調優(yōu),常用命令
Java 并發(fā)
三種線程初始化方法( Thread、Callable,Runnable)區(qū)別線程池( ThreadPoolExecutor,7 大參數(shù),原理,四種拒絕策略,四個變型:Fixed,Single,Cached,Scheduled)Synchronized:使用:方法(靜態(tài),一般方法),代碼塊(this, ClassName.class)1.6 優(yōu)化:鎖粗化,鎖消除,自適應自旋鎖,偏向鎖,輕量級鎖 鎖升級的過程和細節(jié):無鎖->偏向鎖->輕量級鎖->重量級鎖(不可逆) 重量級鎖的原理( monitor對象,monitorenter,monitorexit)ReentrantLock:和Synchronized區(qū)別?(公平鎖、非公平鎖、可中斷鎖....)、原理、用法有界、無界任務隊列,手寫 BlockingQueue。樂觀鎖:CAS(優(yōu)缺點,ABA 問題,DCAS) 悲觀鎖: ThreadLocal:底層數(shù)據(jù)結構:ThreadLocalMap、原理、應用場景。Atomic類(原理,應用場景)AQS:原理、 Semaphore、CountDownLatch、CyclicBarrierVolatile:原理:有序性,可見性第三天的復習內(nèi)容:
MySQL
架構:Server 層,引擎層(緩存,連接器,分析器,優(yōu)化器,處理器) 引擎:InnoDB,MyISAM,Memory 區(qū)別 聚簇索引,非聚簇索引區(qū)別(從二叉平衡搜索樹復習(AVL,紅黑樹)到 B 樹,最后 B+樹) MySQL、SQL 優(yōu)化方法 覆蓋索引,最左前綴匹配 當前讀,快照讀 MVCC 原理(事務 ID,隱藏字段,Undo,ReadView) Gap Lock、Next-Key Lock、Record Lock 三大范式
SQL
常用 SQL 連接:自連接,內(nèi)連接(等值,非等值,自然連接),外連接(左,右,全) Group BY 和 Having Explain
第四天的復習內(nèi)容:
Spring
AOP 原理(JDK 動態(tài)代理,CGLIB 動態(tài)代理)和 IOC 原理 Spring Bean 生命周期 SpringMVC 原理 SpringBoot 常用注解
設計模式
三種類型:創(chuàng)建、結構、行為 單例模式:餓漢,懶漢,DCL 簡單工廠,工廠方法,抽象工廠 代理模式 裝飾器模式 觀察者模式 策略模式 迭代器模式 ....
第五天的復習內(nèi)容:
計算機網(wǎng)絡
OSI 模型、TCP/IP 模型 TCP 和 UDP 區(qū)別 TCP 可靠性傳輸原理:重傳、流量控制、擁塞控制、序列號與確認應達號、校驗和 三次握手、四次揮手過程、原理 timewait、closewait HTTP 報文格式 1.0 1.1 2.0 狀態(tài)碼 無狀態(tài)解決(Cookie Session 原理) HTTPS CA 證書 對稱加密 非對稱加密 DNS 解析過程,原理 IP 協(xié)議、ICMP 協(xié)議(Ping、Tracert)、ARP 協(xié)議、路由協(xié)議 攻擊手段與防范:XSS、CSRF、SQL 注入、DOS、DDOS
第六天的復習內(nèi)容:
操作系統(tǒng):
進程、線程和協(xié)程區(qū)別 進程通信方式(管道,消息隊列,共享內(nèi)存,信號,信號量,socket) 進程調度算法(先來先服務,短作業(yè)優(yōu)先,時間片輪換,多級反饋隊列,優(yōu)先級調度) 內(nèi)存管理:分頁(頁面置換算法:手寫 LRU)、分段、虛擬內(nèi)存
第七天和以后的復習內(nèi)容:
每天做點刷算法題(劍指 offer、LeetCode 面試 Hot 題) +查漏補缺。
面試經(jīng)歷
字節(jié)跳動
第一面
自我介紹,介紹項目
協(xié)程、線程、進程區(qū)別
手寫 LRU(要求用泛型寫)、手寫 DCL
DNS 解析過程
輸入一個 URL 到瀏覽器,整體流程
談談 Java 虛擬機你的認識?垃圾回收算法?垃圾回收器
知道哪些 Java 的鎖?CAS 的缺點?
第二面
自我介紹、介紹項目 手寫最大堆 設計模式了解嗎?幾大類型?談談工廠模式? 談一下 Java 集合框架?HashMap 線程安全的嗎?會出現(xiàn)什么問題? 說說 MySQL 的架構? InnoDB 和 MyISAM 區(qū)別? 知道聚簇索引和非聚簇索引嗎?B 樹和 B+樹區(qū)別? 一道 LeetCode 難問題:接雨水(動態(tài)規(guī)劃解決)
第三面
自我介紹、介紹開源項目 線程池了解嗎?原理?可以寫個 BlockingQueue 嗎? 說說 fast-fail 和 fast-safe? 了解死鎖嗎?怎么解決? 進程間通信方式?哪種最高效? 說說 MYSQL 優(yōu)化策略? 說了一下部門介紹,主要業(yè)務,說可能會轉 GO 等等
第四面(HR)
介紹自己 團隊怎么協(xié)作?有沒有矛盾?怎么解決的? 入職時間?實習多久?
華為
第一面
自我介紹 談項目(談了很久) HTTP 的無狀態(tài)怎么解決?(Cookie Session) TCP 如何保證可靠性傳輸?(校驗和,序列號和確認應答號,重傳,流量控制,擁塞控制) ARP 過程? 進程調度算法? 一道動態(tài)規(guī)劃題目:不同路徑
第二面
自我介紹 談項目(你覺得收獲最大的項目) 談談 Spring AOP 和 IOC 談談你知道的 MySQL 所有內(nèi)容 手寫個歸并排序 談談你對分布式系統(tǒng)的認識? 談談你對華為的認識?華為的文化和價值觀?
HR
技術面試都通過了,問 HR 怎么樣,說應該沒問題,等了一星期 offer,最后發(fā) offer 的時候,HR 說我的性格測試沒通過,Offer 審批不下來,人傻了。因為華為在成都,字節(jié)在北京,而且技術官的意向是很穩(wěn)能進華為,我想著在家近的地方實習,在等待的一周中就把字節(jié)拒了,最后華為沒發(fā)到 offer,直接架空,崩潰!第一次找實習沒太多經(jīng)驗,策略不對,心里很難受,不過調整了一下,繼續(xù)了新的面試
網(wǎng)易
第一面
自我介紹 介紹一個對自己影響深刻的項目 說說進程間調度的算法 說說匿名函數(shù) 說說協(xié)程、線程、進程。 你對游戲引擎了解多少? 手寫地杰斯特拉算法? 了解 A*算法嗎? 說說 Python 和 Java 的區(qū)別? Java 是怎么進行垃圾回收的? 然后聊了很多生活上的問題,非技術問題。
第二面
自我介紹 介紹項目 說說深度優(yōu)先搜索算法、回溯算法 一道算法題:一個走迷宮問題,DFS+回溯解決。 你對 C 熟悉嗎?Lua 使用過嗎? 介紹業(yè)務,主要工作內(nèi)容。
HR 面
自我介紹 介紹一個項目中遇到的問題,怎么解決的? 介紹一下博客?開源項目?為什么花時間做這些? 大學最成功的一件事?
滴滴
第一面
自我介紹、介紹項目 Java 面向對象的三大特性? 了解 Java 哪些鎖?Synchronized 優(yōu)化內(nèi)容?鎖升級過程? 談談 Java 虛擬機?類加載機制? 知道雙親委派模式嗎?有什么好處? Java 運行時內(nèi)存分區(qū)? 死鎖了解嗎?如何解決? 哪些對象可以作為 GC ROOTS? 了解的設計模式?手寫一下 DCL 吧
第二面
自我介紹 介紹項目(難點以及怎么解決的?) 談談 MySQL 的各種引擎? 覆蓋索引和非覆蓋索引區(qū)別? MYSQL 優(yōu)化方法有哪些? 講講 HashMap 的原理,put 過程?resize 過程?線程安全嗎?死循環(huán)問題? 了解什么中間件嗎? 講講 Java 里面的鎖? 一道算法題:最長公共子串
HR 面
自我介紹 到崗時間 自己的優(yōu)勢 大學最失敗的一件事 對加班的看法
京東
第一面
自我介紹 談項目 TCP 如何保證可靠傳輸?擁塞控制算法? 講講 Spring 的 AOP? SpringBoot 常用哪些注解? 談談 Java 虛擬機? 垃圾回收算法有哪些? 了解哪些垃圾回收器?講一下 CMS 垃圾回收過程 算法題: 兩個棧實現(xiàn)隊列 最近公共祖先節(jié)點
第二面
自我介紹 講講 Java 集合框架,HashMap 原理。 知道哪些鎖? 談談公平鎖和非公平鎖? Synchronized 和 ReentrantLock 區(qū)別 MySQL 的索引為什么快?有哪些索引?原理數(shù)據(jù)結構? MySQL 有哪些優(yōu)化的策略? 死鎖了解嗎? ThreadLocal 了解嗎?原理? 手寫一個堆排序。 一道算法題:完全平方數(shù)(動態(tài)規(guī)劃)
HR 面
自我介紹 多久可以到崗?實習時間? 對加班看法? 如何團隊分工的?
騰訊
第一面
自我介紹 介紹項目 說說協(xié)程和線程區(qū)別? Java 虛擬機的作用?垃圾回收的過程? 了解的垃圾回收器? 手寫快排 算法題:按 K 位反轉鏈表 一百億個數(shù),n 個機器,怎么排序?(桶排序)
第二面
自我介紹 介紹項目 TCP 和 UDP 區(qū)別?如何保證可靠性? HTTP 的狀態(tài)碼記得哪些? ICMP 是哪層的?有什么用? 會哪些框架? Spring 的 AOP 認識? MySQL InnoDB 和 MyISAM 區(qū)別? 談談各種索引?為什么用 B+樹不用 B 樹? 死鎖的條件?如何解決? OOM 怎么排查? 介紹業(yè)務
HR 面
自我介紹 多久能來實習?實習多久? 加班看法? 看你掌握技術挺多,如何快速學習一個技術的?
總結
因為之前學的也比較深入,復習時間也沒用太多,主要就是寫點算法題保持手感。
面試中遇到的問題,9 成都已經(jīng)復習了,而且也比較基礎,也都在掌握之中。
像中間件、微服務這些我沒寫在簡歷上,不是很會,面試官也不會刻意刁難你,實習的話,感覺大廠可能更注重基礎和對知識的深入度,面試了一個月收貨還是挺多的,希望總結一下面經(jīng),幫到更多的人~
準備大廠面試的話,注重基礎,多練算法題,基本上就沒問題了!加油!
推薦?:?Github掘金計劃:Github上的一些優(yōu)質項目搜羅
我是Guide哥,Java后端開發(fā),擁抱開源,喜歡烹飪,自由的少年。一個喜歡讀者面試經(jīng)驗的技術人。我們下期再見!
