1年+經驗社招Java面經大總結分享
騷話沒有,直接開始!
常考知識點
1、java的基本資料型別與包裝類;
2、final修飾變數類方法;
3、String為什麼是不可變的,以及new String(“abc”)建立了幾個物件;
4、String、StringBuffer、以及StringBuilder的區別;
5、static修飾變數,方法,程式碼塊;
6、重寫跟過載的區別;
7、介面跟抽象類;
8、反射、繼承、列舉、異常等知識點;
9、為什麼要重寫hashcode和equals方法,以及hashcode相同equals是否相同;
10、JDK 1.7與1.8之前的區別;
11、i++ 和 ++i;
集合相關
1、ArrayList的底層實現、擴容過程、add過程、Fail-Fast機制;
2、ArrayList與Linkedlist、Vectot的區別;
3、如何獲得一個執行緒安全的List;
4、CopyOnWriteArrayList是如何實現執行緒安全的;
5、Linkedlist的底層實現,以及如何使用LinkedList實現一個LRU;
6、TreeSet、HashSet、LinkedHashSet的底層實現以及之間的區別;
7、PriorityQueue、LinkedBlockingQueue、ArrayBlockingQueue的實現以及區別;
8、HashMap的底層實現,擴容過程,達到閾值一定會擴容嗎、put過程、樹化過程,如何確定負載因子、以及為什麼執行緒不安全和1.8做了哪些優化;
9、HashMap與HashTable的區別,如何獲得一個執行緒安全的Map;
10、ConcurrentHashMap為什麼是執行緒安全的,以及1.8做了哪些優化;
11、LinkedHashMap的底層實現,以及如何實現LRU;
12、TreeMap的底層實現;
13、迭代器的實現;
JVM相關
1、執行時資料區域,以及各個區域中存放什麼,如何進行互動的;
2、一個物件從建立到回收的整個過程(從類載入到GC),能掌握這個基本就沒什麼太大的問題;
3、堆中的物件都存放什麼資料,以及物件頭中的資料(Synchronized鎖升級過程中常問道);
4、判斷記憶體區域是否需要回收、垃圾收集演算法、垃圾收集器(主要掌握CMS、G1當然越多越好);
5、記憶體分配策略(如何在Eden和老年代中分配)、回收策略(Minor GC、Full GC);
6、Java記憶體模型(不是java記憶體區域),常線上程中問道(volatitle的設計與實現);
7、虛擬機器類載入機制,類的生命週期,類載入器(可以嘗試一下手寫類載入器有被問道過)、雙親委派模型;
8、Jvm調優與故障處理,可以自己手動實現以下;
多執行緒與鎖
1、程序與執行緒的區別,怎麼根據硬體確定你最大建立的執行緒數(執行緒池需要考慮);
2、執行緒建立的方法,如何獲得一個帶返回值的執行緒;
3、執行緒的狀態、執行緒的屬性;
4、執行緒間的通訊、sleep、yield、join、wait、notify\notifyAll、訊號量、管道,以及sleep與wait的區別;
5、鎖、偏向鎖、輕量級鎖、重量級鎖、樂觀鎖、悲觀鎖、自旋鎖、共享鎖、排他鎖、可重入鎖和非可重入鎖;
6、volatitle的底層實現;
7、synchronized底層實現、鎖升級過程和例項鎖跟類鎖的區別,以及與Lock的區別;
8、CAS、AQS的原理與實現;
9、ReentrantLock、ReentrantReadWriteLock、StampedLock實現原理以及特點;
10、ThreadLocal的特性與底層原理;
11、執行緒池建立需要的引數、如何設定引數、執行緒池的執行過程、高併發下如何12、使用執行緒池;
Mysql相關
1、innoDB跟myisam的區別;
2、InnoDB的索引實現,唯一索引、覆蓋索引、字首索引、聯合索引、最左匹配原則;
3、什麼時候需要索引,以及如何選擇索引;
4、MVCC的原理、redo、undo、回滾段;
5、自增鎖、共享鎖、排他鎖、意向鎖、插入意向鎖、記錄鎖、間隙鎖是什麼;
6、事務的四大特性、併發一致性導致的問題、四種隔離級別解決的問題以及如何實現的(加了什麼鎖);
7、第三正規化;
8、如何優化mysql;
Redis相關
1、Redis為什麼這麼快;
2、Redis資料結構以及底層實現;
3、Redis持久化機制、RDB、AOF以及如何選擇,AOF重寫;
4、Resdis過期鍵刪除策略、記憶體淘汰策略;
5、Redis事務;
6、Redis高可用、高效能、Redis 主從架構、Redis Sentinel、Redis叢集方案;
7、快取穿透、快取擊穿、快取雪崩原因以及解決方案;
Spring相關
1、介紹一下IOC和AOP;
2、spring配置bean例項化有哪些方式;
3、Bean注入屬性有哪幾種方式;
4、Spring bean的作用域;
5、Spring Bean的生命週期(建議看完整個IOC的生命週期有能力的看看原始碼);
6、Spring框架中的單例bean是執行緒安全的嗎,以及如何處理;
7、Spring AOP底層實現,以及兩種動態代理的實現(建議自己手動實現兩種代理方式);
8、AOP中的各種名詞概念;
9、迴圈依賴問題,要說三級快取;
10、Spring事務的傳播行為、隔離級別、超市屬性、只讀屬性,回滾規則;
11、以及Spring中的各種註解;
SpringBoot
1、Springboot啟動原理解析;
2、Springboot得生命週期;
3、SpringBoot自動配置模組;
4、SpringBoot Starters;
5、SpringBootApplication介紹;
SpringCloud
1、介紹各個元件的功能;
2、REST API與RPC;
3、Spring Cloud 和dubbo區別;
4、Eureka怎麼實現高可用;
5、什麼是Eureka的自我保護模式
6、Eureka和ZooKeeper都可以提供服務註冊與發現的功能,請說說兩個的區別;
Dubbo
1、服務註冊與發現;
2、SPI;
3、服務暴露過程;
4、服務引用;
5、降級;
6、負載均衡;
設計模式
1、工廠設計模式、策略模式、建造模式、外觀模式、單例設計模式、觀察模式等知道得越多越好;
2、一般面試官都會問你用過那種而不是框架中使用了哪些,反正我每次都說使用了策略模式(自己最好在程式碼中使用一種設計模式);
訊息佇列
1、專案中為什麼使用訊息佇列,訊息佇列可以用來幹什麼;
2、如何解決訊息重複消費、訊息丟失、訊息積壓、順序消費等問題;
3、如何保證訊息佇列得高可用性;
高併發場景
1、如何定時得往資料庫中插入500萬條資料以及刪除,保證資料插入正確做到最優解;
2、在高併發下如何設計使用Redis;
3、微服務和分散式是什麼;
4、BIO和NIO;
5、在高併發場景下如何設計一個介面,保證這個介面高效能高可用;
6、分散式鎖(Redis和zookeeper實現),和分散式事務。如果沒有了解過分散式事務建議自己用本地訊息表得方式實現,簡單至少有個整體得概念。
計算機網路
1、七層協議是什麼;
2、三次握手、四次揮手;
3、從瀏覽器輸入網址到返回網頁發生了什麼;
4、計算機網路瞭解不多,還被問道HTTP跟HTTPS,以及TCP一些深入得問題;
演算法
1、有時間得建議多刷刷演算法,沒時間得就看看常用演算法;
2、主要是資料結構,問了時間空間複雜度;
3、問了大頂堆;
4、如何讀取一個很大得檔案裡面存入了很多url怎麼找到最常用得url;
5、還有常見得url轉換問題;
6、連結串列逆轉,找兩個陣列中相同得數等等;
最後
針對最近很多人都在面試,我這邊也整理了相當多的面試專題資料,也有其他大廠的面經。希望可以幫助到大家。
上述的面試題答案都整理成文件筆記。 也還整理了一些面試資料&最新2020收集的一些大廠的面試真題(都整理成文件,小部分截圖),有需要的可以點選進入暗號:csdn
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援。一鍵三連哦!