java面試題

1、Java基礎和高級

1.String類爲何是final的。java

2.HashMap的源碼,實現原理,底層結構。mysql

3.反射中,Class.forName和classloader的區別linux

4.session和cookie的區別和聯繫,session的生命週期,多個服務部署時session管理。面試

5.Java中的隊列都有哪些,有什麼區別。redis

6.Java的內存模型以及GC算法算法

7.Java七、Java8的新特性spring

8.Java數組和鏈表兩種結構的操做效率,在哪些狀況下(從開頭開始,從結尾開始,從中間開始),哪些操做(插入,查找,刪除)的效率高sql

9.Java內存泄露的問題調查定位:jmap,jstack的使用等等shell

2、spring框架

  1. spring框架中須要引用哪些jar包,以及這些jar包的用途
  2. srpingMVC的原理
  3. springMVC註解的意思
  4. spring中beanFactory和ApplicationContext的聯繫和區別
  5. spring注入的幾種方式
  6. spring如何實現事物管理的
  7. springIOC和AOP的原理
  8. spring中循環注入的方式
  9. Spring AOP與IOC的實現原理
  10. Spring的beanFactory和factoryBean的區別
  11. Spring的事務隔離級別,實現原理
  12. 對Spring的理解,非單例注入的原理?它的生命週期?循環注入的原理,aop的實現原理,說說aop中的幾個術語,它們是怎麼相互工做的?
  13. spring boot特性,優點,適用場景等

3、java多線程常見問題

1.Java建立線程以後,直接調用start()方法和run()的區別數據庫

2.經常使用的線程池模式以及不一樣線程池的使用場景

3.newFixedThreadPool此種線程池若是線程數達到最大值後會怎麼辦,底層原理。

4.多線程之間通訊的同步問題,synchronized鎖的是對象,衍伸出和synchronized相關不少的具體問題,例如同一個類不一樣方法都有synchronized鎖,一個對象是否能夠同時訪問。或者一個類的static構造方法加上synchronized以後的鎖的影響。

5.瞭解可重入鎖的含義,以及ReentrantLock 和synchronized的區別

6.同步的數據結構,例如concurrentHashMap的源碼理解以及內部實現原理,爲何他是同步的且效率高

7.atomicinteger和volatile等線程安全操做的關鍵字的理解和使用

8.線程間通訊,wait和notify

4、網絡通訊

1.http是無狀態通訊,http的請求方式有哪些,能夠本身定義新的請求方式麼。

2.socket通訊,以及長鏈接,分包,鏈接異常斷開的處理。

3.socket通訊模型的使用,AIO和NIO。

4.socket框架netty的使用,以及NIO的實現原理,爲何是異步非阻塞。

5.同步和異步,阻塞和非阻塞。

5、經常使用Linux命令

1.經常使用的linux下的命令

2.大的log文件中,統計異常出現的次數、排序,或者指定輸出多少行多少列的內容。

3.linux下的調查問題思路:內存、CPU、句柄數、過濾、查找、模擬POST和GET請求等等場景

4.shell腳本

6、數據庫MySql

1.MySql的存儲引擎的不一樣

2.單個索引、聯合索引、主鍵索引

3.Mysql怎麼分表,以及分表後若是想按條件分頁查詢怎麼辦(若是不是按分表字段來查詢的話,幾乎效率低下,無解)

4.分表以後想讓一個id多個表是自增的,效率實現

5.MySql的主從實時備份同步的配置,以及原理(從庫讀主庫的binlog),讀寫分離

6.事物的四個特性,以及各自的特色(原子、隔離)等等,項目怎麼解決這些問題

7、設計模式(寫代碼)

1.單例模式:飽漢、餓漢。以及餓漢中的延遲加載

2.工廠模式、裝飾者模式、觀察者模式等

8、算法&數據結構&設計模式

  1. 使用隨機算法產生一個數,要求把1-1000W之間這些數所有生成。(考察高效率,解決產生衝突的問題)
  2. 兩個有序數組的合併排序
  3. 一個數組的倒序
  4. 計算一個正整數的正平方根
  5. 說白了就是常見的那些查找排序算法
  6. 數組和鏈表數據結構描述,各自的時間複雜度
  7. 二叉樹遍歷
  8. 快速排序
  9. BTree相關的操做
  10. 在工做中遇到過哪些設計模式,是如何應用的
  11. hash算法的有哪幾種,優缺點,使用場景
  12. 什麼是一致性hash
  13. paxos算法

9、分佈式緩存

1.爲何用緩存,用過哪些緩存,redis和memcache的區別

2.redis的數據結構

3.redis的持久化方式,以及項目中用的哪一種,爲何

4.redis集羣的理解,怎麼動態增長或者刪除一個節點,而保證數據不丟失。(一致性哈希問題)

線程池、高併發、NIO

  1. 分析線程池的實現原理和線程的調度過程
  2. 線程池如何調優
  3. 線程池的最大線程數目根據什麼肯定
  4. 動態代理的幾種方式
  5. HashMap的併發問題
  6. 瞭解LinkedHashMap的應用嗎
  7. 反射的原理,反射建立類實例的三種方式是什麼?
  8. cloneable接口實現原理,淺拷貝or深拷貝
  9. Java NIO使用
  10. hashtable和hashmap的區別及實現原理,hashmap會問到數組索引,hash碰撞怎麼解決
  11. arraylist和linkedlist區別及實現原理
  12. 反射中,Class.forName和ClassLoader區別
  13. String,Stringbuffer,StringBuilder的區別?
  14. 有沒有可能2個不相等的對象有相同的hashcode
  15. 簡述NIO的最佳實踐,好比netty,mina
  16. TreeMap的實現原理

JVM相關(面試必考)

  1. JVM內存分代
  2. Java 8的內存分代改進
  3. JVM垃圾回收機制,什麼時候觸發MinorGC等操做
  4. jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點講講對象如何晉升到老年代,幾種主要的jvm參數等
  5. 你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms,g1
  6. 新生代和老生代的內存回收策略
  7. Eden和Survivor的比例分配等
  8. 深刻分析了Classloader,雙親委派機制
  9. JVM的編譯優化
  10. 對Java內存模型的理解,以及其在併發中的應用
  11. 指令重排序,內存柵欄等
  12. OOM錯誤,stackoverflow錯誤,permgen space錯誤
  13. JVM經常使用參數

分佈式相關

  1. Dubbo的底層實現原理和機制
  2. 描述一個服務從發佈到被消費的詳細過程
  3. 分佈式系統怎麼作服務治理
  4. 接口的冪等性的概念
  5. 消息中間件如何解決消息丟失問題
  6. Dubbo的服務請求失敗怎麼處理
  7. 重連機制會不會形成錯誤
  8. 對分佈式事務的理解
  9. 如何實現負載均衡,有哪些算法能夠實現?
  10. Zookeeper的用途,選舉的原理是什麼?
  11. 數據的垂直拆分水平拆分。
  12. zookeeper原理和適用場景
  13. zookeeper watch機制
  14. redis/zk節點宕機如何處理
  15. 分佈式集羣下如何作到惟一序列號
  16. 如何作一個分佈式鎖
  17. 用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎
  18. MQ系統的數據如何保證不丟失
  19. 列舉出你能想到的數據庫分庫分表策略;分庫分表後,如何解決全表查詢的問題。

數據庫

  1. MySQL InnoDB存儲的文件結構
  2. 索引樹是如何維護的?
  3. 數據庫自增主鍵可能的問題
  4. MySQL的幾種優化
  5. mysql索引爲何使用B+樹
  6. 數據庫鎖表的相關處理
  7. 索引失效場景
  8. 高併發下如何作到安全的修改同一行數據,樂觀鎖和悲觀鎖是什麼,INNODB的行級鎖有哪2種,解釋其含義
  9. 數據庫會死鎖嗎,舉一個死鎖的例子,mysql怎麼解決死鎖

Redis&緩存相關

  1. Redis的併發競爭問題如何解決了解Redis事務的CAS操做嗎
  2. 緩存機器增刪如何對系統影響最小,一致性哈希的實現
  3. Redis持久化的幾種方式,優缺點是什麼,怎麼實現的
  4. Redis的緩存失效策略
  5. 緩存穿透的解決辦法
  6. redis集羣,高可用,原理
  7. mySQL裏有2000w數據,redis中只存20w的數據,如何保證redis中的數據都是熱點數據
  8. 用Redis和任意語言實現一段惡意登陸保護的代碼,限制1小時內每用戶Id最多隻能登陸5次
  9. redis的數據淘汰策略
相關文章
相關標籤/搜索