前段時間去面試了阿里的Java崗,已經拿到了offer。整理了一份阿里最新的Java面試題大綱,文末附參考答案。分享給大家,希望對大家有幫助哈~
一、基礎與框架
1.String類能被繼承嗎,為什么
2.String,Stringbuffer,StringBuilder的區別?
3.ArrayList和LinkedList有什么區別
4.類的實例化順序,比如父類靜態數據,構造函數,字段,子類靜態數據,構造函數,字段,他們的執行順序
5.用過哪些Map,都有什么區別,HashMap是線程安全的嗎,並發下使用的Map是什么,他們內部原理分別是什么,比如hashcode,擴容等
6.HashMap為什么get和set那么快,concurrentHashMap為什么能提高並發
7.抽象類和接口的區別,類可以繼承多個類么,接口可以繼承多個接口么,類可以實現多個接口么
8.什么情況下會發生棧內存溢出
9.什么是nio,原理
10.反射中,Class.forName和ClassLoader區別
11.tomcat結構,類加載器流程
12.講講Spring事務的傳播屬性,AOP原理,動態代理與cglib實現的區別,AOP有哪幾種實現方式
13.Spring的beanFactory和factoryBean的區別
14.Spring加載流程
15.Spring如何管理事務的
二、多線程
1.線城池的最大線程數目根據什么確定
2.多線程的幾種實現方式,什么是線程安全,什么是重排序
3.volatile的原理,作用,能代替鎖么
4.sleep和wait的區別,以及wait的實現原理
5.Lock與synchronized 的區別,synchronized 的原理,什么是自旋鎖,偏向鎖,輕量級鎖,什么叫可重入鎖,什么叫公平鎖和非公平鎖
6.用過哪些原子類,他們的參數以及原理是什么
7.用過哪些線程池,他們的原理簡單概括下,構造函數的各個參數的含義,比如coreSize,maxsize等
8.有一個第三方接口,有很多個線程去調用獲取數據,現在規定每秒鍾最多有10個線程同時調用它,如何做到。
9.spring的controller是單例還是多例,怎么保證並發的安全
10.用三個線程按順序循環打印abc三個字母,比如abcabcabc
11.ThreadLocal用過么,原理是什么,用的時候要注意什么
12.如果讓你實現一個並發安全的鏈表,你會怎么做
三、JVM相關
1.jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點講講對象如何晉升到老年代,幾種主要的jvm參數等
2.你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms
3.當出現了內存溢出,你怎么排錯
4.JVM內存模型的相關知識了解多少
5.簡單說說你了解的類加載器
6.JAVA的反射機制
四、網絡
1.http1.0和http1.1有什么區別
2.TCP三次握手和四次揮手的流程,為什么斷開連接要4次,如果握手只有兩次,會出現什么
3.TIME_WAIT和CLOSE_WAIT的區別
4.說說你知道的幾種HTTP響應碼
5.當你用瀏覽器打開一個鏈接的時候,計算機做了哪些工作步驟
6.Linux下IO模型有幾種,各自的含義是什么
7.TCP/IP如何保證可靠性,數據包有哪些數據組成
五、架構設計與分布式
1.tomcat如何調優,各種參數的意義
2.常見的緩存策略有哪些,你們項目中用到了什么緩存系統,如何設計的,Redis的使用要注意什么,持久化方式,內存設置,集群,淘汰策略等
3.如何防止緩存雪崩
4.用java自己實現一個LRU
5.分布式集群下如何做到唯一序列號
6.設計一個秒殺系統,30分鍾沒付款就自動關閉交易
7.如何做一個分布式鎖
8.用過哪些MQ,怎么用的,和其他mq比較有什么優缺點,MQ的連接是線程安全的嗎
9.MQ系統的數據如何保證不丟失
10.分布式事務的原理,如何使用分布式事務
11.什么是一致性hash
12.什么是restful,講講你理解的restful
13.如何設計建立和保持100w的長連接?
14.解釋什么是MESI協議(緩存一致性)
15.說說你知道的幾種HASH算法,簡單的也可以
16.什么是paxos算法
17.redis和memcached 的內存管理的區別
18.一個在線文檔系統,文檔可以被編輯,如何防止多人同時對同一份文檔進行編輯更新
六、算法
1. 10億個數字里里面找最小的10個
2.有1億個數字,其中有2個是重復的,快速找到它,時間和空間要最優
3. 2億個隨機生成的無序整數,找出中間大小的值
4.遍歷二叉樹
七、數據庫
1.數據庫隔離級別有哪些,各自的含義是什么,MYsql默認的隔離級別是是什么,各個存儲引擎優缺點
2.高並發下,如何做到安全的修改同一行數據,樂觀鎖和悲觀鎖是什么,INNODB的行級鎖有哪2種,解釋其含義
3.SQL優化的一般步驟是什么,怎么看執行計划,如何理解其中各個字段的含義,索引的原理?
4.數據庫會死鎖嗎,舉一個死鎖的例子,mysql怎么解決死鎖
5.MYsql的索引實現方式
6.聚集索引和非聚集索引的區別
7.數據庫中 BTREE和B+tree區別
八、參考答案
博主已將上面這些阿里的Java面試題及參考答案整理成了一份PDF版的文檔,大家關注我的微信公眾號:Java團長,然后回復“面試手冊”即可獲取~