二、Java基礎
- 什麼是字符串常量池?
- String爲什麼是不可變的?
- String s = new String("xyz");究竟產生了幾個對象,從JVM角度談談?
- String拼接字符串效率低,你知道原因嗎?
- 你真的瞭解String的常見API嗎?
- Java中的subString()真的會引起內存泄露麼?
- 淺析Java中的final關鍵字?
- 淺析Java中的static關鍵字?
- 你對Java中的volatile關鍵字瞭解多少?
- i++是線程安全的嗎?如何解決線程安全性?
- 從字節碼角度深度解析 i++ 和 ++i 線程安全性原理?
- 請談談什麼是CAS?
- 從源碼角度看看ArrayList的實現原理?
- 手寫LinkedList的實現,徹底搞清楚什麼是鏈表?
- Java中方法參數的傳遞規則?
- other -Java中throw和throws的區別是什麼?
- other- 重載和重寫的區別?
- 手寫ArrayList的實現,在筆試中如何過關斬將?
- other - finally語句塊你踩過哪些坑?
- other - 爲什麼重寫equals方法需同時重寫hashCode方法?
- equals() 與 == 的區別?
- StringBuffer和StringBuilder的區別,從源碼角度分析?
- 位運算
- 你知道HashMap的數據結構嗎?
- 爲何HashMap的數組長度一定是2的次冪?
- HashMap何時擴容以及它的擴容機制?
- HashMap的key一般用字符串,能用其他對象嗎?
- HashMap的key和value都能爲null麼?如果key能爲null,那麼它是怎麼樣查找值的?
- HashMap是線程安全的嗎?如何實現線程安全?
- 從源碼角度分析HashSet實現原理?
- HashTable與HashMap的實現原理有什麼不同?
- String方法intern() 你真的會用嗎?
- 什麼是自動拆裝箱?
文檔: int 和Intrger.note
鏈接:http://note.youdao.com/noteshare?id=c3c1b16295d6aeda2054350d5721dd0c&sub=45d6a131914a04c33c2010c75f8a475b文檔:String
鏈接:http://note.youdao.com/noteshare?id=56eed3165ec260e01681d3d272b66485
三、Java多線程
文檔:G1-0 線程的狀態轉換以及基本操作.note
鏈接:http://note.youdao.com/noteshare?id=c8210c9a15bf2a06e3dbf488b9fb63c4&sub=1857606E23F042C09A8A890A36F08750
- 多線程有幾種實現方式?
- 啓動線程是用start()方法還是run()方法?
- 說說線程安全問題,什麼實現線程安全,如何實現線程安全?
- sychronized和Lock的區別?
- sleep()和wait()的區別?
- 深入分析ThreadLocal的實現原理?
- 你看過AbstractQueuedSynchronizer源碼閱讀嗎,請說說實現原理?
- 談談對synchronized的偏向鎖、輕量級鎖、重量級鎖的理解?
- 通過三種方式實現生產者消費者模式?
- JVM層面分析sychronized如何保證線程安全的?
- JDK層面分析sychronized如何保證線程安全的?
- 如何寫一個線程安全的單例?
- 通過AQS實現一個自定義的Lock?
- ThreadLocal什麼時候會出現OOM的情況?爲什麼?
- 爲什麼wait, notify 和 notifyAll這些方法不在thread類裏面?
- 你真的理解CountDownLatch與CyclicBarrier使用場景嗎?
- 出現死鎖,如何排查定位問題?
- notify和notifyAll的區別?
- 線程池啓動線程submit和execute有什麼不同?
- SimpleDateFormat是線程安全的嗎?如何解決?
- 請談談ConcurrentHashmap底層實現原理?
- 使用synchronized修飾靜態方法和非靜態方法有什麼區別?
- 當一個線程進入一個對象的一個synchronized方法後,其它線程是否可進入此對象的其方法?
- 線程池的原理,爲什麼要創建線程池?創建線程池的方式?
- 創建線程池有哪幾個核心參數? 如何合理配置線程池的大小?
- synchronized修飾的靜態方法和非靜態方法有什麼區別?
四、Java Web
文檔:(2) JavaWeb
鏈接:http://note.youdao.com/noteshare?id=8c746923058a4761d57917527438ebe6
- 什麼是Servlet,Servlet生命週期方法?
- 什麼Session和Cookie,它們之間有什麼聯繫?
- JSP的八個隱含對象有哪些?
- JSP的四個域對象的作用範圍?
- Post和Get請求的區別?
- 轉發和重定向有什麼區別?
- JSP自定義標籤,如何實現循環打印功能?
- Http1.0和Http1.1的區別是什麼?
- 攔截器與過濾器的區別?
五、JVM面試題
- JVM內存區域如何劃分?
- JVM堆中對象是如何創建的?
- JVM對象的結構?
- JVM垃圾回收-如何判斷對象是否是垃圾對象?
- JVM垃圾回收算法有哪些?
- JVM垃圾收集器有哪些?
- JVM內存是如何分配的?
- 從一道面試題分析類的加載過程?
- JVM雙親委派機制?
- JVM可以作爲GC Root的對象有哪些?
- 請寫出幾段可以導致內存溢出、內存泄漏、棧溢出的代碼?
- 哪些情況會導致Full GC?
- 頻繁GC問題或內存溢出問題,如何定位?
六、SQL性能優化
- 數據庫三範式是什麼?
- 數據庫的事務、ACID及隔離級別?
- 不考慮事務的隔離性,容易產生哪三種情況?
- 數據庫連接池原理?
- 什麼是B-Tree?
- 什麼是B+Tree?
- MySQL數據庫索引結構?
- 什麼是索引?什麼條件適合建立索引?什麼條件不適合建立索引?
- 索引失效的原因有哪些?如何優化避免索引失效?
- MySQL如何啓動慢查詢日誌?
- MySQL如何使用show Profile進行SQL分析?
- 一條執行慢的SQL如何進行優化,如何通過Explain+SQL分析性能?
- 什麼是行鎖、表鎖、讀鎖、寫鎖,說說它們各自的特性?
- 什麼情況下行鎖變表鎖?
- 什麼情況下會出現間隙鎖?
- 談談你對MySQL的in和exists用法的理解?
- MySQL的數據庫引擎有哪些,如何確定在項目中要是用的存儲引擎?
- count(*)、count(列名)和count(1)的區別?
- union和union all的區別?
七、Spring框架
- Spring的IOC和AOP機制?
- Spring中Autowired和Resource關鍵字的區別?
- 依賴注入的方式有幾種,各是什麼?
- Spring容器對Bean組件是如何管理的?
- Spring容器如何創建?
- Spring事務分類?
- Spring事務的傳播特性?
- Spring事務的隔離級別?
- Spring的通知類型有哪些?
八、SpringMVC框架
- SpringMVC完整工作流程,熟讀源碼流程?
- SpringMVC如何處理JSON數據?
- SpringMVC攔截器原理,如何自定義攔截器?
- SpringMVC如何將請求映射定位到方法上面?結合源碼闡述?
- SpringMVC常見註解有哪些?
- SpringMVC容器和Spring容器的區別?
- SpringMVC的控制器是不是單例模式,如果是,有什麼問題,怎麼解決?
九、MyBatis框架
- MyBatis中#和$的區別?
- MyBatis一級緩存原理以及失效情況?
- MyBatis二級緩存的使用?
- MyBatis攔截器原理?
- 看過MyBatis源碼嗎,請說說它的工作流程?
十、Java高級部分
- Dubbo負載均衡策略?
- Dubbo中Zookeeper做註冊中心,如果註冊中心集羣都掛掉,發佈者和訂閱者之間還能通信麼?
- Dubbo完整的一次調用鏈路介紹?
- 請說說SpringBoot自動裝配原理?
- 有用過SpringCloud嗎,請說說SpringCloud和Dubbo有什麼不一樣?
- 什麼是WebService,如何基於WebService開發接口?
- 談談項目中分佈式事務應用場景?
- 使用Redis如何實現分佈式鎖?
- 請談談單點登錄原理?
- Tomcat如何優化?
- 後臺系統怎麼防止請求重複提交?
- Linux常見命令有哪些?
- 請說說什麼是Maven的依賴、繼承以及聚合?
- Git暫存區和工作區的區別?
- Git如何創建、回退以及撤銷版本?
- 常見的設計模式有哪些?
(1)其他面試題鏈接
(1)https://blog.csdn.net/weixin_38405770/article/details/86657613
(2)java趴