1. 程式人生 > 其它 >Java面試複習重點:一份非常適合收藏的Java進階面試題

Java面試複習重點:一份非常適合收藏的Java進階面試題

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演算法,資料結構,加密演算法,分散式快取)

總結

我們總是喜歡瞻仰大廠的大神們,但實際上大神也不過凡人,與菜鳥程式設計師相比,也就多花了幾分心思,如果你再不努力,差距也只會越來越大。實際上,作為程式設計師,豐富自己的知識儲備,提升自己的知識深度和廣度是很有必要的。

送大家一份資料,戳這裡免費領取

Mybatis原始碼解析