2021最新總結(jié):阿里/京東/餓了么/拼多多/愛奇藝面經(jīng)分享(堪稱Offer收割機(jī))

前言

娛樂(lè)圈有“男神收割機(jī)”“女神收割機(jī)”。同樣程序員圈子也有“Offer收割機(jī)”。

想必大家都有面試的經(jīng)歷吧,但是你有面一個(gè)拿一個(gè)offer的經(jīng)歷嗎。或許聽起來(lái)很離譜,但是也確實(shí)有這樣的事情,畢竟萬(wàn)事皆有可能。之前我在網(wǎng)上認(rèn)識(shí)的一位網(wǎng)友,我們有一天下午聊天的時(shí)候聊到面試這塊,他跟我說(shuō)了他的面試經(jīng)歷:他面了餓了么、阿里、京東、拼多多、愛奇藝,聽著好像很簡(jiǎn)單的樣子,但是別人背后付出的可能是你的百倍千倍。好了廢話不多說(shuō)?,F(xiàn)在我開始寫面經(jīng),希望能幫助到大家!

image

首先,他先是去面了阿里

一面

自我介紹后,直接開始問(wèn)多線程相關(guān)問(wèn)題。大概問(wèn)題如下:

1.為什么要使用多線程?多線程需要注意的問(wèn)題。上下文開銷、死鎖等。

2.java內(nèi)存模型、導(dǎo)致線程不安全的原因。

3.volatile關(guān)鍵字,緩存一致性、指令重排序概念。

4.synchronize關(guān)鍵字,java對(duì)象頭、Markword概念、synchronize底層monitorenter和moniterexit指令。

5.lock語(yǔ)句和synchronize對(duì)比。

6.原子操作,CAS概念、相關(guān)參數(shù)。

7.樂(lè)觀鎖、悲觀鎖概念及使用場(chǎng)景。

8.線程池概念、實(shí)現(xiàn)原理等。

9.JVM鎖的優(yōu)化,偏向鎖、輕量級(jí)鎖概念及原理。

10.多線程方面回答得比較好,面試官反饋比較滿意。

然后就是數(shù)據(jù)庫(kù)相關(guān)的:(其實(shí)沒(méi)這么多,有些是我整理的,挑了一些概率大的題目,僅參考)

1.在MySQL中ENUM的用法是什么?

2.CHAR和VARCHAR的區(qū)別?

3.為什么事務(wù)可以優(yōu)化數(shù)據(jù)庫(kù)?

4.Mysql的數(shù)據(jù)庫(kù)引擎,區(qū)別特點(diǎn)

5.數(shù)據(jù)連接池采用了什么設(shè)計(jì)模式?意義是什么?

6.項(xiàng)目用到什么數(shù)據(jù)庫(kù)?隔離級(jí)別?每個(gè)隔離級(jí)別各做了什么

7.數(shù)據(jù)庫(kù)的索引?mysql不同引擎索引的區(qū)別

8..索引使用的注意事項(xiàng)

9..數(shù)據(jù)庫(kù)掛了怎么辦?除了熱備份還有什么方法?

10..接上面場(chǎng)景題:服務(wù)器掛了,優(yōu)惠券還沒(méi)發(fā)怎么辦?

11..數(shù)據(jù)庫(kù)掛了怎么辦?

12..數(shù)據(jù)庫(kù)優(yōu)化中,有一個(gè)關(guān)鍵字可以分析執(zhí)行過(guò)程,知道么(explain關(guān)鍵字)?

13..數(shù)據(jù)庫(kù)優(yōu)化有什么了解?

14..索引的原理說(shuō)一下吧。

15.聯(lián)合索引,如果聯(lián)合索引(a,b),現(xiàn)在查詢a>0,b>0可以用到這個(gè)聯(lián)合索引么?(太久沒(méi)看,生疏了,答錯(cuò)了,答案應(yīng)該是不能,只能用到a的索引,范圍索引只能用到一列)

16.Mysql集群數(shù)據(jù)是怎么同步的?

17.Select,poll,epoll的區(qū)別。

還圍繞了項(xiàng)目架構(gòu)、Java基礎(chǔ)、JVM、并發(fā)編程、中間件技術(shù)和Dubbo服務(wù)治理框架等展開。(題目不怎么記得了)

二面(問(wèn)得比較深入,問(wèn)題也是格外的令人頭疼)

JVM方面

1.java內(nèi)存模型,五個(gè)部分,程序計(jì)數(shù)器、棧、本地棧、堆、方法區(qū)。

2.每個(gè)部分的概念、特點(diǎn)、作用。

3.類加載的過(guò)程,加載、驗(yàn)證、準(zhǔn)備、解析、初始化。每個(gè)部分詳細(xì)描述。

4.加載階段讀入.class文件,class文件時(shí)二進(jìn)制嗎,為什么需要使用二進(jìn)制的方式?

5.驗(yàn)證過(guò)程是防止什么問(wèn)題?驗(yàn)證過(guò)程是怎樣的?加載和驗(yàn)證的執(zhí)行順序?符號(hào)引用的含義?

6.準(zhǔn)備過(guò)程的靜態(tài)成員變量分配空間和設(shè)置初始值問(wèn)題。

7.解析過(guò)程符號(hào)引用替代為直接引用細(xì)節(jié)相關(guān)。

8.初始化過(guò)程jvm的顯式初始化相關(guān)。

9.類卸載的過(guò)程及觸發(fā)條件。

10.三種類加載器,如何自定義一個(gè)類加載器?

11.雙親委派機(jī)制。

12.JVM內(nèi)存分配策略,優(yōu)先放于eden區(qū)、動(dòng)態(tài)對(duì)象年齡判斷、分配擔(dān)保策略等。

13.JVM垃圾回收策略,怎樣判對(duì)象、類需要被回收?

14.四種垃圾回收算法標(biāo)記-清除、復(fù)制、標(biāo)記-整理、分代收集。

15.JVM中的垃圾回JVM收器,新生代回收器、老年代回收器、stop-the-world概念及解決方法。

16.四類引用及使用場(chǎng)景?

這里給大家分享一個(gè)JVM知識(shí)圖譜,可以分享給大家。

image

JVM知識(shí)圖譜展示

通信協(xié)議

接下來(lái)是對(duì)通信協(xié)議的了解,大概問(wèn)了下列問(wèn)題:

1.TCP三次握手、四次揮手。

2.http請(qǐng)求報(bào)文結(jié)構(gòu)、響應(yīng)報(bào)文,狀態(tài)碼。

3.http2.0相比于http1.0的新特性,推送、多路復(fù)用、消息頭壓縮等。

數(shù)組面試問(wèn)題

1.如何在給定的1到100的整數(shù)數(shù)組中找到缺失的數(shù)字?
2.如何在給定的整數(shù)數(shù)組上找到重復(fù)的數(shù)字?
3.如何在未排序的整數(shù)數(shù)組中找到最大和最小的數(shù)字?

鏈表面試問(wèn)題

1.如何在沒(méi)有遞歸的情況下反轉(zhuǎn)單鏈表?

2.如何在未排序的鏈表中刪除重復(fù)節(jié)點(diǎn)?

3.你如何找到單鏈表的長(zhǎng)度?

4.如何在單鏈表中找到最后的第三個(gè)節(jié)點(diǎn)?

5.如何使用Stack找到兩個(gè)鏈表的總和?

二叉樹、字符串面試問(wèn)題

1.你如何計(jì)算給定字符串中的元音和輔音?

2.如何計(jì)算字符串中給定字符的出現(xiàn)次數(shù)?

3.如何找到字符串的所有排列?

4.如何在不使用任何庫(kù)方法的情況下反轉(zhuǎn)給定句子中的單詞?

5.如何使用遞歸來(lái)反轉(zhuǎn)給定的字符串?

6.如何檢查字符串是否只包含數(shù)字?

7.如何在字符串中找到重復(fù)的字符?

8.如何在沒(méi)有遞歸的情況下按預(yù)先遍歷給定的二叉樹?

9.如何在給定的二叉樹中執(zhí)行有序遍歷?

10.如何在沒(méi)有遞歸的情況下使用inorder遍歷打印給定二叉樹的所有節(jié)點(diǎn)?

11.你如何實(shí)現(xiàn)一個(gè)后序遍歷算法?

12.如何在沒(méi)有遞歸的情況下遍歷后序遍歷中的二叉樹?

13.如何打印二叉搜索樹的所有葉子?

14.如何計(jì)算給定二叉樹中的多個(gè)葉節(jié)點(diǎn)?

這里整理了關(guān)于數(shù)據(jù)結(jié)構(gòu)相關(guān)資料文檔,需要的小伙伴請(qǐng)查看文末獲取方式。

image

三面

1.Spring Boot有哪些優(yōu)點(diǎn)?

2.什么是 Spring Framework?

3.Spring Framework有哪些不同的功能?

4.Spring Framework中有多少個(gè)模塊,它們分別是什么?

5.什么是 Spring配置文件?

6.什么是Spring IOC容器?

7.BeanFactory–BeanFactory實(shí)現(xiàn)舉例

8.解釋AOP模塊

9.解釋JDBC抽象和DAO模塊

10.解釋對(duì)象/關(guān)系映射集成模塊

11.哪種依賴注入方式你建議使用,構(gòu)造器注入,還是Setter方法注入?

12.對(duì)MySQL的鎖了解嗎

13.隔離級(jí)別與鎖的關(guān)系

14.按照鎖的粒度分?jǐn)?shù)據(jù)庫(kù)鎖有哪些?鎖機(jī)制與InnoDB鎖算法

15.從鎖的類別上分MySQL都有哪些鎖呢?像上面那樣子進(jìn)行鎖定豈不是有點(diǎn)阻礙并發(fā)效率了

16.MySQL中InnoDB引擎的行鎖是怎么實(shí)現(xiàn)的?

17.什么是死鎖?怎么解決?

這里給大伙兒分享一張Spring知識(shí)總結(jié)圖(不知道怎么學(xué)習(xí)的可以收藏)

image
image

京東(四面)

一面

1.Elasticsearch是怎么使用的,有接觸過(guò)大數(shù)據(jù)的應(yīng)用嗎?

2.項(xiàng)目里的數(shù)據(jù)處理是怎么做的?

3.當(dāng)前要存入elasticsearch的數(shù)量過(guò)大,會(huì)在存儲(chǔ)時(shí)造成等待,存儲(chǔ)速度很慢,如何解決這個(gè)問(wèn)題?

4.Jvm里如何判斷對(duì)象死亡?

5.Jvm里如何判斷類死亡?

6.Hashmap在jdk7和8里的區(qū)別。

7.多線程,synchronized和lock的區(qū)別。

8.Concurrenthashmap的數(shù)據(jù)結(jié)構(gòu)講一下,如何做到線程安全的?

9.Concurrenthashmap新插入一個(gè)對(duì)象會(huì)Hash幾次?

10.講一個(gè)簡(jiǎn)歷上的項(xiàng)目,技術(shù)難點(diǎn)在哪?

11.Jvm內(nèi)存分區(qū),為什么要有新生代和老年代?

12.有做個(gè)VM內(nèi)存優(yōu)化嗎?

13.數(shù)據(jù)庫(kù)索引主鍵和唯一索引有什么區(qū)別?

14.聚集索引和非聚集索引的區(qū)別?

15.MySQL存儲(chǔ)引擎innoDB和MylSAM的區(qū)別?

16.InnoDB的B+樹索引葉子節(jié)點(diǎn)的Data域存儲(chǔ)的是什么?MylSAM的B+樹索引葉子節(jié)點(diǎn)的Data域存儲(chǔ)的是主鍵還是物理地址?

二面

1.Hashmap說(shuō)下吧。

2.線程池有哪些參數(shù),如果滿了新的線程會(huì)怎么處理?

3.你們網(wǎng)關(guān)有配jvm參數(shù)嗎,都有哪些?

4.高并發(fā)的時(shí)候你們網(wǎng)關(guān)高可用怎么做的?

5.數(shù)據(jù)庫(kù)用過(guò)嗎,如果現(xiàn)在有十億的數(shù)據(jù)給你怎么存?

6.你們的熔斷降級(jí)怎么做的?

7.項(xiàng)目的線程池怎么配的?

8.字符串的類說(shuō)一下。

9.兩個(gè)字符串都是y,用equals返回什么?

10.Hashcode和equals的關(guān)系。

11.兩個(gè)線程一起輸出100個(gè)數(shù)怎么做?

12.SpringBoot的AOP是什么?

三面

1.分布式下redis如何保證線程安全?

2.redis持久化的方式以及區(qū)別;

3.zookeeper如何實(shí)現(xiàn)分布式鎖、其他分布式鎖怎么實(shí)現(xiàn)?

4.kafka的架構(gòu),如何用kafka保證消息的有序性?

5.數(shù)據(jù)庫(kù)的優(yōu)化包含哪些?MySQL的優(yōu)化,談兩個(gè)你優(yōu)化的例子。

6.最有技術(shù)難度的項(xiàng)目,介紹下相關(guān)核心設(shè)計(jì)流程。

7.工作中,遇見了技術(shù)瓶頸無(wú)法解決,你的解決思路?

8.未來(lái)你的職業(yè)規(guī)劃是怎么樣?

HR面

  1. 你覺(jué)得自己的優(yōu)點(diǎn)是什么,有哪些缺點(diǎn)呢?(靈魂拷問(wèn))
  2. 你之前公司給的薪水是怎么樣的?如果阿里給你offer,你是怎么考量這兩個(gè)offer的?
  3. 為什么沒(méi)有在之前的公司留下來(lái)?之前公司的主管是怎么評(píng)價(jià)你的?
  4. 除了今天這個(gè)面試,還安排了其他公司的嗎?(這不是無(wú)聊吧)
image

餓了么

1.HashMap和hashtable的區(qū)別有哪些?

2.Mysql有哪些索引方式

3.一個(gè)Java文件有3個(gè)類,編譯后有幾個(gè)class文件?

4.局部變量使用前需要顯式地賦值,否則編譯通過(guò)不了,為什么這么設(shè)計(jì)?

5.ReadWriteLock讀寫之間互斥嗎?

6.Semaphore拿到執(zhí)行權(quán)的線程之間是否互斥?

7.寫一個(gè)你認(rèn)為最好的單例模式。

8.B樹和B+樹是解決什么樣的問(wèn)題的?怎樣演化過(guò)來(lái),之間的區(qū)別?

9.寫一個(gè)生產(chǎn)者消費(fèi)者模式。

10.寫一個(gè)死鎖。

11.CPU 100%怎樣定位?

12.Synchronized底層實(shí)現(xiàn)原理。

13.volatile作用,指令重排相關(guān)。

14.Spring怎樣解決循環(huán)依賴的問(wèn)題?

15.說(shuō)說(shuō)InheritableThreadLocal 的實(shí)現(xiàn)原理?

16.InheritableThreadLocal 是如何彌補(bǔ) ThreadLocal 不支持繼承的特性?

17.CyclicBarrier內(nèi)部的實(shí)現(xiàn)與 CountDownLatch 有何不同?

二面

1.多線程先入隊(duì)出隊(duì)操作的線程安全?

2.為什么不使用一把鎖,使用兩把為何能提高并發(fā)度?

3.基于數(shù)組的阻塞隊(duì)列 ArrayBlockingQueue原理。

4.講講對(duì)JUC 中回環(huán)屏障 CyclicBarrier 的使用?

5.CyclicBarrier內(nèi)部的實(shí)現(xiàn)與 CountDownLatch 有何不同?

6.Semaphore 的內(nèi)部實(shí)現(xiàn)是怎樣的?

7.簡(jiǎn)單對(duì)比同步器實(shí)現(xiàn),談?wù)勀愕目捶ǎ?/p>

8.什么是Java指令重排序?

9.Java中Synchronized關(guān)鍵字的內(nèi)存語(yǔ)義是什么?

10.Java中Volatile關(guān)鍵字的內(nèi)存語(yǔ)義是什么?

11.什么是可重入鎖、樂(lè)觀鎖、悲觀鎖、公平鎖、非公平鎖、獨(dú)占鎖、共享鎖?

三面

1.說(shuō)說(shuō)分庫(kù)與分表設(shè)計(jì)

2.分庫(kù)與分表帶來(lái)的分布式困境與應(yīng)對(duì)之策

3.說(shuō)說(shuō) SQL 優(yōu)化之道

4.MySQL 遇到的死鎖問(wèn)題

5.存儲(chǔ)引擎的 InnoDB 與 MyISAM

6.數(shù)據(jù)庫(kù)索引的原理

7.為什么要用 B-tree

8.聚集索引與非聚集索引的區(qū)別

9.limit 20000 加載很慢怎么解決

10.選擇合適的分布式主鍵方案

11.選擇合適的數(shù)據(jù)存儲(chǔ)方案

12.ObjectId規(guī)則是什么?

13.聊聊 MongoDB使用場(chǎng)景吧。

14.pring MVC運(yùn)行流程是什么?

15.Spring MVC啟動(dòng)流程說(shuō)一下吧。

16.Spring 的單例實(shí)現(xiàn)原理是什么?

17.Spring 框架中用到了哪些設(shè)計(jì)模式?

image

拼多多

一面

1.自我介紹。

2.部門組織結(jié)構(gòu)是怎樣的?

3.給我一張紙,畫了一個(gè)九方格,都填了數(shù)字,給一個(gè)MN矩陣,從1開始逆時(shí)針打印這MN個(gè)數(shù),要求時(shí)間復(fù)雜度盡可能低。

4.鏈路追蹤的信息是怎么傳遞的?(RpcContext的attachment,說(shuō)了Span的結(jié)構(gòu):parentSpanId + curSpanId)

5.SpanId怎么保證唯一性?(UUID,說(shuō)了下內(nèi)部的定制改動(dòng))

6.RpcContext是在什么維度傳遞的?(線程)

7.Dubbo的遠(yuǎn)程調(diào)用怎么實(shí)現(xiàn)的?(講了讀取配置、拼裝url、創(chuàng)建Invoker、服務(wù)導(dǎo)出、服務(wù)注冊(cè)以及消費(fèi)者通過(guò)動(dòng)態(tài)代理、filter、獲取Invoker列表、負(fù)載均衡等過(guò)程(嘩啦啦講了10多分鐘),我可以喝口水么)

8.Spring的單例是怎么實(shí)現(xiàn)的?(單例注冊(cè)表)

9.為什么要單獨(dú)實(shí)現(xiàn)一個(gè)服務(wù)治理框架?(說(shuō)了下內(nèi)部剛搞微服務(wù)不久,主要對(duì)服務(wù)進(jìn)行一些監(jiān)控和性能優(yōu)化)

10.誰(shuí)主導(dǎo)的??jī)?nèi)部還在使用么?

11.逆向有想過(guò)怎么做成通用么?

12.Java中的HashMap、TreeMap解釋下?(TreeMap紅黑樹,有序,HashMap無(wú)序,數(shù)組+鏈表)

13.TreeMap查詢寫入的時(shí)間復(fù)雜度多少?

14.HashMap多線程有什么問(wèn)題?

二面

1.CAS和synchronize有什么區(qū)別?

2.都用synchronize不行么?

3.如果要保證線程安全怎么辦?(ConcurrentHashMap)

4.ConcurrentHashMap怎么實(shí)現(xiàn)線程安全的?(分段鎖)

5.get需要加鎖么,為什么?(不用,volatile關(guān)鍵字)

6.Volatile的作用是什么?(保證內(nèi)存可見性)

7.底層怎么實(shí)現(xiàn)的?(說(shuō)了主內(nèi)存和工作內(nèi)存,讀寫內(nèi)存屏障,happen-before,并在紙上畫了線程交互圖)

8.在多核CPU下,可見性怎么保證?(思考了一會(huì))

9.聊項(xiàng)目,系統(tǒng)之間是怎么交互的?

10.系統(tǒng)并發(fā)多少,怎么優(yōu)化?

11.Linux進(jìn)程間通信的方式?

三面

1.TCP連接的特點(diǎn)大概說(shuō)一下吧。

2.TCP連接如何保證安全可靠的?

3.為什么TCP連接需要三次握手,兩次不可以嗎,為什么?

4.動(dòng)態(tài)代理與cglib實(shí)現(xiàn)的區(qū)別是什么?

5.那么你說(shuō)說(shuō)代理的實(shí)現(xiàn)原理吧。

6.看過(guò)Spring源碼沒(méi),說(shuō)說(shuō)Ioc容器的加載過(guò)程吧。

7.了解過(guò)字節(jié)碼的編譯過(guò)程嗎(這個(gè)回答的有一些含糊,就跳過(guò)了)

8.Hadoop里面由哪些組件,你用過(guò)哪些?

9.Spring Bean 的生命周期大概說(shuō)說(shuō)。

10.nat是什么?屬于哪一層?

11.介紹一下網(wǎng)絡(luò)分層的模型

12.鏈路層有什么協(xié)議?

13.數(shù)據(jù)庫(kù)范式是什么?

14.面向?qū)ο笕筇攸c(diǎn)。

image

愛奇藝

一面

1.手撕代碼。??偷脑},可以去練練:NC22合并兩個(gè)有序的數(shù)組。

2.TCP/IP協(xié)議。

3.長(zhǎng)連接與短連接。

4.mapreduce過(guò)程。

5.多路歸并的時(shí)間復(fù)雜度。

6.海量url去重類問(wèn)題。

7.Java NIO使用。

8.倒排索引的原理說(shuō)一下吧。

9.對(duì)分詞技術(shù)的了解。

10.HTTP協(xié)議是哪一層的?其報(bào)文結(jié)構(gòu)如何?七層網(wǎng)絡(luò)結(jié)構(gòu)是?

11.HTTP 請(qǐng)求/響應(yīng)的步驟有哪一些?(大概說(shuō)說(shuō)就可以,沒(méi)有講得很詳細(xì))

二面

1.算法方面了解哪些?簡(jiǎn)述動(dòng)態(tài)規(guī)劃、貪心算法。

2.緩存問(wèn)題,緩存與內(nèi)存的區(qū)別。以及數(shù)據(jù)庫(kù)連接池。

3.volatile關(guān)鍵字介紹一下。

4.多線程實(shí)現(xiàn)方式,三種。

5,JVM介紹一下,從他的編譯之類,加載(忘記回答父類,子類,以及靜態(tài)代碼塊,普通代碼塊的加載過(guò)程)

6.Map,Collection的關(guān)系。

7.ArrayList擴(kuò)充問(wèn)題。add()方法的底層實(shí)現(xiàn)。

8.spring 的核心如:IOC AOP等,注入一個(gè)UserDaoImpl時(shí),UserDaoImpl有幾個(gè)實(shí)例,一個(gè)還是多個(gè)。

9.介紹一下同步,安全與不安全。

10.Thread中,ThreadLocal,Lock等。

11,.數(shù)據(jù)庫(kù)索引的底層實(shí)現(xiàn)。B二叉樹

12.線程池,線程池有多少種,每種的特點(diǎn)。

總結(jié)

最后針對(duì)于上面的面試問(wèn)到的知識(shí)點(diǎn)我總結(jié)出了互聯(lián)網(wǎng)公司Java程序員面試涉及到的絕大部分面試題及答案做成了文檔和架構(gòu)視頻資料免費(fèi)分享給大家。

希望能幫助到您面試前的復(fù)習(xí)且找到一個(gè)好的工作,也節(jié)省大家在網(wǎng)上搜索資料的時(shí)間來(lái)學(xué)習(xí)。

image
image
image

還有Java核心知識(shí)點(diǎn)+全套架構(gòu)師學(xué)習(xí)資料和視頻+一線大廠面試寶典+面試簡(jiǎn)歷模板可以領(lǐng)取+阿里美團(tuán)網(wǎng)易騰訊小米愛奇藝快手嗶哩嗶哩面試題+Spring源碼合集+Java架構(gòu)實(shí)戰(zhàn)電子書。

**資料獲取方式:添加小助理vx:mxzFAFAFA 即可獲取上述資料~**
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容