前言
如何在金三銀四成功斬獲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%免費獲取!因為這份筆記的知識點太多,小編沒辦法為大家全部完整的展示出來。這份筆記的免費獲取方式私信小編【666】即可!!
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 容器之間如何通信?
?并發系統如何做性能優化?如何防?庫存超賣?
如何保證服務冪等性?