前言
如何在金三銀四成功斬獲Offer!BATJ大廠面經(成功關鍵:吃透九大核心知識+狂刷大廠面試真題)
第一輪:團隊面試第一輪基本上是你的團隊成員面試你,是和你同級或者高你一個P的師兄來面你,我的話基本沒問什麼特別的,主要還是講自己簡歷上的做的專案,這裡需要你很熟悉自己的專案才行。
我個人覺得這裡你要把專案裡你的角色做了什麼沒做什麼講清楚,然後最好能把自己做的那部分重點展開來講,然後面試官會從你講的內容裡挑一些具體來問你,這部分就因人而異了,知道的說不知道的別瞎說。
最後還會問你一些什麼TCP/UDP啊、網路模型啊之類的基礎知識。我是覺得這一面只要你專案靠譜、不吹牛逼、底子紮實,過一面應該都不是問題。
第二輪:主管面試這一面其實跟第一面差不多,就是你的師兄們篩完簡歷了,然後到你的主管來面試你了而已。這一面我的面試官還是讓我主要介紹簡歷(可能因為我是社招,有專案經歷他們比較感興趣吧),然後我就又講了一遍,因為我一面完了之後有思考過,所以這一次基本上上次沒有講到或者講得不好的地方這次我都有注意,基本講的還行。
然後接下來依舊是根據你講的東西來挑重點的來問,這部分真的沒有什麼固定套路,都是他們聽見啥感興趣的就會問你是“怎麼實現的,為什麼這麼實現,有沒有更好的實現方式”這三個問題。
這一回除了你要對自己專案足夠熟悉之外,還要求你對你做過的東西要有思考才行,你要是現想,那肯定是不靠譜的。這一輪對面最少都是P8級別的人了,千萬可別不懂裝懂的亂說呀。還是那句話,知之為知之,不知為不知,是知也。
第三輪:交叉面試這一面基本是找個其他部門和你將來的主管平級的leader來面你一遍,防止前面自己部門面試作弊嘛。基本套路和二面差不多,但是會多問你一些基礎知識和程式設計能力上的事,主要還是以考核你為目的,肯定不是為了難為你的,所以,好好加油表現出你自己就行。
第四輪:程式碼面試這一面據我後來的師兄講本來是二面,是想省了的,但是後面由於流程規定,又給我加回來了,所以我就經歷了一次線上筆試的面試。這一面的面試是給你一個線上網站,然後你和你的面試官一起登陸上去,共享web頁面,然後他給你出題,你來現場寫程式碼,虛擬碼就行,然後你再給他講一遍你的邏輯就ok了。
這一面沒什麼好講的,寫程式碼嘛,是騾子是馬拉出來溜溜咯。出的題不會很難,我答的是兩道,一道給我半小時,第一道是給你一個shell命令,執行的功能大概就是讀取一個日誌檔案,然後根據日誌裡的某一欄位排序,然後取前五,輸出。大概考點就是:
1.你得讀懂這個有cat、有awk、有sort等等猛地一看還挺長的shell命令;
2.實現它;
3.時空間複雜度/效率;
4.講清楚。
第二道題目是反轉字串,大概就是把字串“123456789”從中間分開,然後分別反轉,然後輸出,輸出結果是“432159876”。大概考點就是:
1.實現它;
2.時空間複雜度/效率;
3.講清楚;
4.嘗試給出最佳化方案;
大概就是這種型別的題,肯定不會重複的,師兄說很可能就是他們最近寫程式碼遇到的問題,就直接拿來問你了,所以也沒什麼固定套路,你也不用臨時抱佛腳的刷題,隨緣就好。
第五輪:boss面試到這一面的時候基本就穩了,當然我也見過掛的。這一面就是你的主管的主管來面你了,我當時還是先講專案,然後挑重點的問,不過和二三面明顯的區別就是他會問你更高層次的解決方案,不再拘泥於你做的那一點東西,會讓你從整體上或者部分整體上講清楚你專案的解決方案以及你自己的思考(上面的那三個問題),會讓你嘗試給出更好的解決方案,並解釋原因。
我個人感覺這一面更多的是考驗你的全域性觀,你要是一直拘泥於自己的小天地,那估計會吃虧的。當然,面試分人的,有的非技術出身的主管就是和你聊聊天談談人生理想什麼的,你要是不match也會被淘汰。
第六輪:HRG面試如果你能面到這一面那你基本99%拿到Offer!主要就是和你談人生、談理想、談三觀、談薪資,只要你不反人類、不扯淡,就OK。
把自己的面試經歷分享出來之後,很多朋友都問我有沒有什麼學習方法,其實除了自己的所需要的掌握的技術之外,面試過程中一些技巧和一些面試題也是必不可少的!可以分享給大家一條自己刷的面試題,裡面涵蓋了:Java基礎、JVM、多執行緒與高併發、spring、springMVC、MyBatis、SpringBoot、SpringCloud、微服務、資料庫、網路底層、TCP、資料結構與演算法等等以及一整套的大廠面試真題!
Java九大核心知識點總結這份筆記總共九大部分,涵蓋了Java小白到Java架構師層面的面試知識點總結,這裡給大家賣個關子:這份筆記100%免費獲取!因為這份筆記的知識點太多,小編沒辦法為大家全部完整的展示出來。這份筆記的免費獲取方式在文末!
Java開發1—2年基礎:JVM篇本篇主要講述了JVM原理,涉及JVM執行機制、JVM記憶體模型、常用垃圾回收演算法和JVM類載入機制等內容。
1—2年Java工程師必會:Java基礎篇本篇講解Java基礎知識,涉及集合、異常分類及處理、反射、註解、內部類、泛型和序列化等內容。
Java開發2—3年高階工程師:Java併發程式設計篇本篇講述講解Java併發程式設計知識,涉及Java多執行緒的工作原理及應用、Java執行緒池的工作原理及應用,以及鎖、程序排程演算法等內容。
Java面試中必問的資料結構:資料結構篇本篇講解資料結構知識,涉及棧、佇列、連結串列、散列表、二叉樹、紅黑樹、圖和點陣圖等內容。
3—4年Java架構師必問:常用演算法篇本篇講解Java中的常用演算法,涉及二分查詢、氣泡排序、插入排序、快速排序、希爾排序、歸併排序、桶排序、基數排序等演算法。
5年Java架構師面試必問網路底層:網路與負載均衡篇本篇講解網路與負載均衡原理,涉及TCP/IP、 HTTP、常用負載均衡演算法和LVS原理等內容。
Java架構師進階:資料庫及分散式事務篇本篇講解資料庫及分散式事務原理,涉及資料庫儲存引擎、資料庫併發操作和鎖、資料庫分散式事務等內容。
Java高階架構師必備:分散式快取的原理及應用篇本篇講解分散式快取的原理及應用,涉及分散式快取介紹、Ehcache原理及應用、Redis原理及應用、分散式快取設計的核心問題等內容。
了設計模式篇本篇講解設計模式,涉及常見的23種經典設計模式。
面試題總結大廠面試部分真題展示杭州-螞蟻金服-Java高階jdk1.7 到 jdk1.8 Map 發生了什麼變化(底層)?ConcurrentHashMap並行跟併發有什麼區別?jdk1.7 到 jdk1.8 java 虛擬機發生了什麼變化?如果叫你自己設計一箇中間件,你會如何設計?什麼是中介軟體?ThreadLock 用過沒有,說說它的作用?Hashcode()和 equals()和==區別?mysql 資料庫中,什麼情況下設定了索引但無法使用?mysql 最佳化會不會,mycat 分庫,垂直分庫,水平分庫?分散式事務解決方案?sql 語句最佳化會不會,說出你知道的?mysql 的儲存引擎瞭解過沒有?紅黑樹原理?杭州-螞蟻金服-資深工程師螞蟻Java 一面
二叉搜尋樹和平衡二叉樹有什麼關係,強平衡二叉樹( AVL 樹)和弱平衡二叉樹(紅黑樹)有什麼區別
B 樹和 B+ 樹的區別,為什麼 MySQL 要使用 B+ 樹HashMap 如何解決 Hash 衝突epoll 和 poll 的區別,及其應用場景簡述執行緒池原理, FixedThreadPool 用的阻塞佇列是什麼?sychronized 和 ReentrantLock 的區別sychronized 的自旋鎖、偏向鎖、輕量級鎖、重量級鎖,分別介紹和聯絡HTTP 有哪些問題,加密演算法有哪些,針對不同加密方式可能產生的問題,及其HTTPS 是如何保證安全傳輸的
螞蟻 Java 二面
設計模式有哪些大類,及熟悉其中哪些設計模式volatile 關鍵字,它是如何保證可見性,有序性Java 的記憶體結構,堆分為哪幾部分,預設年齡多大進入老年代ConcurrentHashMap 如何保證執行緒安全, jdk1.8 有什麼變化為什麼 ConcurrentHashMap 底層為什麼要紅黑樹如何做的 MySQL 最佳化講一下 oom 以及遇到這種情況怎麼處理的,是否使用過日誌分析工具螞蟻 Java 三面
專案介紹你們怎麼保證 Redis 快取和資料庫的資料一致性?Redis 快取雪崩?擊穿?穿透?你熟悉哪些訊息中介軟體 ,有做過效能比較?上海-拼多多-Java高階1 、併發程式設計三要素?
2 、實現可見性的方法有哪些?
3 、多執行緒的價值?
4 、建立執行緒的有哪些方式?
5 、建立執行緒的三種方式的對比?
6 、執行緒的狀態流轉圖
7 、 Java 執行緒具有五種基本狀態
8 、什麼是執行緒池?有哪幾種建立方式?
9 、四種執行緒池的建立:
10 、執行緒池的優點?
11 、常用的併發工具類有哪些?
12 、 CyclicBarrier 和 CountDownLatch 的區別
13 、 synchronized 的作用?
14 、 volatile 關鍵字的作用
15 、什麼是 CAS
16 、 CAS 的問題
17 、什麼是 Future ?
18 、什麼是 AQS
19 、 AQS 支援兩種同步方式:
20 、 ReadWriteLock 是什麼
21 、 FutureTask 是什麼
22 、 synchronized 和 ReentrantLock 的區別
23 、什麼是樂觀鎖和悲觀鎖
24 、執行緒 B 怎麼知道執行緒 A 修改了變數
25 、 synchronized 、 volatile 、 CAS 比較
26 、 sleep 方法和 wait 方法有什麼區別 ?
27 、 ThreadLocal 是什麼?有什麼用?
28 、為什麼 wait() 方法和 notify()/notifyAll() 方法要在同步塊中被調 用
29 、多執行緒同步有哪幾種方法?
30 、執行緒的排程策略
31 、 ConcurrentHashMap 的併發度是什麼
32 、 Linux 環境下如何查詢哪個執行緒使用 CPU 最長
33 、 Java 死鎖以及如何避免?
34 、死鎖的原因
35 、怎麼喚醒一個阻塞的執行緒
36 、不可變物件對多執行緒有什麼幫助
37 、什麼是多執行緒的上下文切換
38 、如果你提交任務時,執行緒池佇列已滿,這時會發生什麼
39 、 Java 中用到的執行緒排程演算法是什麼
40 、什麼是執行緒排程器 (Thread Scheduler) 和時間分片 (TimeSlicing) ?
41 、什麼是自旋
42 、 Java Concurrency API 中的 Lock 介面 (Lock interface) 是什麼?對 比同步它有什麼優勢?
43 、單例模式的執行緒安全性
44 、 Semaphore 有什麼作用
45 、 Executors 類是什麼?
46、執行緒類的構造方法、靜態塊是被哪個執行緒呼叫的
上海-攜程-Java高階1. 描述一下 JVM 載入 Class 檔案的原理機制 ?
2. 什麼是類載入器?
3. 類載入器有哪些?
4. 什麼是 tomcat 類載入機制?
5、類載入器雙親委派模型機制?
6. Java 記憶體分配?
7. Java 堆的結構是什麼樣子的?
8. 簡述各個版本記憶體區域的變化?
9. 說說各個區域的作用?
10. Java 中會存在記憶體洩漏嗎,簡述一下?
11. Java 類載入過程?
12. 什麼是 GC? 為什麼要有 GC ?
13. 簡述一下 Java 垃圾回收機制?
14. 如何判斷一個物件是否存活?
15. 垃圾回收的優點和原理,並考慮 2 種回收機制? 基本原理是什麼?
16. 深複製和淺複製?
17. 什麼是分散式垃圾回收( DGC)?它是如何工作的?
深圳-OPPO-Java高階說說你的⼯作經歷?項⽬主要負責哪⼏個模組?畫出你項⽬的結構圖Eureka 是如何進⾏服務註冊的?如果服務宕機或者⽆法訪問了,我還去請求該服務, Eureka會怎麼處理? 會有什麼現象?談談 Eureka 的保護機制Ribbon 的負載均衡是⾯向服務內部還是外部的?Ribbon 如何實現負載均衡的?如果沒有 Eureka ,我能直接透過 Ribbon 進⾏服務請求嗎?Hystrix 如何實現熔斷?當服務⽆法訪問時,是直接熔斷還是降級?怎麼樣才會出現熔斷?在 Springcloud中,消費者調⽤提供者的流程是如何的?請畫圖 springcloud 的⼯作原理Redis 的叢集⽅式有哪些?如果你原來讀取的 Redis中的資料,它的資料的結構發⽣了變化,如何在 不改變程式碼的情況下進⾏處理,使下游業務不受影響?Redis 的持久化⽅式有哪些?說說他們的具體實現、使⽤ Redis 的過程中有沒有遇到什麼問題?Redis 的記憶體回收機制有哪些?Redis 的過期策略有哪些?簡單介紹下不同策略說說 Redis 的淘汰策略?淘汰的演算法可以修改或者⾃⼰重寫嗎?你們的項⽬中訊息中介軟體⽤的是什麼?你們的 Rabbit 叢集是怎麼部署的?Rabbit 叢集之間的資料是如何同步的?同步⽅式還是非同步⽅式?⼀個佇列中的資料你們是存放在⼀臺機⼦上還是多臺機⼦上?為什麼?RabbitMQ 內部結構是怎麼樣的?請畫出 RabbitMQ 的架構圖你們公司的資料庫有分庫分表嗎?如何實現的?Mysql 的索引是基於什麼?說說 B+ 樹使⽤⾃增 ID 和 UUID 作為主鍵有什麼不同?說說資料庫的事務隔離級別有哪些?在程式碼中,我們如何實現事務?如果在⼀個事務中,程式碼業務流程很⻓,會有什麼問題嗎?為什麼會出 現這種問題?使⽤ volatile關鍵字的時候有遇到過什麼問題嗎?為什麼會出現這種問 題?請說說 volatile 的底層實現原理如何建立執行緒池?有什麼引數?執行緒池的實現原理你有什麼問題想問我們的嗎?深圳-豐巢科技-Java高階1.bio 與 nio 的區別
2.select 與 poll 的區別
3.zookeeper 的⼯作原理
4.cap 理論
⼆段式滿⾜ cap 理論的哪兩個理論執行緒池的引數配置,為什麼 java 官⽅提供⼯⼚⽅法給執行緒池分散式框架 dubbo 的好處,不⽤ dubbo 可不可以。為什麼要使⽤分散式七個垃圾回收器之間如何搭配使⽤接⼝限流⽅案10.ConcurrentHashMap 使⽤原理
解決 map 的併發問題⽅案什麼是協程,以及實現要點13.lru cache 使⽤ hash map 的實現(演算法)
圖的深度遍歷和⼴度遍歷(演算法)基本排序(演算法)設計模式的使⽤17.java 8 流式使⽤
說說 b+ 樹?記憶體屏障與 volatile :20.java 域的概念
分散式設計領域的概念如何實現雙 11 的購物限流( redis 實現⽅案)23.mysql 調優
24.cdn (異地多活)
程序之間的通訊⽅式26.tcp/ip 協議、 http 協議
寫⼀個 redis 分散式鎖:28.spring 7 種事務的傳播⾏為:
分散式下 down 機的處理⽅案(⼼跳檢測)30 、分析下分散式強⼀致性、弱⼀致性、最終⼀致性?
31 、 dubbo 與 zookeeper 兩者作為註冊中⼼的區別,假如註冊中⼼掛了,消費者還能調⽤服務嗎,⽤什麼調⽤的
32 、 dubbo 的原理圖(畫出註冊中⼼,消費者,⽣產者的關係圖,並說出每個⻆⾊的作⽤)
33 、項⽬中有沒有⽤到多執行緒?
34 、 HashMap 的底層原理(包括底層資料結構,怎麼擴容的)
35 、 ConcurrentHashMap 的原理
36 、 分散式鎖的實現
37 、分散式 session ,如何保持⼀致
38 、訊息中介軟體都⽤到哪些,他們的區別
我們知道 hashmap 執行緒不安全,那⽤什麼類可以代替它保證執行緒安全呢?他們⼜是如何實現執行緒安全的呢?說說⼏種 GC 機制?說說⼀致性 hash ?mybatis 基礎知識;mysql 基礎知識;mysql 單表達到多少資料量需要分庫分表?hibernate 基礎知識。說說 kafka 的原理,為什麼能保證這麼⾼的吞吐量?對 webservice 有什麼瞭解?說說你們公司 git 分⽀管理⽅案?mysql 如何進⾏分表分庫?你們如何和前端進⾏接⼝聯調?說說你平時遇到的重⼤難題或者挑戰,以及你解決問題的思路和流程。 平時關注⼀下公司線上問題的解決⽅案。深圳-樂信-Java高階畫出項⽬的架構圖所處⾃⼰負責的業務模組,其中⽤到了哪些技術點?如何實現最終⼀致性分散式事務?索引的 B+ 樹結構是怎樣的?哪些情況下索引會失效?除了加索引最佳化查詢,還有哪些⽅法?說說⾃⼰瞭解的設計模式? Spring中⽤到了哪些設計模式?⾃⼰有⽤過哪些設 計模式嗎?7.TCP 三次握⼿和四次揮⼿機制?
8.Https 原理?
9.Redis 的資料型別有哪些?與 Memcached 的區別?
訊息佇列有⽤到嗎?具體在項⽬中是怎麼⽤的?如何保證訊息的可靠傳遞?說說 java 集合,每個集合下⾯有哪些實現類,及其資料結構?介紹⼀下紅⿊樹、⼆叉平衡樹。jdk1.8中ConcurrentHashMap size ⼤於 8時會轉化成紅⿊樹,請問有什麼 作⽤,如果透過 remove 操作, size ⼩於 8 了,會發⽣什麼?說說 java 同步機制, java 有哪些鎖,每個鎖的特性?說說 volatile 如何保證可⻅性,從 cpu 層⾯分析。spring 載入 bean 的順序?哪些物件會被存放到⽼年代?什麼時候觸發full gc?jvm 中哪些地⽅會出現 oom ?分別說說 oom 的可能原因?我們如何發現 oom 來⾃ jvm 中哪個區域?有沒有 jvm 調優經驗?調優⽅案有哪些?平時有沒有看過什麼原始碼,請畫出來。有沒有寫過或者看過 custom classloader ?介紹你最近做的⼀個項⽬,畫出框架圖並分析業務流程。平時看過哪些書?[圖片上傳失敗...(image-f59723-1611062305870)]
深圳-商湯科技-Java高階簡歷寫什麼問什麼,注意所⽤技術產品的同類產品⽣態及對⽐。2.kafka 資料分割槽和消費者的關係, kafka 的資料 offset 讀取流程, kafka 內部如何保證順序,結合外部元件如何保證消費者的順序
3.cms 垃圾回收機制
4.springcloud 各個元件功能,內部細節,與 dubbo 區別, dubbo 架構, dubbo 負載策略
5.mapreduce 原理
6.nio , bio , sellector/epoll , aio , netty ⾃帶編解碼器, netty 優勢, java 記憶體模型
7.akka 模型
8.java arraylist , linkedlist 區分及實現原理, hashmap 和 concurrenthashmap 區分及實現原理, concurrenthashmap 1.7 和 1.8 區分,
實現細節, linkedhashmap 排序原理,應⽤如何保證資料冪等
9.web.xml listener , filter , servlet 載入順序。如何不再 web , xml中配置來載入 filter
⽆窮數就 top K 問題,提供多個⽅案11.a , b , c 三張表,做關聯查詢,如何最佳化,可做外來鍵,只在 c 表加 a 表外來鍵即可。
12.CourrentHashMap JDK1.7 和 JDK1.8 有什麼區別?
執行緒 a , b , c , d 運⾏任務,怎麼保證當 a , b , c 執行緒執⾏完再執⾏ d 執行緒 ?分散式系統中如何保證資料的⼀致性?拆分微服務應該注意哪些地⽅,如何拆分?16.SpringCloud 全家桶包含哪些元件?
有沒了解 Docker , Docker 和虛擬機器有什麼區別?同⼀個宿主機中多個 Docker 容器之間如何通訊?多個宿主機中 Docker 容器之間如何通訊?⾼併發系統如何做效能最佳化?如何防⽌庫存超賣?如何保證服務冪等性?