應女友要求分享一波自己總結的大廠面經,花了不少時間整理,在整理過程中也重新複習了一遍,每一題都是精心挑選的!話也不多說,直接開始正文吧!
結尾有驚喜哦!
面試官開始就坦言和我說不要有太多壓力,我這邊就是會問到你不會為止,太狠了。
SVN
和Git的區別,fetch和pull的區別- 有衝突的時候需要怎麼解決
- 介紹一下Docker,Docker和作業系統對映的關係
- 什麼資料用
MySQL
資料庫,什麼資料放在Redis
中,專案中實際遇到的舉例- 專案中最經常用到的
Redis
資料型別- 為什麼
rua
指令碼能保證原子性Nginx
動靜分離的介紹,瞭解CDN
嗎- 快取擊穿,快取一致性
Redis
中資料的髒讀問題,如兩個不同的執行緒先後往資料庫中寫資料,再往Redis
中寫資料,但是第二個執行緒先往Redis
中寫了,第一個執行緒又去修改了Redis
中的資料,造成了MySQL
和Redis
中的資料不一致,如何解決?不使用鎖如何解決?- 讀不需要變化,寫資料情況下,每次刪除
Redis
中的資料- 分散式事務在專案中用什麼實現的
- 解釋一下令牌保證介面冪等性(面試官以為令牌是實現了多點登入功能,用於認證中心)
- 令牌生成的邏輯
- 在秒殺系統中使用號誌的原因
- 訊息佇列在業務中使用場景
- 專案中
JVM
調優介紹JVM
中的垃圾回收器介紹,瞭解Jstack
不- 計算機網路分層以及對應的協定,為什麼分層
- 為什麼TCP需要四次揮手
- 看你筆試用了
StringBuffer
,談談它和Cache
的區別(計算機組成中的Cache概念)- Java學習路線
JVM
中的垃圾回收演演算法,為什麼不同代用不同演演算法- 新生代標記的是什麼物件,老年代標記的是什麼物件
- 學習使用的資料庫版本,學了哪些知識
MySQL5.7
在快照和next-key保證下能避免幻讀問題MySQL
索引,InnoDB
用的是什麼索引,為什麼B+樹能提高查詢效能- 磁碟讀取的順序啥的(作業系統還是計算機組成的知識?)順序讀的問題
Redis
容災備份,持久化的實現- 設計方法保證
Redis
宕機時剛要存的資料也能持久化,不搭建叢集主從複製MySQL
的同步(持久化)如何實現AOF
恢復和RDB
恢復資料有什麼區別,優劣- 鎖的優化,升級,
AQS
- 讀寫鎖在
AQS
中和其他鎖最大的區別- 反問了解下位元組的考核制度(面試官說位元組基於對夥伴充分的信任,分配任務之後不會限定deadline,考核也有成熟的制度體系)
- 面試時間約70分鐘
- Spring中為什麼預設是單例
- 說說單例和原型各自的優缺點
- 手寫三個執行緒安全的懶漢型單例模式
- 寫的過程中讓解釋了static、鎖、鎖的粒度一些知識
- 讓介紹synchronized和reentrantlock各自適用的場景
- 手寫一個對外提供put、get、remove的hashmap,用陣列和連結串列實現,不需要寫hash演演算法
全程除了一開始問Spring中為什麼預設單例的問題之外,基本就是一邊寫程式碼一邊問問題,不難發現一面考察主要是技術面的寬度,二面主要考察技術的深度。
- 專案介紹,反問了專案中的難點在什麼地方(回答了資料庫IO的瓶頸,引入Redis技術,面試官就問資料庫IO的IPS是多少)
- Redis和資料庫並行一致性問題
- Redis加分散式鎖解決快取雪崩的問題時存在的問題
- 如何保證Redis加鎖和解鎖都具有原子性
- 聊資料庫三正規化
- 索引、聚簇索引、輔助索引、覆蓋索引
- 解釋一下丟失修改、髒讀、不可重複讀、幻讀具體什麼並行競爭下發生的問題
- 上述並行一致性如何解決
- 回到Java的問題上,說一下Java的基礎資料型別
- String為什麼是不可變的
- 如果對一個String物件頻繁的修改,會有什麼問題,如何改進
- 除了轉成StringBuffer、StringBuilder還有其他好辦法嗎
- hashmap執行緒不安全的場景介紹一下
- 如果讓你設計一個執行緒安全的hashmap你會從哪些角度考慮
- 執行緒的生命週期
- 多執行緒還問了一些其他題,有點會議不起來了,想到了再更新補上
- 手撕一個SQL,從一個表中選出所有成績都大於80分的學生的姓名
- 任選一個排序演演算法手撕,直接在網頁裡寫並要求執行,寫了個快排
第一個問題那因為單機沒做過壓測,面試官有點質疑專案的真實性,追問每次IO的資料量有多大(最後面試官也直接說沒必要刻意說為了解決資料庫IO存在的問題引入Redis,你提了資料庫瓶頸那你得了解具體的瓶頸,不然就是減分項了)
- 詢問了一下意向城市、手頭的offer和崗位投遞情況
- 實習專案的業務瞭解,在我描述自己做的工作的時候會提問為什麼不用另外的做法,然後會和麵試官解釋原因,重點介紹自己遇到的一些難點,解決的方法
- 個人專案中某個技術的詢問
反問環節面試官耐心地就部門業務和新人培養制度給我介紹了十多分鐘,真的是很nice了。
耍了點小心機,特意提了下很欣賞有贊提倡的氛圍,面試官問是特意瞭解過有贊嗎,就順水推舟誇了一波。
- TCP三次握手及各個狀態名稱
- 四次揮手的各個狀態名稱和流程描述
- POST和GET的區別
- POST的body的大小
- Java的類載入器介紹
- 寫過自定義類載入器嗎
- 雙親委派機制
- 執行緒的生命週期,各個狀態的轉換呼叫什麼方法
- wait和sleep的區別
- 實現執行緒的四種方式
- 實際使用執行緒池的場景
- 執行緒池的核心引數
- 讓你手寫執行緒池引數需要考慮什麼因素
- volatile的作用及實現原理
- ThreadLocal作用、原理、應用場景、存在的記憶體漏失問題及解決
- Redis持久化方式AOF和RDB的介紹
- Redis的事務
- 索引的儲存結構
- 聚簇索引和非聚簇索引區別、優劣
- 聯合索引、覆蓋索引
- 什麼時候適合建索引
- 什麼時候建立了索引但是沒有走到,針對單列索引(查了下就是索引參與函數計算、轉型、模糊查詢等會索引失效,進行全表掃描)
- 資料庫隔離級別以及分別解決的是什麼問題
準備面試的日子壓力很大,每天晚上都會看追兩集劇再睡,也很枯燥,每天單調地重複筆試、面試、準備面試、練習筆試,但是隻要有心,生活就有值得開心的地方,希望各位都能有滿意的offer,共勉,此致。
更多JAVA面試題:戳這裡免費領取,暗號:CSDN,還有更多大廠面試專題資料和視訊哦!