前言
我相信大多 Java 開發的程序員或多或少經歷過阿里的面試,也清楚阿里 Java面試是有必定難度的,做者經歷過屢次阿里的面試,有滿意的也有備受打擊的。所以呢做者想把本身這麼屢次面試經從來個彙總,正值金九銀十之際,但願對你們有所幫助。mysql
另外本人整理收藏了20年多家公司面試知識點整理 ,以及各類Java核心知識點免費分享給你們,我認爲對面試來講是很是有用的,有須要的朋友能夠點擊這裏!暗號博客園自行領取react
阿里面試題程序員
因爲時間關係答案我就不寫了(主要是懶),都總結成筆記了面試
在阿里面試仍是很舒服的,面試官以爲有難度的話會適可而止,不會讓你以爲不會而感到尷尬,一面的知識也不是很難redis
一面算法
1.HashMap的數據結構——引出Java7跟Java8的區別spring
2.在什麼狀況下會作一個鏈表到紅黑樹的轉換sql
3.除了數據結構以外,Java8跟Java7在HashMap上還有什麼不一樣docker
4.擴容的過程,在什麼狀況下會擴容數據庫
5.擴容機制中的capacity初始值爲何是16,可不能夠自定義成15,爲何必定要是2的指數次方
6.簡單介紹一下hash算法,它的核心性能,或者說判斷一個hash算法好壞的指標是什麼,indexFor()函數的實現
7.HashMap爲了解決什麼問題?——引出哈希碰撞
8.介紹ConcurrentHashMap的數據結構
9.ConcurrentHashMap能夠支持多少併發線程
10.ConcurrentHashMap屬於JOC下的一個類,對JOC這個包的瞭解
11.是否用過synchronized,以前是否碰到過併發問題,怎麼處理
12.在Java技術棧方面,有沒有比較擅長或者深刻了解的點,是否從源碼上看過一些東西
Netty原理介紹下。
瞭解過NIO,BIO,AIO麼?介紹下異同,代碼中如何使用?
分佈式鎖用過麼?用什麼函數?什麼使用場景?
能介紹下垃圾回收機制麼?
redis的數據結構介紹下。項目中用過哪些?什麼場景
18 冪等性是什麼?如何保障?
數據庫
1.對MySQL瞭解多少——引出必問知識點(劃重點!!!事務和索引)
2.MySQL用的隔離級別是什麼,這個隔離級別下會出現什麼問題——引出數據庫的併發問題
3.MySQL使用這種隔離級別時,是如何解決幻讀問題的(引伸,理解其餘併發問題的解決原理)
4.MySQL的調優機制,主要是哪些方面的調優——引出索引
5.在MySQL的InnoDB這個存儲引擎下,彙集索引(或者聚簇索引)和非彙集索引這兩個概念
6.MySQL中的索引是用什麼數據結構存儲的——此處應該引出B+樹
7.爲何經過索引查詢速度會更快一些——此處應該引出二叉樹算法
二面
自我介紹
項目中的mongoDB使用場景是啥?如何部署的?怎麼保證高可用性?
JVM的內存結構能介紹下麼?
CMS和G1的優缺點?何時發生FULL GC?何時stop the world!
什麼樣的對象能當根節點?
一個類,兩個函數,一讀一寫,寫函數加synchronized,讀函數還用加麼?voliate關鍵字啥做用?
數據庫設計時,主鍵咋設?自增好仍是非自增好?爲啥?
mysql的鎖類型介紹下
線上CPU 100%了怎麼查?
寫個算法,給一個數字,一個單調數組中,方法返回數組中第一個大於給定數字的下標,若是沒有,返回-1。
三面
說實話第三輪就是比較深度的問題了,都是結合業務談談本身的程序思想,若是沒有必定的技術和開發經驗這個是回答不完整的,本人就是倒在了這一關。
如何實現一個高效的單向鏈表逆序輸出?
已知sqrt(2)約等於1.414,要求不用數學庫,求sqrt(2)精確到小數點後10位
給定一個二叉搜索樹(BST),找到樹中第 K 小的節點
LRU緩存機制
關於epoll和select的區別,如下哪些說法是正確的
從innodb的索引結構分析,爲何索引的 key 長度不能太長
給定一個鏈表,刪除鏈表的倒數第N個節點,而且返回鏈表的頭結點
若是讓你設計一個通用的、支持各類數據庫秒級備份和恢復的系統,你會如何設計
若是讓你來設計一個支持數據庫、NOSQL 和大數據之間數據實時流動的數據流及處理的系統,你會考慮哪些問題?如何設計?
給定一個整數數組和一個整數,返回兩個數組的索引,這兩個索引指向的數字的加和等於指定的整數。須要最優的算法,分析算法的空間和時間複雜度
假如給你一個新產品,你將從哪些方面來保障它的質量?
請評估一下程序的執行結果?
騰訊面試題
Java基礎
1.JAVA中的幾種基本數據類型是什麼,各自佔用多少字節。
2.String類能被繼承嗎,爲何。
3.String,Stringbuffer,StringBuilder的區別。
4.ArrayList和LinkedList有什麼區別。
5.講講類的實例化順序,好比父類靜態數據,構造函數,字段,子類靜態數據,構造函數,字段,當new的時候,他們的執行順序。
6.用過哪些Map類,都有什麼區別,HashMap是線程安全的嗎,併發下使用的Map是什麼,他們內部原理分別是什麼,好比存儲方式,hashcode,擴容,默認容量等。
7.JAVA8的ConcurrentHashMap爲何放棄了分段鎖,有什麼問題嗎,若是你來設計,你如何設計。
8.有沒有有順序的Map實現類,若是有,他們是怎麼保證有序的。
9.抽象類和接口的區別,類能夠繼承多個類麼,接口能夠繼承多個接口麼,類能夠實現多個接口麼。
10.繼承和聚合的區別在哪。
11.IO模型有哪些,講講你理解的nio ,他和bio,aio的區別是啥,談談reactor模型。
12.反射的原理,反射建立類實例的三種方式是什麼。
13.反射中,Class.forName和ClassLoader區別 。
14.描述動態代理的幾種實現方式,分別說出相應的優缺點。
15.動態代理與cglib實現的區別。
16.爲何CGlib方式能夠對接口實現代理。
17.final的用途。
18.寫出三種單例模式實現 。
19.Java中的HashSet內部是如何工做的。
20.什麼是序列化,怎麼序列化,爲何序列化,反序列化會遇到什麼問題,如何解決。
JVM
21.什麼狀況下會發生棧內存溢出。
22.JVM的內存結構,Eden和Survivor比例。
23.JVM內存爲何要分紅新生代,老年代,持久代。新生代中爲何要分爲Eden和Survivor。
24.JVM中一次完整的GC流程是怎樣的,對象如何晉升到老年代,說說你知道的幾種主要的JVM參數。
25.你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms和G1,包括原理,流程,優缺點。
26.垃圾回收算法的實現原理。
27.當出現了內存溢出,你怎麼排錯。
28.簡單說說你瞭解的類加載器,能夠打破雙親委派麼,怎麼打破。
29.g1和cms區別,吞吐量優先和響應優先的垃圾收集器選擇。
30.怎麼打出線程棧信息。
開源框架
31.簡單講講tomcat結構,以及其類加載器流程,線程模型等。
32.tomcat如何調優,涉及哪些參數 。
33.講講Spring加載流程。
34.Spring AOP的實現原理。
35.講講Spring事務的傳播屬性。
36.Spring如何管理事務的。
37.說說你對Spring的理解,非單例注入的原理?它的生命週期?循環注入的原理,aop的實現原理,說說aop中的幾個術語,它們是怎麼相互工做的。
38.Springmvc 中DispatcherServlet初始化過程。
39.netty的線程模型,netty如何基於reactor模型上實現的。
40.netty的通信協議是什麼樣的。
41.springmvc用到的註解,做用是什麼,原理。
42.springboot啓動機制
百度面試題
一、自我介紹以及項目介紹
二、spring-cloud是否瞭解,spring-boot是瞭解,講一講bean的生命週期
三、hashmap-1.8後的改進,hashmap爲何是線程不安全的
四、如何作到線程安全,concurrenthashmap是怎麼實現的
五、用到哪些的設計模式
六、ThreadLocal用過嗎
七、類的加載機制
八、JVM-內存模型
九、垃圾回收
十、redis源碼有讀過嗎
12.反射的做用是什麼?
數據倉庫,多線程和併發工具等?
私有云,docker和k8s等?
瞭解哪些中間件,dubbo,rocketmq,mycat等?
dubbo中的rpc如何實現?
本身實現rpc應該怎麼作?
dubbo的服務註冊與發現?
19.給你一個有序整數數組,數組中的數能夠是正數、負數、零,請實現一個函數,這個函數返回一個整數:返回這個數組全部數的平方值中有多少種不一樣的取值。
總結
互聯網大廠比較喜歡的人才特色:對技術有熱情,強硬的技術基礎實力;主動,善於團隊協做,善於總結思考。不管是哪家公司,都很重視高併發高可用技術,重視基礎,因此千萬別小看任何知識。面試是一個雙向選擇的過程,不要抱着畏懼的心態去面試,不利於本身的發揮。同時看中的應該不止薪資,還要看你是否是真的喜歡這家公司,是否是能真的獲得鍛鍊。其實我寫了這麼多,只是我本身的總結,並不必定適用於全部人,相信通過一些面試,你們都會有這些感觸。
最後
本人還整理收藏了20年多家公司面試知識點以及各類技術點整理 下面有部分截圖,須要的朋友能夠點擊這裏!暗號博客園自行領取