1、Java 基礎java
1. String 類爲何是 final 的。mysql
2. HashMap 的源碼,實現原理,底層結構。web
3. 說說你知道的幾個 Java 集合類:list、set、queue、map 實現類咯。。。算法
4. 描述一下 ArrayList 和 LinkedList 各自實現和區別spring
5. Java 中的隊列都有哪些,有什麼區別。sql
6. 反射中,Class.forName 和 classloader 的區別數據庫
7. Java七、Java8 的新特性 (baidu 問的, 好 BT)設計模式
8. Java 數組和鏈表兩種結構的操做效率,在哪些狀況下 (從開頭開始,從結尾開始,從中間開始),哪些操做(插入,查找,刪除) 的效率高數組
9. Java 內存泄露的問題調查定位:jmap,jstack 的使用等等瀏覽器
10. string、stringbuilder、stringbuffer 區別
11. hashtable 和 hashmap 的區別
13 . 異常的結構,運行時異常和非運行時異常,各舉個例子
14. String a= 「abc」 String b = 「abc」 String c = new String(「abc」) String d = 「ab」 + 「c」 . 他們之間用 == 比較的結果
15. String 類的經常使用方法
16. Java 的引用類型有哪幾種
17. 抽象類和接口的區別
18. java 的基礎類型和字節大小。
19. Hashtable,HashMap,ConcurrentHashMap 底層實現原理與線程安全問題(建議熟悉 jdk 源碼,才能從容應答)
20. 若是不讓你用 Java Jdk 提供的工具,你本身實現一個 Map,你怎麼作。說了很久,說了 HashMap 源代碼,若是我作,就會借鑑 HashMap 的原理,說了一通 HashMap 實現
21. Hash 衝突怎麼辦?哪些解決散列衝突的方法?
22. HashMap 衝突很厲害,最差性能,你會怎麼解決? 從 O(n)提高到 log(n)咯,用二叉排序樹的思路說了一通
23. rehash
24. hashCode()與 equals() 生成算法、方法怎麼重寫
2、Java IO
1. 講講 IO 裏面的常見類,字節流、字符流、接口、實現類、方法阻塞。
2. 講講 NIO。
3. String 編碼 UTF-8 和 GBK 的區別?
4. 何時使用字節流、何時使用字符流?
5. 遞歸讀取文件夾下的文件,代碼怎麼實現
3、Java Web
1. session 和 cookie 的區別和聯繫,session 的生命週期,多個服務部署時 session 管理。
2. servlet 的一些相關問題
3. webservice 相關問題
4. jdbc 鏈接,forname 方式的步驟,怎麼聲明使用一個事務。舉例並具體代碼
5. 無框架下配置 web.xml 的主要配置內容
6. jsp 和 servlet 的區別
4、JVM
1. Java 的內存模型以及 GC 算法
2. jvm 性能調優都作了什麼
3. 介紹 JVM 中 7 個區域,而後把每一個區域可能形成內存的溢出的狀況說明
4. 介紹 GC 和 GC Root 不正常引用。
5. 本身從 classload 加載方式,加載機制說開去,從程序運行時數據區,講到內存分配,講到 String 常量池,講到 JVM 垃圾回收機制,算法,hotspot。反正就是各類擴展
6. jvm 如何分配直接內存, new 對象如何不分配在堆而是棧上,常量池解析
7. 數組多大放在 JVM 老年代(不僅是設置 PretenureSizeThreshold ,問一般多大,沒作過一問便知)
8. 老年代中數組的訪問方式
9. GC 算法,永久代對象如何 GC , GC 有環怎麼處理
10. 誰會被 GC ,何時 GC
11. 若是想不被 GC 怎麼辦
12. 若是想在 GC 中生存 1 次怎麼辦
5、開源框架
1. hibernate 和 ibatis 的區別
2. 講講 mybatis 的鏈接池。
3. spring 框架中須要引用哪些 jar 包,以及這些 jar 包的用途
4. springMVC 的原理
5. springMVC 註解的意思
6. spring 中 beanFactory 和 ApplicationContext 的聯繫和區別
7. spring 注入的幾種方式(循環注入)
8. spring 如何實現事物管理的
9. springIOC
10. spring AOP 的原理
11. hibernate 中的 1 級和 2 級緩存的使用方式以及區別原理(Lazy-Load 的理解)
12. Hibernate 的原理體系架構,五大核心接口,Hibernate 對象的三種狀態轉換,事務管理。
6、多線程
1. Java 建立線程以後,直接調用 start()方法和 run() 的區別
2. 經常使用的線程池模式以及不一樣線程池的使用場景
3. newFixedThreadPool 此種線程池若是線程數達到最大值後會怎麼辦,底層原理。
4. 多線程之間通訊的同步問題,synchronized 鎖的是對象,衍伸出和 synchronized 相關不少的具體問題,例如同一個類不一樣方法都有 synchronized 鎖,一個對象是否能夠同時訪問。或者一個類的 static 構造方法加上 synchronized 以後的鎖的影響。
5. 瞭解可重入鎖的含義,以及 ReentrantLock 和 synchronized 的區別
6. 同步的數據結構,例如 concurrentHashMap 的源碼理解以及內部實現原理,爲何他是同步的且效率高
7. atomicinteger 和 Volatile 等線程安全操做的關鍵字的理解和使用
8. 線程間通訊,wait 和 notify
9. 定時線程的使用
10. 場景:在一個主線程中,要求有大量 (不少不少) 子線程執行完以後,主線程才執行完成。多種方式,考慮效率。
11. 進程和線程的區別
12. 什麼叫線程安全?舉例說明
13. 線程的幾種狀態
14. 併發、同步的接口或方法
15. HashMap 是否線程安全,爲什麼不安全。 ConcurrentHashMap,線程安全,爲什麼安全。底層實現是怎麼樣的。
16. J.U.C 下的常見類的使用。 ThreadPool 的深刻考察; BlockingQueue 的使用。(take,poll 的區別,put,offer 的區別);原子類的實現。
17. 簡單介紹下多線程的狀況,從創建一個線程開始。而後怎麼控制同步過程,多線程經常使用的方法和結構
18. volatile 的理解
19. 實現多線程有幾種方式,多線程同步怎麼作,說說幾個線程裏經常使用的方法
7、網絡通訊
1. http 是無狀態通訊,http 的請求方式有哪些,能夠本身定義新的請求方式麼。
2. socket 通訊,以及長鏈接,分包,鏈接異常斷開的處理。
3. socket 通訊模型的使用,AIO 和 NIO。
4. socket 框架 netty 的使用,以及 NIO 的實現原理,爲何是異步非阻塞。
5. 同步和異步,阻塞和非阻塞。
6. OSI 七層模型,包括 TCP,IP 的一些基本知識
7. http 中,get post 的區別
8. 說說 http,tcp,udp 之間關係和區別。
9. 說說瀏覽器訪問http://www.taobao.com,經歷了怎樣的過程。
10. HTTP 協議、 HTTPS 協議,SSL 協議及完整交互過程;
11. tcp 的擁塞,快回傳,ip 的報文丟棄
12. https 處理的一個過程,對稱加密和非對稱加密
13. head 各個特色和區別
8、數據庫 MySql
1. MySQL 的存儲引擎的不一樣
2. 單個索引、聯合索引、主鍵索引
3. mysql 怎麼分表,以及分表後若是想按條件分頁查詢怎麼辦 (若是不是按分表字段來查詢的話,幾乎效率低下,無解)
4. 分表以後想讓一個 id 多個表是自增的,效率實現
5. MySql 的主從實時備份同步的配置,以及原理 (從庫讀主庫的 binlog),讀寫分離
6. 寫 SQL 語句。。。
7. 索引的數據結構,B+ 樹
8. 事務的四個特性,以及各自的特色(原子、隔離)等等,項目怎麼解決這些問題
9. 數據庫的鎖:行鎖,表鎖;樂觀鎖,悲觀鎖
10. 數據庫事務的幾種粒度;
11. 關係型和非關係型數據庫區別
9、設計模式
1. 單例模式:飽漢、餓漢。以及餓漢中的延遲加載, 雙重檢查
2. 工廠模式、裝飾者模式、觀察者模式。
3. 工廠方法模式的優勢(低耦合、高內聚,開放封閉原則)
10、算法
1. 使用隨機算法產生一個數,要求把 1-1000W 之間這些數所有生成。(考察高效率,解決產生衝突的問題)
2. 兩個有序數組的合併排序
3. 一個數組的倒序
4. 計算一個正整數的正平方根
5. 說白了就是常見的那些查找、排序算法以及各自的時間複雜度
6. 二叉樹的遍歷算法
7. DFS,BFS 算法
9. 比較重要的數據結構,如鏈表,隊列,棧的基本理解及大體實現。
10. 排序算法與時空複雜度(快排爲何不穩定,爲何你的項目還在用)
11. 逆波蘭計算器
12. Hoffman 編碼
13. 查找樹與紅黑樹
11、併發與性能調優
1. 有個每秒鐘 5k 個請求,查詢手機號所屬地的筆試題 (記得不完整,沒列出),如何設計算法? 請求再多,好比 5w,如何設計整個系統?
2. 高併發狀況下,咱們系統是如何支撐大量的請求的
3. 集羣如何同步會話狀態
4. 負載均衡的原理
5 . 若是有一個特別大的訪問量,到數據庫上,怎麼作優化(DB 設計,DBIO,SQL 優化,Java 優化)
6. 若是出現大面積併發,在不增長服務器的基礎上,如何解決服務器響應不及時問題「。
7. 假如你的項目出現性能瓶頸了,你以爲可能會是哪些方面,怎麼解決問題。
8. 如何查找 形成 性能瓶頸出現的位置,是哪一個位置照成性能瓶頸。
9. 你的項目中使用過緩存機制嗎?有沒用用戶非本地緩存
12、其餘
1. 經常使用的 Linux 下的命令