本文涵蓋了阿里巴巴、騰訊、字節跳動、京東、華爲等大廠的Java面試真題,無論你是要面試大廠仍是普通的互聯網公司,這些面試題對你確定是有幫助的,畢竟大廠必定是行業的發展方向標杆,不少公司的面試官一樣會研究大廠的面試題。面試
與此同時,今年算法面試必定是會被問的,而算法不是光靠背面試題就有用的,它是須要數學邏輯思惟的,所以,小編會在文末爲你們準備一份很是優質的算法學習手冊,重點在於學習思惟方法,話很少說,直接開始上精選的大廠面試真題!算法
因爲文章篇幅限制,不可能將全部面試題以文字形式把大廠面試題展現出來,本篇爲你們精選了一些面試題sql

Java基礎
1.JAVA 中的幾種數據類型是什麼,各自佔用多少字節。緩存
2.String 類能被繼承嗎,爲何。安全
3. 兩個對象的 hashCode() 相同,則 equals() 也必定爲 true,對嗎?網絡
4. String 屬於基礎的數據類型嗎?數據結構
5.Java 中操做字符串都有哪些類?它們之間有什麼區別?多線程
6.Java 中 IO 流分爲幾種?併發
7.BIO、NIO、AIO 有什麼區別?負載均衡
8.用過哪些 Map 類,都有什麼區別,HashMap 時線程安全的嗎,併發下使用的 Map 是什麼,他們的內部原理分別是什麼,好比存儲方法,hashcode,擴容,默認容量等。
9. 如何將字符串反轉?
10.抽象類必需要有抽象方法嗎?
11.普通類和抽象類有哪些區別?
12.抽象類能使用 final 修飾嗎?
13.ArrayList 和 LinkedList 有什麼區別?
14.ConcurrentHashMap的數據結構(必考)
15.volatile做用(必考)
16.Atomic類如何保證原子性(CAS操做)(必考)
17.爲何要使用線程池(必考)

Redis
- Redis的應用場景
- Redis支持的數據類型(必考)
- zset跳錶的數據結構(必考)
- Redis的數據過時策略(必考)
- Redis的LRU過時策略的具體實現
- 如何解決Redis緩存雪崩,緩存穿透問題
- Redis的持久化機制(必考)
- Redis爲何是單線程的?
- 什麼是緩存穿透?怎麼解決?
- Redis持久化有幾種方式?
- Redis爲何這麼快?(必考)
- Redis怎麼實現分佈式鎖?
- Redis如何作內存優化?
- Redis淘汰策略有哪些?
- Redis常見的性能問題有哪些?該如何解決?
- Redis的使用要注意什麼?

ZooKeeper
- CAP定理
- ZAB協議
- leader選舉算法和流程
- zookeeper 是什麼?
- zookeeper 有幾種部署模式?
- zookeeper 怎麼保證主從節點的狀態同步?

Mysql
- 事務的基本要素
- 事務隔離級別(必考)
- 如何解決事務的併發問題(髒讀,幻讀)(必考)
- MVCC多版本併發控制(必考)
- binlog,redolog,undolog都是什麼,起什麼做用
- InnoDB的行鎖/表鎖
- myisam和innodb的區別,何時選擇myisam
- 爲何選擇B+樹做爲索引結構(必考)
- 索引B+樹的葉子節點均可以存哪些東西(必考)
- 查詢在何時不走(預期中的)索引(必考)
- sql如何優化
- explain是如何解析sql的
- order by原理

JVM
- 運行時數據區域(內存模型)(必考)
- 垃圾回收機制(必考)
- 垃圾回收算法(必考)
- Minor GC和Full GC觸發條件
- GC中Stop the world(STW)
- 各垃圾回收器的特色及區別
- 雙親委派模型
- JDBC和雙親委派模型關係
- JVM 中一次完整的 GC 流程是什麼樣子的,對象如何晉升到老年代,說說你知道的幾種主要的 JVM 參數

Spring
- Spring的IOC/AOP的實現(必考)
- 動態代理的實現方式(必考)
- Spring如何解決循環依賴(三級緩存)(必考)
- Spring的後置處理器
- Spring的@Transactional如何實現的(必考)
- Spring的事務傳播級別
- BeanFactory和ApplicationContext的聯繫和區別

其餘
- 高併發系統的限流如何實現
- 高併發秒殺系統的設計
- 負載均衡如何設計
操做系統篇
- 進程和線程的區別
- 進程同步的幾種方式
- 線程間同步的方式
- 什麼是緩衝區溢出。有什麼危害,其緣由是什麼
- 進程中有哪幾種狀態
- 分頁和分段有什麼區別

多線程篇
- 多線程的幾種實現方式,什麼是線程安全
- volatile 的原理,做用,能代替鎖嗎?
- sleep 和 wait 的區別
- sleep(0)的意義
- Lock 和 Synchronized 的區別
- synchronized 的原理是什麼,通常用在什麼地方(好比加載靜態方法和非靜態方法的區別)

補充
另外還會考一些計算機網絡之類的。像消息隊列,RPC框架這種考的比較少。計算機網絡就是分層啊,tcp/udp啊,三次握手之類的。操做系統就是進程與線程啊,進程的數據結構以及如何通訊之類的。
數據結構的排序算法也比較常考,考的話必定會讓你手寫個快排。剩下的算法題就靠LeetCode的積累了。其實非算法崗考的算法題都蠻簡單的,不少題徹底就是考察你智力是否正常,稍微難點的涉及到一些算法思想的按照LeetCode題目類型的分類,每種題作一兩道基本就能徹底應付面試了。
最後
面試是跳槽漲薪最直接有效的方式,立刻金九銀十來了,各位作好面試造飛機,工做擰螺絲的準備了嗎?
掌握了這些知識點,面試時在候選人中又能夠奪目很多,暴擊9999點。機會都是留給有準備的人,只有充足的準備,纔可能讓本身能夠在候選人中脫穎而出。
