吐血整理,350道Java最全面試題集合

java基礎

  1. 八種基本數據類型的大小,以及他們的封裝類
  2. 引用數據類型
  3. Switch可否用string作參數
  4. equals與==的區別
  5. 自動裝箱,常量池
  6. Object有哪些公用方法
  7. Java的四種引用,強弱軟虛,用到的場景
  8. Hashcode的做用
  9. HashMap的hashcode的做用
  10. 爲何重載hashCode方法?
  11. ArrayList、LinkedList、Vector的區別
  12. String、StringBuffer與StringBuilder的區別
  13. Map、Set、List、Queue、Stack的特色與用法
  14. HashMap和HashTable的區別
  15. JDK7與JDK8中HashMap的實現
  16. HashMap和ConcurrentHashMap的區別,HashMap的底層源碼
  17. ConcurrentHashMap能徹底替代HashTable嗎
  18. 爲何HashMap是線程不安全的
  19. 如何線程安全的使用HashMap
  20. 多併發狀況下HashMap是否還會產生死循環
  21. TreeMap、HashMap、LindedHashMap的區別
  22. Collection包結構,與Collections的區別
  23. try?catch?finally,try裏有return,finally還執行麼
  24. Excption與Error包結構,OOM你遇到過哪些狀況,SOF你遇到過哪些狀況
  25. Java(OOP)面向對象的三個特徵與含義
  26. Override和Overload的含義去區別
  27. Interface與abstract類的區別
  28. Static?class?與non?static?class的區別
  29. java多態的實現原理
  30. foreach與正常for循環效率對比
  31. Java?IO與NIO
  32. java反射的做用於原理
  33. 泛型經常使用特色
  34. 解析XML的幾種方式的原理與特色:DOM、SAX
  35. Java1.7與1.8,1.9,10 新特性
  36. AOP是什麼
  37. OOP是什麼
  38. AOP與OOP的區別
  39. 什麼是多態
  40. 什麼是面向對象
  41. 類與對象的關係
  42. java中的包裝類都有哪些?
  43. 一個java類中包含那些內容?
  44. ++i與i++的區別
  45. Java中各類數據默認值
  46. Java最頂級的父類是哪一個?
  47. java中有沒有指針?
  48. 假設數組內有5個元素,若是對數組進行反序,該如何作?
  49. 構造方法能不能顯式調用?
  50. 內部類與靜態內部類的區別?

多線程

  1. 併發編程三要素?
  2. 實現可見性的方法有哪些?
  3. 多線程的價值?
  4. 建立線程的有哪些方式?
  5. 建立線程的三種方式的對比?
  6. 線程的狀態流轉圖
  7. Java線程具備五中基本狀態
  8. 什麼是線程池?有哪幾種建立方式?
  9. 四種線程池的建立:
  10. 線程池的優勢?
  11. 經常使用的併發工具類有哪些?
  12. CyclicBarrier和CountDownLatch的區別
  13. synchronized的做用?
  14. volatile關鍵字的做用
  15. 什麼是CAS
  16. CAS的問題
  17. 什麼是Future?
  18. 什麼是AQS
  19. AQS支持兩種同步方式:
  20. ReadWriteLock是什麼
  21. FutureTask是什麼
  22. synchronized和ReentrantLock的區別
  23. 什麼是樂觀鎖和悲觀鎖
  24. 線程B怎麼知道線程A修改了變量
  25. synchronized、volatile、CAS比較
  26. sleep方法和wait方法有什麼區別?
  27. ThreadLocal是什麼?有什麼用?
  28. 爲何wait()方法和notify()/notifyAll()方法要在同步塊中被調用
  29. 多線程同步有哪幾種方法?
  30. 線程的調度策略
  31. ConcurrentHashMap的併發度是什麼
  32. Linux環境下如何查找哪一個線程使用CPU最長
  33. Java死鎖以及如何避免?
  34. 死鎖的緣由
  35. 怎麼喚醒一個阻塞的線程
  36. 不可變對象對多線程有什麼幫助
  37. 什麼是多線程的上下文切換
  38. 若是你提交任務時,線程池隊列已滿,這時會發生什麼
  39. Java中用到的線程調度算法是什麼
  40. 什麼是線程調度器(Thread Scheduler)和時間分片(Time Slicing)?
  41. 什麼是自旋
  42. Java Concurrency API中的Lock接口(Lock interface)是什麼?對比同步它有什麼優點?
  43. 單例模式的線程安全性
  44. Semaphore有什麼做用
  45. Executors類是什麼?
  46. 線程類的構造方法、靜態塊是被哪一個線程調用的
  47. 同步方法和同步塊,哪一個是更好的選擇?
  48. Java線程數過多會形成什麼異常?

Mysql

  1. Mysql中有哪幾種鎖?
  2. Mysql中有哪些不一樣的表格?
  3. 簡述在MySQL數據庫中MyISAM和InnoDB的區別
  4. Mysql中InnoDB支持的四種事務隔離級別名稱,以及逐級之間的區別?
  5. CHAR和VARCHAR的區別?
  6. 主鍵和候選鍵有什麼區別?
  7. 你怎麼看到爲表格定義的全部索引?
  8. LIKE聲明中的%和_是什麼意思?
  9. 如何在Unix和Mysql時間戳之間進行轉換?
  10. 列對比運算符是什麼?
  11. BLOB和TEXT有什麼區別?
  12. mysql_fetch_array和mysql_fetch_object的區別是什麼?
  13. Mysql如何優化DISTINCT?
  14. 如何顯示前50行?
  15. 可使用多少列建立索引?
  16. 若是一個表有一列定義爲TIMESTAMP,將發生什麼?
  17. 列設置爲AUTO INCREMENT時,若是在表中達到最大值,會發生什麼狀況?
  18. 怎樣才能找出最後一次插入時分配了哪一個自動增量?
  19. NOW()和CURRENT_DATE()有什麼區別?
  20. 什麼是非標準字符串類型?
  21. 什麼是通用SQL函數?
  22. MYSQL支持事務嗎?
  23. mysql裏記錄貨幣用什麼字段類型好
  24. mysql有關權限的表都有哪幾個?
  25. 列的字符串類型能夠是什麼?
  26. MySQL數據庫做發佈系統的存儲,數據量增大的狀況,怎麼優化?
  27. 鎖的優化策略
  28. 索引的底層實現原理和優化
  29. 什麼狀況下設置了索引但沒法使用
  30. 實踐中如何優化MySQL
  31. 優化數據庫的方法
  32. 簡單描述mysql中,索引,主鍵,惟一索引,聯合索引的區別,對數據庫的性能有什麼影響(從讀寫兩方面)
  33. 數據庫中的事務是什麼?
  34. SQL注入漏洞產生的緣由?如何防止?
  35. 對於關係型數據庫而言,索引是至關重要的概念,請回答有關索引的幾個問題
  36. 解釋MySQL外鏈接、內鏈接與自鏈接的區別
  37. Myql中的事務回滾機制概述
  38. SQL語言包括哪幾部分?每部分都有哪些操做關鍵字?
  39. 完整性約束包括哪些?
  40. 什麼是鎖?
  41. 什麼是存儲過程?用什麼來調用?
  42. 如何通俗地理解三個範式?
  43. NULL是什麼意思
  44. 主鍵、外鍵和索引的區別?
  45. 你能夠用什麼來確保表格裏的字段只接受特定範圍裏的值?
  46. 說說對SQL語句優化有哪些方法?

Redis

  1. Redis支持哪幾種數據類型?
  2. Redis主要有哪些功能?
  3. Redis是單進程單線程的?
  4. Redis爲何是單線程的?
  5. 其它開源軟件採用的模型
  6. 使用Redis的優點?
  7. Redis單點吞吐量
  8. Redis相比memcached有哪些優點?
  9. Redis有哪幾種數據淘汰策略?
  10. Redis集羣方案應該怎麼作?都有哪些方案?
  11. Redis讀寫分離模型
  12. Redis數據分片模型
  13. Redis提供了哪幾種持久化方式?
  14. 如何選擇合適的持久化方式?
  15. Redis常見性能問題和解決方案?
  16. Redis支持的Java客戶端都有哪些?官方推薦用哪一個?
  17. Redis哈希槽的概念?
  18. Redis集羣最大節點個數是多少?
  19. Redis集羣的主從複製模型是怎樣的?
  20. Redis集羣會有寫操做丟失嗎?爲何?
  21. Redis集羣之間是如何複製的?
  22. Redis如何作內存優化?
  23. Redis回收進程如何工做的?
  24. Redis回收使用的是什麼算法?
  25. Redis有哪些適合的場景?

JVM

  1. gc`的概念,若是A和B對象循環引用,是否能夠被GC?
  2. jvm gc如何判斷對象是否須要回收,有哪幾種方式?
  3. Java中能不能主動觸發GC
  4. JVM的內存結構,堆和棧的區別
  5. JVM堆的分代
  6. Java中的內存溢出是什麼,和內存泄露有什麼關係
  7. Java的類加載機制,什麼是雙親委派
  8. ClassLoader的類加載方式
  9. jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點講講對象如何晉升到老年代,幾種主要的jvm參數等
  10. 你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms
  11. 當出現了內存溢出,你怎麼排錯
  12. JVM內存模型的相關知識瞭解多少
  13. 簡單說說你瞭解的類加載器
  14. JAVA的反射機制
  15. JVM調優的常見命令行工具備哪些?
  16. 介紹一下CMS,G1收集器
  17. Minor Gc和Full GC 有什麼不一樣呢?
  18. 垃圾收集有哪些算法,各自的特色?
  19. HotSpot爲何要分爲新生代和老年代?
  20. 簡單說說類加載過程,裏面執行了哪些操做?
  21. 描述一下 JVM 加載 Class 文件的原理機制?
  22. 什麼是類加載器?
  23. 類加載器有哪些?
  24. 什麼是tomcat類加載機制?
  25. 類加載器雙親委派模型機制?
  26. Java 內存分配?
  27. Java 堆的結構是什麼樣子的?
  28. 簡述各個版本內存區域的變化?
  29. 說說各個區域的做用?
  30. Java 中會存在內存泄漏嗎,簡述一下?
  31. Java 類加載過程?
  32. 什麼是GC? 爲何要有 GC?
  33. 簡述一下Java 垃圾回收機制?
  34. 如何判斷一個對象是否存活?
  35. 垃圾回收的優勢和原理,並考慮 2 種回收機制?基本原理是什麼?
  36. 深拷貝和淺拷貝?
  37. 什麼是分佈式垃圾回收(DGC)?它是如何工做的?
  38. 在 Java 中,對象何時能夠被垃圾回收?
  39. 簡述Minor GC 和 Major GC?
  40. Java 中垃圾收集的方法有哪些?
  41. 講講你理解的性能評價及測試指標?
  42. 經常使用的性能優化方式有哪些?
  43. 說說分佈式緩存和一致性哈希?
  44. 什麼是GC調優?
  45. 什麼是jvm?Java虛擬包含什麼?

分佈式:

  1. 什麼是CAP定理?
  2. 說說CAP理論和BASE理論?
  3. 什麼是最終一致性?最終一致性實現方式?
  4. 什麼是一致性Hash?
  5. 講講分佈式事務?
  6. 如何實現分佈式鎖?
  7. 如何實現分佈式 Session?
  8. 如何保證消息的一致性?
  9. 負載均衡的理解?
  10. 正向代理和反向代理?
  11. CDN實現原理?
  12. 怎麼提高系統的QPS和吞吐?
  13. Dubbo的底層實現原理和機制?
  14. 描述一個服務從發佈到被消費的詳細過程?
  15. 分佈式系統怎麼作服務治理?
  16. 消息中間件如何解決消息丟失問題?
  17. Dubbo的服務請求失敗怎麼處理?
  18. 對分佈式事務的理解?
  19. 如何實現負載均衡,有哪些算法能夠實現?
  20. Zookeeper的用途,選舉的原理是什麼?
  21. 講講數據的垂直拆分水平拆分?
  22. zookeeper原理和適用場景?
  23. zookeeper watch機制?
  24. redis/zk節點宕機如何處理?
  25. 分佈式集羣下如何作到惟一序列號?
  26. 用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎?
  27. MQ系統的數據如何保證不丟失?
  28. 列舉出能想到的數據庫分庫分表策略?

經常使用框架:

spring:

  1. 什麼是 Spring 框架?Spring 框架有哪些主要模塊?
  2. 使用 Spring 框架能帶來哪些好處?
  3. 什麼是控制反轉(IOC)?什麼是依賴注入?
  4. 請解釋下 Spring 框架中的 IoC?
  5. BeanFactory 和 ApplicationContext 有什麼區別?
  6. Spring 有幾種配置方式?
  7. 如何用基於 XML 配置的方式配置 Spring?
  8. 如何用基於 Java 配置的方式配置 Spring?
  9. 怎樣用註解的方式配置 Spring?
  10. 請解釋 Spring Bean 的生命週期?
  11. Spring Bean 的做用域之間有什麼區別?
  12. 什麼是 Spring inner beans?
  13. Spring 框架中的單例 Beans 是線程安全的麼?
  14. 請舉例說明如何在 Spring 中注入一個 Java Collection?
  15. 如何向 Spring Bean 中注入一個 Java.util.Properties?
  16. 請解釋 Spring Bean 的自動裝配?
  17. 請解釋自動裝配模式的區別?
  18. 如何開啓基於註解的自動裝配?
  19. 請舉例解釋@Required 註解?
  20. 請舉例解釋@Autowired 註解?
  21. 請舉例說明@Qualifier 註解?
  22. 構造方法注入和設值注入有什麼區別?
  23. Spring 框架中有哪些不一樣類型的事件?
  24. FileSystemResource 和 ClassPathResource 有何區別?
  25. Spring 框架中都用到了哪些設計模式

springboot:

  1. 什麼是 Spring Boot?
  2. Spring Boot 有哪些優勢?
  3. 什麼是 JavaConfig?
  4. 如何從新加載 Spring Boot 上的更改,而無需從新啓動服務器?
  5. Spring Boot 中的監視器是什麼?
  6. 如何在 Spring Boot 中禁用 Actuator 端點安全性?
  7. 如何在自定義端口上運行 Spring Boot 應用程序?
  8. 什麼是 YAML?
  9. 如何實現 Spring Boot 應用程序的安全性?
  10. 如何集成 Spring Boot 和 ActiveMQ?
  11. 如何使用 Spring Boot 實現分頁和排序?
  12. 什麼是 Swagger?你用 Spring Boot 實現了它嗎?
  13. 什麼是 Spring Profiles?
  14. 什麼是 Spring Batch?
  15. 什麼是 FreeMarker 模板?
  16. 如何使用 Spring Boot 實現異常處理?
  17. 您使用了哪些 starter maven 依賴項?
  18. 什麼是 CSRF 攻擊?
  19. 什麼是 WebSockets?
  20. 什麼是 Apache Kafka?
  21. 咱們如何監視全部 Spring Boot 微服務?

Mybatis:

  1. #{}和${}的區別是什麼?
  2. Mybatis是什麼
  3. Mybatis 中一級緩存與二級緩存的區別?
  4. 使用 MyBatis 的 mapper 接口調用時有哪些要求?
  5. MyBatis實現一對多有幾種方式,怎麼操做的?
  6. Mybatis 與Spring MVC的整合 ?

計算機網絡

1.http1.0和http1.1有什麼區別java

2.TCP三次握手和四次揮手的流程,爲何斷開鏈接要4次,若是握手只有兩次,會出現什麼mysql

3.TIME_WAIT和CLOSE_WAIT的區別linux

4.說說你知道的幾種HTTP響應碼redis

5.當你用瀏覽器打開一個連接的時候,計算機作了哪些工做步驟算法

6.Linux下IO模型有幾種,各自的含義是什麼spring

7.TCP/IP如何保證可靠性,數據包有哪些數據組成sql

8.架構設計與分佈式:數據庫

9.tomcat如何調優,各類參數的意義編程

10.常見的緩存策略有哪些,大家項目中用到了什麼緩存系統,如何設計的,Redis的使用要注意什麼,持久化方式,內存設置,集羣,淘汰策略等設計模式

11.如何防止緩存雪崩

12.用java本身實現一個LRU

13.分佈式集羣下如何作到惟一序列號

14.設計一個秒殺系統,30分鐘沒付款就自動關閉交易

15.如何作一個分佈式鎖

16.用過哪些MQ,怎麼用的,和其餘mq比較有什麼優缺點,MQ的鏈接是線程安全的嗎

17.MQ系統的數據如何保證不丟失

18.分佈式事務的原理,如何使用分佈式事務

19.什麼是一致性hash

20.什麼是restful,講講你理解的restful

21.如何設計創建和保持100w的長鏈接?

22.解釋什麼是MESI協議(緩存一致性)

23.說說你知道的幾種HASH算法,簡單的也能夠

24.什麼是paxos算法

數據結構:

  1. 數組和鏈表的區別。

  2. 簡述快速排序過程

  3. 快速排序的改進

  4. 各種排序算法對比

  5. 用循環比遞歸效率高嗎?

  6. KMP算法

  7. 二叉樹

  8. 什麼是數據結構

  9. java數據結構有哪些?

設計模式:

  1. 請列舉出在 JDK 中幾個經常使用的設計模式?
  2. 什麼是設計模式?你是否在你的代碼裏面使用過任何設計模式?
  3. Java 中什麼叫單例設計模式?請用 Java 寫出線程安全的單例模式
  4. 在 Java 中,什麼叫觀察者設計模式(observer design pattern)?
  5. 使用工廠模式最主要的好處是什麼?在哪裏使用?
  6. 舉一個用 Java 實現的裝飾模式(decorator design pattern)?它是做用於對象層次仍是類
  7. 在 Java 中,何時用重載,何時用重寫?
  8. 舉例說明什麼狀況下會更傾向於使用抽象類而不是接口。

Linux:

  1. 簡述raid0 raid1 raid5 三種工做模式的工做原理及特色
  2. LVS、Nginx、HAproxy有什麼區別?工做中你怎麼選擇?
  3. Squid、Varinsh和Nginx有什麼區別,工做中你怎麼選擇?
  4. Tomcat和Resin有什麼區別,工做中你怎麼選擇?
  5. 如何看當前Linux系統有幾顆物理CPU和每顆CPU的核數?
  6. 查看系統負載有兩個經常使用的命令,是哪兩個?這三個數值表示什麼含義呢?
  7. linux系統裏,您知道buffer和cache如何區分嗎?
  8. 如何實時查看網卡流量爲多少?如何查看歷史網卡流量?
  9. 如何查看當前系統都有哪些進程?
  10. 如何查看系統都開啓了哪些端口?
  11. 如何查看網絡鏈接情況?
  12. 想修改ip,須要編輯哪一個配置文件,修改完配置文件後,如何重啓網卡,使配置生效?
  13. 如何查看當前主機的主機名,如何修改主機名?要想重啓後依舊生效,須要修改哪一個配 置文件呢?
  14. 設置DNS須要修改哪一個配置文件?
  15. 如何能夠把系統中不用的服務關掉?
相關文章
相關標籤/搜索