1. 程式人生 > 實用技巧 >1年+經驗社招Java面經大總結分享

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

在這裡插入圖片描述

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援。一鍵三連哦!