面試清單(Java崗):演算法+中介軟體+Spring+java+設計模式+JVM+資料庫

java架構00發表於2020-10-26

01 JAVA基礎

1.1 java知識點

Hashmap 原始碼能掌握,擴容,紅黑樹,最小樹化容量,hash衝突解決,有些面試官會提出發自靈魂的審問,比如為什麼是紅黑樹,別的樹不可以嗎;為什麼8的時候樹化,4不可以嗎,等等

concureentHashMap,段鎖,如何分段,和hashmap在hash上的區別,效能,等等

HashTable ,同步鎖,這塊可能會問你synchronized關鍵字 1.6之後提升了什麼,怎麼提升的這些

ArrayList 優勢,擴容,什麼時候用

LinkedList 優勢,什麼時候用,和arraylist的區別 等等

基本型別和包裝型別的區別,涉及自動裝箱和拆箱,怎麼做的,原理

String ,StringBuffer,StringBuilder哪個是安全的

字串編碼的區別,被問到過,我覺得比較容易被忽視的一個點

什麼是泛型,怎麼用泛型

static能不能修飾threadLocal,為什麼,這道題我當時一聽到其實挺懵逼的

Comparable和Comparator介面是幹什麼的,其區別

多型的原理是什麼,感覺這個很容易被問到

介面和抽象類,面試官問我是怎麼理解的,我說介面對應功能,抽象類對應屬性,然後面試官給我說了他的看法,說抽象類更偏向於一種模板~ 然後又交流了一下各自的想法

如何透過反射和設定物件私有欄位的值

快速失敗(fail-fast)和安全失敗(fail-safe)的區別是什麼

synchronized 的實現原理以及鎖最佳化?

volatile 的實現原理?

Java 的訊號燈?

synchronized 在靜態方法和普通方法的區別?

怎麼實現所有執行緒在等待某個事件的發生才會去執行?

CAS?CAS 有什麼缺陷,如何解決?

synchronized 和 lock 有什麼區別?

Hashtable 是怎麼加鎖的 ?

List,Map,Set介面在取元素時,各有什麼特點

如何執行緒安全的實現一個計數器

生產者消費者模式,要求手寫過程式碼,還是要知道的

單例模式,餓漢式,懶漢式,執行緒安全的做法,兩次判斷instance是否為空,每次判斷的作用是什麼。

執行緒池,這個還是很重要的,在生產中用的挺多,四個執行緒池型別,其引數,引數的理解很重要,corepoolSize怎麼設定,maxpoolsize怎麼設定,keep-alive各種的,和美團面試官探討過阻塞佇列在生產中的設定,他說他一般設定為0,防止使用者阻塞

cyclicbarrier 和countdownlatch的區別,個人理解 賽馬和點火箭

執行緒回撥,這塊 被問過讓我設計一個RPC,怎麼實現,其實用到了回撥這塊的東西

sleep 和yeild方法有什麼區別

volatile關鍵字,可見性。

樂觀鎖和悲觀鎖的使用場景

悲觀鎖的常見實現方式:lock synchronized retreentlock

樂觀鎖:CAS MVCC

讀寫鎖的實現方式,16位int的前八位和後八位分別作為讀鎖和寫鎖的標誌位

死鎖的條件,怎麼解除死鎖,怎麼觀測死鎖。

希望大家能夠好好看一下反射的原理,怎麼確定類,怎麼調方法

RPC框架,同步非同步,響應時間,這些都被問到過,還讓設計過

同步,非同步,阻塞,非阻塞 在深信服的面試中遇到過,最好再找一些應用場景加以理解

1.2 JVM

記憶體模型以及分割槽,需要詳細到每個區放什麼。

堆裡面的分割槽:Eden,survival (from+ to),老年代,各自的特點。

物件建立方法,物件的記憶體分配,物件的訪問定位。

GC 的兩種判定方法

GC 的三種收集方法:標記清除、標記整理、複製演算法的原理與特點,分別用在什麼地方,如果讓你最佳化收集方法,有什麼思路?

GC 收集器有哪些?CMS 收集器與 G1 收集器的特點

Minor GC 與 Full GC 分別在什麼時候發生?

JVM 記憶體分哪幾個區,每個區的作用是什麼?

如和判斷一個物件是否存活?(或者 GC 物件的判定方法)

java 中垃圾收集的方法有哪些?

類載入器雙親委派模型機制?

java 記憶體模型,java 類載入過程?

什麼是類載入器,類載入器有哪些?

簡述 java 記憶體分配與回收策率以及 Minor GC 和Major GC

02 資料庫

2.1 MySQL

事務四大特性(ACID)原子性、一致性、隔離性、永續性?

事務的併發?事務隔離級別,每個級別會引發什麼問題,MySQL預設是哪個級別?

MySQL常見的三種儲存引擎(InnoDB、MyISAM、MEMORY)的區別?

MySQL的MyISAM與InnoDB兩種儲存引擎在,事務、鎖級別,各自的適用場景?

查詢語句不同元素(where、jion、limit、group by、having等等)執行先後順序

索引為什麼要用B+樹,B+樹和B-樹的區別是什麼

mysql的預設事務級別,一共有哪些事務級別

mysql的一些語句,這些肯定需要掌握的

mysql鎖,行鎖,表鎖 ,什麼時候發生鎖,怎麼鎖,原理

資料庫最佳化,最左原則啊,水平分表,垂直分表

什麼是臨時表,臨時表什麼時候刪除?

MySQL B+Tree索引和Hash索引的區別?

sql查詢語句確定建立哪種型別的索引?如何最佳化查詢?

聚集索引和非聚集索引區別?

有哪些鎖(樂觀鎖悲觀鎖),select 時怎麼加排它鎖?

非關係型資料庫和關係型資料庫區別,優勢比較?

資料庫三正規化,根據某個場景設計資料表?

資料庫的讀寫分離、主從複製,主從複製分析的 7 個問題?

使用explain最佳化sql和索引?

MySQL慢查詢怎麼解決?

什麼是 內連線、外連線、交叉連線、笛卡爾積等?

mysql都有什麼鎖,死鎖判定原理和具體場景,死鎖怎麼解決?

varchar和char的使用場景?

mysql 高併發環境解決方案?

資料庫崩潰時事務的恢復機制(REDO日誌和UNDO日誌)?

03 Spring相關

spring的兩大特性- ioc aop,實現原理

如果存在A依賴B,B依賴A,那麼是怎麼加到IOC中去的

beanFactory的理解,怎麼載入bean

FactoryBean的理解

基於註解的形式,是怎麼實現的, 你知道其原理嗎,說一下

依賴衝突,有碰到過嗎,你是怎麼解決的~

bean的生命週期

spring中的自動裝方式

BeanFactory 和 FactoryBean

Spring IOC 的理解,其初始化過程?

BeanFactory 和 ApplicationContext?

Spring Bean 的生命週期,如何被管理的?Spring Bean 的載入過程是怎樣的?

如果要你實現Spring AOP,請問怎麼實現?

如果要你實現Spring IOC,你會注意哪些問題?

Spring 是如何管理事務的,事務管理機制?

Spring 的不同事務傳播行為有哪些,幹什麼用的?

Spring 中用到了那些設計模式?

Spring MVC 的工作原理?

Spring 迴圈注入的原理?

Spring 如何保證 Controller 併發的安全?

你一般是怎麼對mvc專案進行分層的

dispatch-servlet的工作原理

為什麼有了springmvc還要在專案中使用spring?

springmvc的執行機制,dispatch -》 hanldermapping-—》handler -》handlerAdapter-》執行handler-》modelandview -》 返回mv -》 檢視解析器-》返回view -》 渲染響應

怎麼防止依賴注入

怎麼讓mapper 和xml對應

如何自動包裝物件

和spring相比,做了什麼改變

starter你知道哪些

如何部署springmvc專案 以及如何部署springboot專案

springboot的外掛,你使用過哪些

04 中介軟體

4.1 redis

Redis用過哪些資料資料,以及Redis底層怎麼實現

Redis快取穿透,快取雪崩

如何使用Redis來實現分散式鎖

Redis的併發競爭問題如何解決

Redis持久化的幾種方式,優缺點是什麼,怎麼實現的

Redis的快取失效策略

Redis叢集,高可用,原理

Redis快取分片,Redis的資料淘汰策略

為什麼選擇redis,有什麼好處,基於記憶體,抗壓

redis叢集怎麼進行資料分配,hash槽

redis的主從複製是怎麼實現的

redis的資料結構 最常問 hash是什麼, sorted set怎麼實現的

因為專案的原因,問我redis是怎麼保證高可用的,主從和叢集怎麼加在一起

redis 和memcache的區別

redis 分散式鎖的實現原理 setNX 啥的

redis模擬session,除了redis你還考慮過別的嗎

redis的快取擊穿,怎麼處理這個問題

redis是基於記憶體的,那麼它有持久化嗎,aof rdb

aof和rdb的優缺點,你在專案中使用的哪一個

4.2 MQ

為什麼選擇rabbitMQ, 社群活躍,高併發

別的MQ也要了解,比如RocketMQ(阿里的,java開發,再次開發,併發高,分散式,出錯少)

ActiveMQ, kafka

topic 和 block

MQ的作用,同步轉非同步,消除峰值

如何保證資料一致性,即原子性,ack

訊息佇列在專案中的應用

4.3 nginx

怎麼配置負載均衡

怎麼限流

怎麼使用nginx快取

為什麼使用nginx,有別的替代品嗎

請解釋 x Nginx 如何處理 P HTTP 請求

在 x Nginx 中,如何使用未定義的伺服器名稱來阻止處理請求? ?

使用“ 反向代理伺服器 ” 的優點是什麼?

x Nginx 伺服器上的 r Master 和 和 r Worker 程式分別是什麼?

nginx的壓力測試,你測試過嗎,能抗住多少壓力

你如何透過不同於 0 80 的埠開啟 Nginx?

是否有可能將 x Nginx 的錯誤替換為 2 502 錯誤、 503

s stub_status 和 和 r sub_filter 指令的作用是什麼? ?

4.5 dubbo

原理,怎麼用

和erueka有什麼區別

為什麼要用dubbo,不用行不行?

跨域請求的一些知識點

Dubbo 支援哪些協議,每種協議的應用場景,優缺點?

Dubbo 超時時間怎樣設定?

Dubbo 叢集的負載均衡有哪些策略

Dubbo 的主要應用場景?

Dubbo 服務註冊與發現的流程?

Dubbo 中 中 zookeeper 做註冊中心,如果註冊中心叢集都掛掉,釋出者和訂閱者之間還能通訊麼?

dubbo 服務負載均衡策略?

05 其他外掛

5.1 shiro

怎麼做許可權控制

為什麼使用shiro,你直接使用aop不也是一樣的嗎,shiro還有標籤~各種扯

shiro的兩個最重要的函式

認證和授權是怎麼做的

5.2 docker

和vmware的區別

你一般是怎麼部署的 IDEA,直接把專案部署到docker並打包到雲伺服器

docker的好處,小,快

06 Linux

常見的命令

sed 和 awk 感覺linux必考。。

linux的使用場景,你什麼時候會用linux -- 》 佈置伺服器

怎麼檢視程式和殺死程式

列印一個資料夾中的所有檔案

float在計算機中是怎麼儲存的,當時被問到的時候,我也在問自己,怎麼存的~~~ 佛了

執行緒和程式的區別

執行緒的通訊方式,程式的通訊方式

系統執行緒的數量上限是多少

頁式儲存的概念

記憶體碎片,你有了解過嗎,有想過解決方案嗎~

07 演算法

7.1 排序演算法

八大排序演算法真的是面試寵兒

最常考 快速排序 和歸併排序

哪些排序演算法是穩定的 那些是不穩定的

堆排 也應該掌握

7.2 樹

根據遍歷結果恢復樹,遞迴

二叉搜尋樹第k大

樹的和為k的路徑

層次遍歷

根據層次遍歷和後序遍歷恢復樹

映象樹

樹的深度

是不是平衡二叉樹

7.3 連結串列

反轉連結串列

連結串列環的入口

交叉連結串列的交點

複雜連結串列的複製

二叉搜尋樹變成雙向連結串列

7.4 回溯演算法

走迷宮

遊戲通關

7.5 遞推演算法

走臺階

斷鋼筋

7.6 揹包問題

裝最多的東西

7.7 貪心演算法

覆蓋問題

時間問題

08 設計模式

面試中設計模式其實也是挺重要的

Java 中什麼叫單例設計模式?請用 Java 寫出執行緒安全的單例模式

在 Java 中,什麼叫觀察者設計模式(observer design pattern)

使用工廠模式最主要的好處是什麼?在哪裡使用

舉一個用 Java 實現的裝飾模式(decorator design pattern) ?它是作用於物件層次還是類層次?

在 Java 中,什麼時候用過載,什麼時候用重寫?

舉例說明什麼情況下會更傾向於使用抽象類而不是介面

觀察者模式

適配模式

工廠模式

...

總結

記住,面試最重要的事就是:刷題刷題刷題刷題,天天作死的刷~

以上就是我在回想面試過程所能想到的一些問題,可能不夠全面,供大家參考參考,

並且上面我列出的這些題目都已整理出答案,全部都是PDF文件,有需要的朋友可以掃一掃加“VX"”即可免費獲取

Java核心面試寶典複習知識

這本Java核心知識把每個知識點解析的很深,對大家應該很有幫助,它把大部分的Java知識集結在一起深入的解析出來(非常建議大夥看一看)

  1. JVM
  2. JAVA集合
  3. JAVA多執行緒併發
  4. JAVA基礎
  5. Spring原理
  6. 微服務
  7. Hetty與PC
  8. 網路
  9. 日誌
  10. Zookeeper
  11. Kafks
  12. Rabbi tMQ
  13. Hbase
  14. MongoDB
  15. Cassandra
  16. 設計模式
  17. 負載均衡
  18. 資料庫
  19. 一致性演算法
  20. JAVA演算法
  21. 資料結構
  22. 加密演算法
  23. 分散式快取
  24. Hadoop
  25. Spark
  26. Storm
  27. YARIN
  28. 機器學習
  29. 雲端計算

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年


求來的大廠面試場景(為了學習提升可以沒臉沒皮,啊哈哈哈)

我針對這些大廠的面經場景也找了很多題刷,對自身的提升也是非常大(還特意要了份面試答案)

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年


美團部分面經

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年


好未來面試場景

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年


分享一些我個人的學習文件,有需要的朋友自行選擇獲取:

1、面試文件專題整理

既然是要面試,那麼就少不了刷題,實際上春節回家後,哪兒也去不了,我自己是刷了不少面試題的,所以在面試過程中才能夠做到心中有數,基本上會清楚面試過程中會問到哪些知識點,高頻題又有哪些,所以刷題是面試前期準備過程中非常重要的一點。

根據自身面試經歷整理以及不斷收集的(珍藏版)

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年


相關的電子書、底層原始碼

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年


阿里巴巴必備學習知識點

四面阿里巴巴如願拿到offer定級P7,為此我籌備了半年


最後

很多人感嘆“學而無用”,實際上之所以產生無用論,是因為自己想要的與自己所學的匹配不上,這也就意味著自己學得遠遠不夠。無論是學習還是工作,都應該有主動性,所以如果擁有大廠夢,那麼就要自己努力去實現它。

以上學習資料均免費放送,最後祝願各位身體健康,順利拿到心儀的offer!

資料獲取方式:轉發和評論這篇文章,然後掃一掃加"VX"即可打包帶走所有資料~



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69985897/viewspace-2729907/,如需轉載,請註明出處,否則將追究法律責任。

相關文章