Java面試複習重點:一份非常適合收藏的Java進階面試題
阿新 • • 發佈:2021-07-08
Java面試複習重點:一份非常適合收藏的Java進階面試題
01 MySQL相關
1.1 面試問題
- MySQL有哪些鎖?
- 解釋一下ACID都是什麼
- Innodb中索引的實現
- B+樹
- AUTO_INCREMENT原理(考察併發情況)
- 資料庫的索引有哪幾種?為什麼要用B+樹來做索引?組合索引和幾個單個的索引有什麼區別?資料庫的大表查詢優化了解嗎?MVCC機制瞭解不?MVCC機制有什麼問題?怎麼去解決這個問題?mysql慢語句調優做過嗎?說說你是怎麼做的?
1.2 我的MySQL學習筆記
(1)20個高頻MySQL面試知識點
- 事務四大特性(ACID)原子性、一致性、隔離性、永續性?
- 事務的併發?事務隔離級別,每個級別會引發什麼問題,MySQL預設是哪個級別?
- MySQL常見的三種儲存引擎(InnoDB、MyISAM、MEMORY)的區別?
- MySQL的MyISAM與InnoDB兩種儲存引擎在,事務、鎖級別,各自的適用場景?
- 查詢語句不同元素(where、jion、limit、group by、having等等)執行先後順序?
- 什麼是臨時表,臨時表什麼時候刪除?
- MySQL B+Tree索引和Hash索引的區別?
- sql查詢語句確定建立哪種型別的索引?如何優化查詢?
- 聚集索引和非聚集索引區別?
- 有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?
- 非關係型資料庫和關係型資料庫區別,優勢比較?
- 資料庫三正規化,根據某個場景設計資料表?
- 資料庫的讀寫分離、主從複製,主從複製分析的 7 個問題?
- 使用explain優化sql和索引?
- MySQL慢查詢怎麼解決?
- 什麼是 內連線、外連線、交叉連線、笛卡爾積等?
- mysql都有什麼鎖,死鎖判定原理和具體場景,死鎖怎麼解決?
- varchar和char的使用場景?
- mysql 高併發環境解決方案?
- 資料庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)?
(2)MySQL學習思維腦圖(xmind)
02 Java相關
2.1 面試問題
- JVM記憶體模型
- GC垃圾回收演算法
- 講解新生代 老年代
- java的基本型別有哪幾個?String是不是java的基本型別?String為什麼要是final型別的?
- 說一下JVM的執行緒模型?這些區域都分別是幹啥用的?java執行緒模型和jvm執行緒模型注意區分
2.2 我的JAVA學習筆記
(1)JAVA面試寶典
(2)JAVA併發體系學習思維腦圖(xmind)
(3)多執行緒併發程式設計學習思維腦圖(xmind)
03 Redis相關
3.1 面試問題
- redis瞭解嗎?你說說怎麼用redis實現分散式鎖?
- Redis常用資料結構及底層資料結構實現
- 如何解決 Redis 的併發競爭 Key 問題
- 如何保證快取與資料庫雙寫時的資料一致性?
3.2 我的Redis學習筆記
(1)14個高頻Redis知識點
- redis 簡介
- 為什麼要用 redis /為什麼要用快取(高效能、高併發)
- 為什麼要用 redis 而不用 map/guava 做快取?
- redis 和 memcached 的區別
- redis 常見資料結構以及使用場景分析(String、Hash、List、Set、Sorted Set)
- redis 設定過期時間
- redis 記憶體淘汰機制(MySQL裡有2000w資料,Redis中只存20w的資料,如何保證Redis中的資料都是熱點資料?)
- redis 持久化機制(怎麼保證 redis 掛掉之後再重啟資料可以進行恢復)
- redis 事務
- Redis 常見異常及解決方案(快取穿透、快取雪崩、快取預熱、快取降級)
- 分散式環境下常見的應用場景(分散式鎖、分散式自增 ID)
- Redis 叢集模式(主從模式、哨兵模式、Cluster 叢集模式)
- 如何解決 Redis 的併發競爭 Key 問題
- 如何保證快取與資料庫雙寫時的資料一致性?
(2)Redis學習思維腦圖(xmind)
04 思維/演算法
4.1 面試問題
- 使用O(N)複雜度完成GBDT分裂
- 找出無序陣列中相隔距離最長的逆序對
- 給出一個rand5(),實現一個分佈均勻的rand7()生成器
- 有一個點,向北走5公里、東走10km、向南走5公里,回到原點。這樣的點有幾個,證明。
- 有一個n克的物體、一個天平和若干砝碼,這個天平沒有刻度,試問最少用多少個什麼樣的砝碼可以將這個物體的質量稱出。砝碼的質量和個數自行指定。
4.2 演算法刷題
- 程式設計技巧
- 線性表
- 字串
- 棧和佇列
- 樹
- 排序
- 查詢
- 暴力列舉法
- 廣度優先搜尋
- 深度優先搜尋
- 分治法
- 貪心法
- 動態規劃
- 圖
- 細節實現題
05 網路相關
5.1 面試問題
- OSI七層模型都是什麼
- 舉例網路協議,都在哪個層
- TCP UDP區別
- TCP如何實現可靠連線
- Time_Wait中2*msl 為什麼
- 如果TCP突然接收方故障 會發生什麼
- HTTP狀態碼 含義,503 504,200
- GET POST區別
- 一個url從輸入到訪問經過了哪些過程
- 說一說TCP三次握手和四次揮手
5.2 JAVA核心知識整理
(JVM,JAVA集合,網路,JAVA多執行緒併發,JAVA基礎,Spring原理,微服務,Zookeeper,Kafka,RabbitMQ,Hbase,MongoDB,Cassandra,設計模式,負載均衡,資料庫,一致性雜湊,JAVA演算法,資料結構,加密演算法,分散式快取)
總結
我們總是喜歡瞻仰大廠的大神們,但實際上大神也不過凡人,與菜鳥程式設計師相比,也就多花了幾分心思,如果你再不努力,差距也只會越來越大。實際上,作為程式設計師,豐富自己的知識儲備,提升自己的知識深度和廣度是很有必要的。