1. 程式人生 > >Java面試重點(不斷更新)

Java面試重點(不斷更新)

Java基礎

  • Java記憶體模型
  • 多型(過載重寫)
  • object方法
  • 類訪問許可權
  • sleep、notify、wait 聯絡、區別
  • String、stringbuffer、stringbuilder 聯絡、區別、原始碼
  • volatile 原理、原始碼、與syn區別
  • 執行緒實現的三種方式(繼承、Runnable、Callable)
  • 執行緒間通訊方式(wait/notify 、await/signal) :

集合框架

List

三者區別,聯絡,原始碼

Set

  • HashSet
  • LinkedHashSet
  • TreeSet

基於什麼實現,內部資料結構,適用場景,原始碼

Map

  • weakHashMao
  • LinkedHashMap
  • TreeMap

HashMap與hashtable的區別

內部實現原理、原始碼、適用場景

併發包

ConcurrentHashMap

ReentantLock

  • 與syn的區別、好處、場景

Condition

  • 與wait、notify的區別、好處

Executors

  • 執行緒池種類、各個作用、適用場景

ThreadPoolExecutor

CopyOnWriteArrayList (set)

  • 什麼情況加鎖、什麼情況不加鎖、適用場景

ArrayblockingQueue (Linked)

  • 兩者區別,take、put、offer、poll方法原理、原始碼

AtomicInteger (long boolean)

  • 功能

CountDownLatch

  • 功能、場景

CyclicBarrier

  • 功能、場景

Semaphore

  • 好處、場景

FutureTask (Callable)

  • 原始碼、場景

ReentrantReadWriteLock

  • 讀寫分離的好處、適用場景、原始碼

JDK8

  • Lamda表示式
  • stream

虛擬機器

JVM五大區

  • 每個區的儲存、作用

JVM記憶體模型

垃圾收集器

  • 常用gc演算法
  • 收集器種類、適用場景
  • fullGC、MinorGC觸發條件

JVM優化

  • 日誌查詢
  • 各項引數設定
  • 四種引用

IO流

BIO

  • 位元組流:型別、適用場景
  • 字元流:型別、適用場景

NIO

  • 型別、適用場景
  • 三大元件的聯絡、使用
  • 記憶體情況

資料庫

主從複製

  • 原理、實現

讀寫分離

  • 原理、實現

事務

資料庫鎖

MVCC

儲存引擎

  • InnoDB
  • MyISAM
  • 區別、聯絡、鎖機制、適用場景

索引

SQL優化

WEB

Tomcat

Servlet

  • 生命週期
  • 三種實現方式

springMVC

spring

mybatis

  • 使用
  • #、$區別
  • 一級、二級快取

設計模式

  • 單例模式
  • 工廠模式
  • 觀察者模式
  • 介面卡模式
  • 模版方法模式
  • 策略模式
  • 責任鏈模式
  • 裝飾者模式
  1. 常用的八種掌握就行,原理,使用
  2. 單例、工廠、觀察者重點

資料結構

二叉樹

  • 平衡二叉樹
  • 二叉查詢樹
  • 紅黑樹
  • 完全二叉樹
  • 滿二叉樹

概念、適用場景、時間複雜度、好處壞處

B樹


兩者的聯絡、區別、適用場景

演算法

排序演算法

  • 直接插入排序
  • 二分插入排序
  • 希爾插入排序
  • 氣泡排序
  • 快排
  • 選擇排序
  • 堆排序
  • 歸併排序
  1. 各種排序的思想
  2. 實現複雜度
  3. 穩定性如何
  4. 可以手寫

動態規劃

貪心演算法

網路

TCP

  • 三次握手、四次揮手、各種狀態、狀態改變
  • 和UDP的區別

IO模型

  • 同步、非同步、阻塞、非阻塞概念
  • 模型種類、各自特點、適用場景
  • 如何使用

分散式

一致性演算法

  • 2PC
  • 3PC
  • Paxos
  • Raft

分散式鎖

  • 資料庫鎖實現
  • 快取實現
  • Zookeeper實現

中介軟體

  • 快取
  • 訊息佇列
  • Zookeeper

Linux基礎

  • 常用命令
  • 管道符
  • 檢視日誌相關命令
  • CPU使用命令