併發面試專題
(面試題+答案領取方式見主頁)
- 現在有 T1、T2、T3 三個線程,你怎樣保證 T2 在 T1 執行完後執行,T3 在 T2 執行完後執行?
- 在 Java 中 Lock 接口比 synchronized 塊的優勢是什麼?你需要實現一個高效的緩存,它允許多個用戶讀,但只允許一個用戶寫,以此來保持它的完整性,你會怎樣去實現它?
- 在 java 中 wait 和 sleep 方法的不同?
- 用 Java 實現阻塞隊列。
- 用 Java 寫代碼來解決生產者——消費者問題。
- 用 Java 編程一個會導致死鎖的程序,你將怎麼解決?
- 什麼是原子操作,Java 中的原子操作是什麼?
- Java 中的 volatile 關鍵是什麼作用?怎樣使用它?在 Java 中它跟 synchronized 方法有什麼不同?
- 什麼是競爭條件?你怎樣發現和解決競爭?
- 你將如何使用 threaddump?你將如何分析 Thread dump?
- 爲什麼我們調用 start()方法時會執行 run()方法,爲什麼我們不能直接調用 run()方法?
- Java 中你怎樣喚醒一個阻塞的線程?
- 在 Java 中 CycliBarriar 和 CountdownLatch 有什麼區別?
- 什麼是不可變對象,它對寫併發應用有什麼幫助?
- 你在多線程環境中遇到的常見的問題是什麼?你是怎麼解決它的?
Netty面試專題
- BIO、NIO 和 AIO 的區別?
- NIO 的組成?
- .Netty 的特點?
- Netty 的線程模型?
- TCP 粘包/拆包的原因及解決方法?
- 瞭解哪幾種序列化協議?
- 如何選擇序列化協議?
- Netty 的零拷貝實現?
- Netty 的高性能表現在哪些方面?
- NIOEventLoopGroup 源碼?
JVM面試專題
- 內存模型以及分區,需要詳細到每個區放什麼?
- 堆裏面的分區:Eden,survival (from+ to),老年代,各自的特點。
- 對象創建方法,對象的內存分配,對象的訪問定位。
- GC 的兩種判定方法
- SafePoint 是什麼
- GC 的三種收集方法:標記清除、標記整理、複製算法的原理與特點,分別用在什麼地方,如果讓你優化收集方法,有什麼思路?
- GC 收集器有哪些?CMS 收集器與 G1 收集器的特點。
- Minor GC 與 Full GC 分別在什麼時候發生?
- 幾種常用的內存調試工具
- 類加載的幾個過程
- JVM 內存分哪幾個區,每個區的作用是什麼?
- 如和判斷一個對象是否存活?(或者 GC 對象的判定方法)
- 簡述 java 垃圾回收機制?
- java 中垃圾收集的方法有哪些?
- java 內存模型
- java 類加載過程?
- 簡述 java 類加載機制?
- 類加載器雙親委派模型機制?
- 什麼是類加載器,類加載器有哪些?
20.簡述 java 內存分配與回收策率以及 Minor GC 和Major GC
Linux面試專題
- Linux 中主要有哪幾種內核鎖?
- Linux 中的用戶模式和內核模式是什麼含意?
- 怎樣申請大塊內核內存?
- 用戶進程間通信主要哪幾種方式?
- 通過夥伴系統申請內核內存的函數有哪些?
- Linux 虛擬文件系統的關鍵數據結構有哪些?(至少寫出四個)
- 對文件或設備的操作函數保存在那個數據結構中?
- Linux 中的文件包括哪些?
- 創建進程的系統調用有那些?
- 調用 schedule()進行進程切換的方式有幾種?
- Linux 調度程序是根據進程的動態優先級還是靜態優先級來調度進程的?
- 進程調度的核心數據結構是哪個?
- 如何加載、卸載一個模塊?
- 模塊和應用程序分別運行在什麼空間?
- Linux 中的浮點運算由應用程序實現還是內核實現?
- 模塊程序能否使用可鏈接的庫函數?
- TLB 中緩存的是什麼內容?
- Linux 中有哪幾種設備?
- 字符設備驅動程序的關鍵數據結構是哪個?
- 設備驅動程序包括哪些功能函數?
- 如何唯一標識一個設備?
- Linux 通過什麼方式實現系統調用?
- Linux 軟中斷和工作隊列的作用是什麼?