前面給大家分享了一篇字節(jié)跳動拿下offer的面經(jīng),很多小伙伴都私信我說收獲很大,感興趣的朋友可以回頭去看看。很多小伙伴還問我有沒有其他大廠的面試題分享,這不他來啦,阿里2020春招面試題給大家整理在下面了!
一面:
1. 觸發(fā)新生代GC,如果存活對象總量大于survivor區(qū)容量,咋辦
2. 如果任務(wù)很多,線程池的阻塞隊列會撐爆內(nèi)存的哪個區(qū)域
3. 棧在堆上嗎
4. GC root有哪些
5. 實例變量可以是GC root嗎
6. 了解哪些GC算法,介紹一下
7. 給個場景,問怎么設(shè)置JVM參數(shù)
8. 問了很多SQL調(diào)優(yōu),各種語句能不能命中索引,能命中哪些,怎么優(yōu)化
9. MySQL的一張表里有三個字段ABC,A的種類有1000種,B有1W種,C有10W種,ABC的聯(lián)合索引怎么設(shè)置,怎么使用
10. Mybatis # 和 $ 的區(qū)別
11. Mybatis接口里的方法和XML里的SQL名可以不一樣嗎,不一樣怎么辦
12. Mybatis是如何完成SQL和接口里的方法的映射的(我回答了怎么配置),那你知道它是怎么實現(xiàn)的嗎
13. 介紹下Spring的 IOC和AOP
14. 服務(wù)器給客戶端發(fā)送IO流的過程
15. IO和NIO了解多少
16. 線程都有哪些狀態(tài),怎么轉(zhuǎn)換的
17. Notify和notifyAll的區(qū)別
18. 介紹線程池,不同線程池區(qū)別在哪,你平時怎么使用線程池的
19. MySQL索引的數(shù)據(jù)結(jié)構(gòu)
20. B+樹了解多少
21. Cookie和SessionId說一下
22. 鎖是怎么實現(xiàn)的
23. Synchronized同步塊和synchronized方法,分別鎖的是什么
24. 單例模式,餓漢和懶漢分別存在的問題
25. Volatile是怎么實現(xiàn)可見性的
26. 介紹下JMM
27. Happen before了解嗎
28. A happen before B,意味著A一定在B之前執(zhí)行嗎
29. 你做過的最難的項目中,最難的任務(wù)是什么,怎么解決的
二面:
1. 看過哪些源碼?
2. Java都有哪些map,分別怎么實現(xiàn)的,具體講
3. 除了LinkedHashMap,你還知道哪些有序map
4. ConcurrentHashMap講一講
5. 為什么要有線程池
6. 線程池有哪幾類?有什么區(qū)別?有哪些參數(shù)?拒絕策略有哪些
7. 阻塞隊列都有哪幾種,有什么區(qū)別
8. Java的反射怎么理解
9. Spring的IOC和AOP怎么理解
10. Spring項目啟動的時候會加載哪些資源,順序是怎么樣的
11. 瀏覽器輸入一個URL,會發(fā)生什么,整個過程說一下
12. Http講一講,請求有哪些內(nèi)容,響應(yīng)有哪些內(nèi)容
13. 你筆試分好高,平時刷過很多題嗎?怎么刷的?
三面(leader面):
1. MySQL的高可用了解多少,高性能了解多少
2. 淘寶有1000T的數(shù)據(jù),單機(jī)存不下,怎么辦?有沒有辦法只訪問一次服務(wù)器?一致性Hash懂多少
3. MySQL和redis有啥區(qū)別
4. MySQL數(shù)據(jù)備份怎么做
5. Redis底層原理會多少
6. Redis為啥比MySQL快
7. Redis RDB可能會丟失數(shù)據(jù),怎么辦
8. Redis AOF不也要把日志寫到磁盤么,那和MySQL的IO有啥區(qū)別,憑啥Redis就快
9. Redis主從復(fù)制怎么做
10. 分布式緩存懂多少
11. 還知道其他NoSQL么
12. Java和C的優(yōu)缺點說一下
13. 有沒有用C寫過底層
14. Java的G1回收器詳細(xì)講一講
15. G1什么時候會stop the world
16. Linux操作系統(tǒng)有應(yīng)用過嗎
17. 對分布式和中間件掌握多少
18. 詳細(xì)介紹下你的項目
19. 你認(rèn)為你現(xiàn)在的項目有沒有什么可以擴(kuò)展和優(yōu)化的地方,講一講
20. 實驗室都是做什么的?為什么要轉(zhuǎn)互聯(lián)網(wǎng)?實驗室轉(zhuǎn)互聯(lián)網(wǎng)的同學(xué)多么
21. 有沒有發(fā)過論文?導(dǎo)師愿不愿意讓實習(xí)?
22. 對阿里的技術(shù)了解多少?對部門了解多少?
四面:
1. 數(shù)據(jù)庫索引常用的數(shù)據(jù)結(jié)構(gòu)
2. Juc源碼看過嗎?鎖的實現(xiàn)原理是什么?
3. CAS能深入的說一下嗎
4. 建造者模式說一下
5. 談一談筆試的心得(筆試分高)
6. 看過哪些書籍
7. 你打算接下來看哪一本書
8. 介紹下實驗室項目
9. 曾經(jīng)遇到的最大挑戰(zhàn)是什么,可以說實驗室項目、實習(xí)經(jīng)歷或者自己的項目
10. 怎么解決這個困難的
11. 項目中有沒有與人合作
12. 現(xiàn)在的offer情況
13. 自我評價一下
五面(交叉面):
1. 介紹下項目,項目的來源,是自己一個人做的么
2. 登錄驗證怎么做的
3. 講一講ThreadLocal
4. ThreadLocal怎么避免線程污染(沒聽懂啥意思)
5. 點贊怎么實現(xiàn)的
6. Redis持久化方式
7. MySQL存儲引擎區(qū)別
8. Myisam在只讀場景下,為什么一般比InnoDB快
9. Mybatis怎么使用
10. Mybatis # 和 $ 的區(qū)別
11. Spring中BeanFactory和ApplicationContext的區(qū)別
12. Spring中bean的作用域有哪些,有什么區(qū)別
13. 說出一個原型作用域的具體應(yīng)用場景
14. 學(xué)習(xí)過哪些設(shè)計模式,用過哪些設(shè)計模式
15. 生產(chǎn)者消費者模式講一講
16. 怎么實現(xiàn)阻塞隊列
17. 學(xué)過Linux嗎(基本沒學(xué)過)
18. 在Linux下,怎么查找一個目錄下的所有文件,要求輸出順序按照文件的創(chuàng)建時間排序
19. 給你一堆學(xué)生的信息,包括學(xué)號和姓名,讓你找出學(xué)號最靠前的10個人的姓名
20. PriorityQueue怎么實現(xiàn)的
21. 怎么求根號3(我說了二分法,用2的平方,1.5的平方,1.75的平方依次和3比較,縮小區(qū)間,直到達(dá)到精度要求)
22. 你這種求法太慢了,可以優(yōu)化嗎(我問:您是想問數(shù)值分析的知識么?面試官說:是的,你沒學(xué)過數(shù)值分析么?)
23. 斐波那契數(shù)列,求第n項的值(答了遞歸和DP兩種方式)
24. 如果數(shù)列長度100W,你的DP矩陣不是很大么?怎么優(yōu)化?(答:用兩個變量a,b記錄前兩個值,temp = a, a = b, b = a + temp,依次遞推)
25. 一個時鐘有時針分針和秒針,三針重合的最短時間間隔是多少?(完全沒思路,只知道一小時內(nèi)肯定不行,因為走得速度不一樣,一圈內(nèi)速度快的和速度慢的撞不上)
26. 平時怎么學(xué)習(xí)的
27. 最近在看哪本書,接下來打算看哪一本書
28. 自我評價下優(yōu)缺點
29. 怎么證明你的學(xué)習(xí)能力強