2020年11月最新互联网大厂面试经验分享【网易、阿里、腾讯、京东、百度、爱奇艺、字节、小米、美团、搜狐、58】
2020年11月最新互聯(lián)網(wǎng)大廠面試經(jīng)驗分享【網(wǎng)易、阿里、騰訊、京東、百度、愛奇藝、字節(jié)、小米、美團、搜狐、58】
本文所有的面經(jīng)內(nèi)容是我從牛客網(wǎng)拔下來的,我的計劃是,以后不定期扒點兒當(dāng)下最新的互聯(lián)網(wǎng)面經(jīng),然后自己慢慢的把里面所有的面試題啃完,并整理分享給大家,共同進步,進大廠!!!
已擼列表如下:
1. 一文干翻Integer、int等基礎(chǔ)數(shù)據(jù)類型和包裝類型相關(guān)問題
2. 面試必問 容器 ArrayList
3. 面試必問 Redis 持久化
4. 面試必問 Redis 數(shù)據(jù)結(jié)構(gòu)底層原理一
5. 面試必問 Redis 數(shù)據(jù)結(jié)構(gòu)底層原理二
學(xué)習(xí)套路 先扒面試題 + 然后分析學(xué)習(xí) + 總結(jié)分享 ≈ 全體起立
聲明一手:
面經(jīng)內(nèi)容從牛客扒的
https://www.nowcoder.com/
文章目錄
- 網(wǎng)易
- Java基礎(chǔ)
- 開源框架
- 網(wǎng)絡(luò)相關(guān)
- Nginx相關(guān)
- 數(shù)據(jù)庫相關(guān)
- Redis相關(guān)
- Linux相關(guān)
- 情景模擬&其他
- 曹操出行
- 京東
- 百度
- 騰訊
- 阿里巴巴
- 愛奇藝
- 字節(jié)跳動
- 搜狐
- 58同城
- 國美在線
- 小米
- 去哪兒
- 快手
網(wǎng)易
Java 社招
Java基礎(chǔ)
1.手撕代碼。牛客題霸()上的原題,可以去看看:NC20數(shù)字字符串轉(zhuǎn)化成IP地址
2.定義Integer x=20 Integer y=200 在內(nèi)存里是個什么過程?
3.volite關(guān)鍵字的原理?它能保證原子性嗎?AtomicInteger底層怎么實現(xiàn)的?
4.threadLocal關(guān)鍵字有用過嗎?如果沒有重寫initialValue方法就直接get會怎樣?
5.hashMap與concurrentHashMap原理和區(qū)別?
6.hashMap什么情況下會出現(xiàn)循環(huán)鏈表?concurrentHashMap寫的時候用什么鎖?7.RenteenLock底層是怎么保證線程安全的?
8.反射能獲取到父類的私有方法嗎?怎么防止反射破壞單例模式?
9.描述下JVM內(nèi)存模型。每個區(qū)的作用是什么?堆內(nèi)存的工作原理,為什么需要兩個幸存區(qū)?只有一個行不行?老生代是用什么垃圾回收算法
10.怎么創(chuàng)建一個線程池,傳入的參數(shù)分別什么含義?線程池是怎么實現(xiàn)維持核心線程數(shù)的?怎么實現(xiàn)一個自定義的拒絕策略?
10.描述下多線程原理。怎么開啟一個線程?start和run方法有什么區(qū)別?
10.怎么創(chuàng)建一個線程池,傳入的參數(shù)分別什么含義?線程池是怎么實現(xiàn)維持核心線程數(shù)的?怎么實現(xiàn)一個自定義的拒絕策略?
11.Socket編程 nio(這一塊我不太熟就說沒了解過,面試官就沒細(xì)問了)
開源框架
1.你用過哪些開源框架?最熟悉的是哪個?(這里我說了spring,所以后邊的問題都是圍繞spring的)
2.描述下spring的ioc和aop。
你常用哪一種注入方式?BeanFactory和ApplicationContext有什么區(qū)別?你們項目()里用的哪個?說一下spring bean的生命周期。
AOP實現(xiàn)原理是什么?兩種動態(tài)代理實現(xiàn)原理?JDK動態(tài)代理為什么要實現(xiàn)接口?
3.spring task是怎么實現(xiàn)的?
4.spring事務(wù)你是怎么用的?加了@Transcational注解spring都做了哪些工作?怎么知道事務(wù)執(zhí)行成功了?
事務(wù)隔離級別?mysql默認(rèn)級別是什么?事務(wù)傳播屬性?spring默認(rèn)是什么?嵌套事務(wù)子事務(wù)什么時候commit?
5.spring和springMVC是什么關(guān)系?有沒有用過JdbcTemplate?
6.springMVC中對整個請求的處理流程是怎樣的?返回json的話是用哪個view?
網(wǎng)絡(luò)相關(guān)
1.HTTP 1.1版本增加了哪些內(nèi)容?有哪幾種請求方式?
2.描述下HTTP三次握手和四次揮手過程?為什么需要四次揮手?為什么TIME_WAIT狀態(tài)需要經(jīng)過兩個最大報文段生存時間才能到close狀態(tài)?
3.瀏覽器發(fā)起一個請求到收到響應(yīng)中間經(jīng)歷了哪些過程?知道多少就說多少,越詳細(xì)越好。
Nginx相關(guān)
1.nginx有哪些模塊?你比較熟悉哪個?
2.proxy_cache你是怎么配置的?緩存是存在哪里?具體是怎么命中緩存的?
簡歷里有寫nginx,結(jié)果問得幾個問題我都沒答好,面試官就沒再多問了,囧~
數(shù)據(jù)庫相關(guān)
1.mysql索引是怎么實現(xiàn)的?b+樹有哪些特點?真實的數(shù)據(jù)存在哪里?
2.哪些情況下建索引?解釋下最左匹配原則?
現(xiàn)在一個表有三列a b c,組合索引(a,b,c)查詢的時候where a like ? and b=? and c=?能用到這個組合索引嗎?為什么?
3.explain執(zhí)行計劃看過沒有?其中type字段都有哪些值?分別代表什么?
4.你有哪些sql調(diào)優(yōu)經(jīng)驗?
Redis相關(guān)
1.redis有哪幾種數(shù)據(jù)結(jié)構(gòu)?給你一個key怎么知道是用的哪種結(jié)構(gòu)?
2.怎么查看所有的key?redis怎么切換庫?怎么清數(shù)據(jù)?
3.描述下redis淘汰策略?如果沒有數(shù)據(jù)可以淘汰活著沒有配置淘汰策略讀請求可以正常執(zhí)行嗎?
4.你們項目里redis是單節(jié)點的嗎?如果多節(jié)點怎么同步?
5.項目里用redis存哪些數(shù)據(jù)?為什么用redis?和jetty本地緩存有什么區(qū)別?
Linux相關(guān)
1.怎么查看某個進程中的線程?
2.怎么批量替換一個文件夾下所有文件中的一個字符?(sed命令)
3.有沒有用過jps jmap jstack jstat 命令,分別說下有哪些常用參數(shù),知道多少就說多少。
我這里結(jié)合自己用jmap jstack定位到線上問題的經(jīng)驗說的,答完后感覺面試官挺滿意的,所以說實踐很重要啊~
情景模擬&其他
1.設(shè)計一個系統(tǒng),每天有100億條數(shù)據(jù),需要在后臺做實時展示和查找。
我當(dāng)時回答的大體思路是nginx負(fù)載均衡,消息隊列存儲,多線程讀取,批量插入,數(shù)據(jù)庫分庫分表。
面試官根據(jù)我的回答又衍生出了很多問題,如消息隊列存滿了怎么辦?(也就是消費跟不上生產(chǎn))批量插入時某一條失敗了有什么影響?怎么解決?分庫分表應(yīng)該怎么分?怎么解決數(shù)據(jù)遷移的問題?
2.用代碼實現(xiàn)cat 1.log |grep a |sort |uniq -c |sort -rn 的功能。
3.手撕代碼。牛客題霸上的原題,可以去看看:NC127 最長公共子串
4.如果現(xiàn)在有一臺服務(wù)器突然變得很慢,怎么去定位問題?
曹操出行
社招 Java 3年工作經(jīng)驗
- JUC 里的 ReentrantLock 和 synchronized 有什么區(qū)別?(實現(xiàn)方式)
- 講講對 AQS 的理解(AQS 的實現(xiàn)原理)
- 什么是 CAS?
- synchronized 和 CAS 的區(qū)別?
- CAS 有什么問題?
- 線程池的原理?
- 線程池中什么情況下會創(chuàng)建非核心線程?
- 線程池中什么情況下會觸發(fā)拒絕策略?
- Java 堆的結(jié)構(gòu)
- 如果發(fā)生 OOM 如何排查解決?
- 新生代用什么GC算法?GC過程?
- 老年代用什么GC算法?GC過程?
- G1垃圾回收器的特點
- 聊聊對事務(wù)的理解(什么是事務(wù)?事務(wù)的特性?)
- 事務(wù)的隔離級別
- InnoDB 和 MyISAM 的區(qū)別?
- 如何優(yōu)化慢 SQL?
- 一億的表,很多復(fù)雜的查詢條件,查第一萬頁,如何優(yōu)化?分庫分表查詢過程?
- 二階段、三階段、TCC、seata
- RocketMQ / Kafka 的存儲原理
- Netty
- Dubbo 原理
- 如果注冊中心掛了,消費者還能連上提供者嗎?為什么?
- Dubbo 的 SPI 機制
- 基于 Dubbo 能做什么擴展?
- Dubbo 負(fù)載均衡算法
- 選一個重點項目講講,設(shè)計、問題等等
京東
**1、手撕代碼。牛客題霸上的原題,可以去看看:**NC3鏈表中環(huán)的入口節(jié)點
**2、**Redis 的數(shù)據(jù)結(jié)構(gòu)及使用場景
(1)String字符串:字符串類型是 Redis 最基礎(chǔ)的數(shù)據(jù)結(jié)構(gòu),首先鍵都是字符串類型,而且 其他幾種數(shù)據(jù)結(jié)構(gòu)都是在字符串類型基礎(chǔ)上構(gòu)建的,我們常使用的 set key value 命令就是字符串。常用在緩存、計數(shù)、共享Session、限速等。
(2)Hash哈希:在Redis中,哈希類型是指鍵值本身又是一個鍵值對 結(jié)構(gòu),添加命令:hset key field value。哈希可以用來存放用戶信息,比如實現(xiàn)購物車。
(3)List列表(雙向鏈表):列表(list)類型是用來存儲多個有序的字符串。可以做簡單的消息隊列的功能。
(4)Set集合:集合(set)類型也是用來保存多個的字符串元素,但和列表類型不一 樣的是,集合中不允許有重復(fù)元素,并且集合中的元素是無序的,不能通過 索引下標(biāo)獲取元素。利用 Set 的交集、并集、差集等操作,可以計算共同喜好,全部的喜好,自己獨有的喜好等功能。
(5)Sorted Set有序集合(跳表實現(xiàn)):Sorted Set 多了一個權(quán)重參數(shù) Score,集合中的元素能夠按 Score 進行排列。可以做排行榜應(yīng)用,取 TOP N 操作。
3、zset跳表的數(shù)據(jù)結(jié)構(gòu)
4、ZAB協(xié)議
ZAB協(xié)議包括兩種基本的模式:崩潰恢復(fù)和消息廣播。當(dāng)整個 Zookeeper 集群剛剛啟動或者Leader服務(wù)器宕機、重啟或者網(wǎng)絡(luò)故障導(dǎo)致不存在過半的服務(wù)器與 Leader 服務(wù)器保持正常通信時,所有服務(wù)器進入崩潰恢復(fù)模式,首先選舉產(chǎn)生新的 Leader 服務(wù)器,然后集群中 Follower 服務(wù)器開始與新的 Leader 服務(wù)器進行數(shù)據(jù)同步。 當(dāng)集群中超過半數(shù)機器與該 Leader 服務(wù)器完成數(shù)據(jù)同步之后,退出恢復(fù)模式進入消息廣播模式,Leader 服務(wù)器開始接收客戶端的事務(wù)請求生成事物提案來進行事務(wù)請求處理。
5、volatile作用
(1)volatile在多處理器開發(fā)中保證了共享變量的“ 可見性”。可見性的意思是當(dāng)一個線程修改一個共享變量時,另外一個線程能讀到這個修改的值。(共享內(nèi)存,私有內(nèi)存)
(2)volatile關(guān)鍵字通過“內(nèi)存屏障”來防止指令被重排序。
1、手撕代碼。牛客題霸上的原題,可以去看看:NC116把數(shù)字翻譯成字符串
2、進程的組成部分
進程由進程控制塊(PCB)、程序段、數(shù)據(jù)段三部分組成。
3、Redis的應(yīng)用場景
(1)緩存
(2)共享Session
(3)消息隊列系統(tǒng)
(4)分布式鎖
4、單線程的Redis為什么快?
(1)純內(nèi)存操作
(2)單線程操作,避免了頻繁的上下文切換
(3)合理高效的數(shù)據(jù)結(jié)構(gòu)
(4)采用了非阻塞I/O多路復(fù)用機制
5、事務(wù)的基本要素**(事務(wù)特性)**
(1)原子性:事務(wù)是一個原子操作單元,其對數(shù)據(jù)的修改,要么全都執(zhí)行,要么全都不執(zhí)行
(2)一致性:事務(wù)開始前和結(jié)束后,數(shù)據(jù)庫的完整性約束沒有被破壞。
(3)隔離性:同一時間,只允許一個事務(wù)請求同一數(shù)據(jù),不同的事務(wù)之間彼此沒有任何干擾。
(4)持久性:事務(wù)完成后,事務(wù)對數(shù)據(jù)庫的所有更新將被保存到數(shù)據(jù)庫,不能回滾。
6、CAP定理
一個分布式系統(tǒng)不可能同時滿足以下三種,一致性,可用性,分區(qū)容錯性。在此ZooKeeper保證的是CP,ZooKeeper不能保證每次服務(wù)請求的可用性,在極端環(huán)境下,ZooKeeper可能會丟棄一些請求,消費者程序需要重新請求才能獲得結(jié)果。 另外在進行l(wèi)eader選舉時集群都是不可用,所以說,ZooKeeper不能保證服務(wù)可用性。
7、HashMap和ConcurrentHashMap區(qū)別
(1)由于HashMap是線程不同步的,雖然處理數(shù)據(jù)的效率高,但是在多線程的情況下存在著安全問題,因此設(shè)計了CurrentHashMap來解決多線程安全問題。
(2)HashMap在put的時候,插入的元素超過了容量(由負(fù)載因子決定)的范圍就會觸發(fā)擴容操作,就是rehash,這個會重新將原數(shù)組的內(nèi)容重新hash到新的擴容數(shù)組中,在多線程的環(huán)境下,存在同時其他的元素也在進行put操作,如果hash值相同,可能出現(xiàn)同時在同一數(shù)組下用鏈表表示,造成閉環(huán),導(dǎo)致在get時會出現(xiàn)死循環(huán),所以HashMap是線程不安全的。
8、Kafka判斷一個節(jié)點還活著的兩個條件
(1)節(jié)點必須可以維護和 ZooKeeper 的連接,Zookeeper 通過心跳機制檢查每個節(jié)點的連接
(2)如果節(jié)點是個 follower,他必須能及時的同步 leader 的寫操作,延時不能太久。
百度
社招 JAVA 1年
1、 NC16 判斷二叉樹是否對稱
2、NC32 求平方根
3、NC2 重排鏈表
騰訊
社招 JAVA 2年
騰訊一面:(總耗時:120min)
1、jvm內(nèi)存結(jié)構(gòu)介紹、代碼調(diào)用過程中的內(nèi)存流程;
2、java如何分配內(nèi)存,多線程呢?
3、Spring如何加載注解
4、Spring啟動流程、bean實例化
5、xxljob原理,使用流程
6、OOM定位、解決方式,流程
7、講項目xxxxx
8、redis pipline是全雙工還是半雙工
9、云原生是什么?(這個真不會)
10、rabbitMQ原理、流程、用途
11、rabbitMQ如何保證數(shù)據(jù)到達
12、Http 1.0 1.1 2.0
13、注解使用、如何掃描
14、cas原理,緩存一致性原理(volatile、synchronized、可見性)
15、gc算法、掃描算法(優(yōu)劣)、內(nèi)存分區(qū)
16、jedis是否使用鏈接池,如何處理有序數(shù)據(jù)
算法:
go代碼求輸出(面試官讓我按自己理解猜…)
leetcode 74. 搜索二維矩陣
leetcode 鏈表反轉(zhuǎn)
騰訊二面面經(jīng):(總耗時:100min)
1、項目簡述(blablabla…);
2、MQ選型;(RocketMQ、ZeroMQ、Kafka、RabbitMQ優(yōu)缺點)
3、消息可靠性保證;(數(shù)據(jù)冪等、高可用鏡像集群、Confirm機制、事務(wù)機制、持久性)
4、Redis類型及源碼簡述;(String、Hash、ZSet、Set、Dict、GEO、HyperLogLog、BloomFilter、Stream、Bitmap等)
5、MySql和MongoDB區(qū)別;( blablabla)
6、JVM中如何掃描對象;(root、hotspot算法、cardTable)
7、GC算法;(復(fù)制、標(biāo)記清除、標(biāo)記整理、內(nèi)存碎片及解決方式)
8、代碼運行流程對應(yīng)JVM內(nèi)部流程;(幾個關(guān)鍵字:棧楨、操作數(shù)棧、)
9、紅黑樹;(這個簡單,自己吹牛逼…;紅黑節(jié)點、特性等)
10、線程&協(xié)程;(blabla…)
11、阻塞IO、非阻塞IO、同步IO、異步IO、IO多路復(fù)用(區(qū)別及內(nèi)部流程、用戶態(tài)內(nèi)核態(tài)blablabla…);
12、死鎖及打破方式;(互斥、請求與保持、循環(huán)等待、阻塞;超時、銀行家算法)
13、一致性Hash算法詳解;(熱點分布、2的31個槽、虛擬節(jié)點等)
14、看什么書;(隨便挑一本,開始背書)
15、對c++和java看法;(吹牛逼,吹到面試官high點)
16、自己技術(shù)發(fā)展方向;(技術(shù)or管理)
17、讀過什么組件源碼;(redis、JVM、MyBatis、Spring及相關(guān)基本都讀過、sharding-jdbc等)
18、隨便講個源碼組件源碼結(jié)構(gòu)及內(nèi)部核心原理;(redis、MyBatis等吹牛逼)
算法:
a、鏈表相加;
b、leetcode 1567 乘積為正數(shù)的最長子數(shù)組長度;(滑動窗口、貪心分治法求解)
阿里巴巴
兩輪面試都是電面。
一面總體上還是圍繞項目架構(gòu)、Java基礎(chǔ)、JVM、并發(fā)編程、數(shù)據(jù)庫操作、中間件技術(shù)和Dubbo服務(wù)治理框架等展開,可能因為是云安全部門,有一半時間在考察JVM,還提問了一些編譯優(yōu)化的知識。
一面結(jié)束后很快安排了二面,相對一面,二面的問題更深入,問題比較刨根問底,更加注重對一些技術(shù)細(xì)節(jié)的理解和把握。比如數(shù)據(jù)庫操作,面試官會詳細(xì)的問你數(shù)據(jù)庫插入和刪除一條數(shù)據(jù)的過程在底層是如何執(zhí)行的,項目里配置了讀寫分離,也會比較深入的就實現(xiàn)方法和底層邏輯展開討論。
面試問題:
1、JVM內(nèi)存分代。
2、Java 8的內(nèi)存分代改進。
3、深入分析了Classloader,雙親委派機制。
4、JVM的編譯優(yōu)化。
5、對Java內(nèi)存模型的理解,以及其在并發(fā)中的應(yīng)用。
6、指令重排序,內(nèi)存柵欄等。
7、HashMap的并發(fā)問題。
8、了解LinkedHashMap的應(yīng)用嗎?
9、在工作中遇到過哪些設(shè)計模式,是如何應(yīng)用的?
愛奇藝
愛奇藝的面試都是二對一,每輪面試兩個面試官。
一面比較順利,主要是Java基礎(chǔ),Spring原理,Java NIO,并發(fā)和集合框架等,可能是因為視頻網(wǎng)站,愛奇藝考察網(wǎng)絡(luò)原理的知識多,比如TCP/IP協(xié)議、長連接與短連接等。
一面提到了自己可能會在下半年學(xué)習(xí)大數(shù)據(jù)與機器學(xué)習(xí)相關(guān)的知識,二面就在這上面栽了跟頭,問了很多海量數(shù)據(jù)的問題。
面試問題:
1、手撕代碼。牛客題霸上的原題,可以去練練:NC22合并兩個有序的數(shù)組。
2、TCP/IP協(xié)議。
3、長連接與短連接。
4、mapreduce過程。
5、多路歸并的時間復(fù)雜度。
6、海量url去重類問題。
7、Java NIO使用。
7、倒排索引的原理。
8、對分詞技術(shù)的了解。
面試中給了一個具體場景,考察對MapReduce過程的理解,比如Map階段和Reduce階段是如何進行的等,Reduce階段面試官希望分析給出一個多路歸并的時間復(fù)雜度,用外排序的知識簡單分析了一下,回答的不太好。回來以后搜索了勝者樹和敗者樹的優(yōu)化,發(fā)現(xiàn)這里面的內(nèi)容還挺多, 深刻體會到有些知識點如果平時掌握的不夠全面深刻,很難信手拈來 。
字節(jié)跳動
JAVA 1年
一面:
1、final是干嘛的,用在什么地方,你們項目中有用到過嗎
2、有那些集合,一個一個說linkedlist,arraylist,hashmap
3、說一下hashmap基本結(jié)構(gòu),和hashmap的擴容,hashmap的并發(fā)
4、說一下jvm的垃圾回收器,有那些,算法有哪些,他們的優(yōu)缺點
5、線程池用過嗎?用來干什么?說一下線程池。
6、做過sql優(yōu)化嗎(我簡歷上寫了),說一下吧。
7、mysql的索引說一下,b+樹的優(yōu)缺點
8、說一下dubbo的架構(gòu)(簡歷上有寫)
9、說一下kafka的topic,partition,broker概念
10、kafka的主從選舉機制
11、redis用過嗎?有哪些數(shù)據(jù)類型,常用什么數(shù)據(jù)類型?我有說zset,那說一下zset的底層原理吧
12、linux中你用哪些命令
13、linux中想看一個文件中某個關(guān)鍵字出現(xiàn)的次數(shù)(我不會,后面還會問到。。)
15、做題:leetcode56題,合并區(qū)間。
二面:
直接先做題:leetcode70 跳臺階,這個我做過所以寫的很快,還說了下遞歸和動態(tài)規(guī)劃的優(yōu)缺點,
然后特別,面試官發(fā)給了一個飛書文檔的連接,上面有很多實際的問題,大致有這些:
1、給一個實習(xí)生寫的代碼,請指出他的問題
2、給定一個訂單和商品的要求,請設(shè)計表結(jié)構(gòu),然后有三個問題,分別寫3條sql來。根據(jù)聯(lián)合索引來設(shè)計索引。
3、接著第二題,用redis來存儲上面問題查詢出來的結(jié)果,該怎么寫redis
然后:
1、問一個之前問過你當(dāng)時你沒回答上來的: linux中想看一個文件中某個關(guān)鍵字出現(xiàn)的次數(shù),嘻嘻,那天面試完我去百度了!
2、說一下redis的主從復(fù)制,緩沖區(qū)大小,超過緩沖區(qū)大小怎么辦?
3、tcp三次握手,為什么三次,為什么四次
4、tcp快速恢復(fù),快速啟動,慢啟動
5、進程和線程的區(qū)別(這一部分沒細(xì)問,他說看你是搞java,如果是搞c的會問的更加深入。)
我算法題做的比較快,問完上面的問題后就花了30分鐘,面試官看太快了,就說你還有什么比較拿手的,我就說了說我做過一點mysql的治理。然后又聊了10分鐘
三面:
直接先做題:合并兩個有序鏈表。。
1、你做過哪些項目?
2、說一個你覺得難度最大的項目,你是怎么解決技術(shù)難點問題的。
3、你做過微服務(wù)項目嗎?用的什么技術(shù)?
4、你說一下springcloud 的 hytrix的原理是什么?
5、說一下dubbo的原理。
6、用過redis嗎,項目中怎么用的。
7、知道微服務(wù)網(wǎng)格嗎,知道微服務(wù)治理嗎?
8、你的優(yōu)點和缺點
搜狐
做了筆試題,一面針對筆試和簡歷提問了一些基礎(chǔ)問題。
二面技術(shù)經(jīng)理就比較偏架構(gòu)和中間件的應(yīng)用,提問了項目,主要考察了服務(wù)治理和消息隊列等中間件使用的問題。
面試問題:
1、手撕代碼。牛客題霸上的原題,可以去看看:NC63撲克牌順子。
2、消息中間件如何解決消息丟失問題
3、Dubbo的服務(wù)請求失敗怎么處理
4、重連機制會不會造成錯誤
5、對分布式事務(wù)的理解
6、深入分析幾個設(shè)計模式
面試最后提問了一個不定長字符串轉(zhuǎn)為定長字符串的問題,這個簡單的問題被我想復(fù)雜了,沒有Get到面試官的點,考慮了唯一性,性能等,扯了一大堆。
也提醒一下大家,面試過程中要保持清醒,不要有思維定式,除非是底層研發(fā)崗位,社招對算法的考察不會特別難,用正常的思路去解決就可以。
58同城
三輪技術(shù)面,大部分是實際場景的算法和系統(tǒng)設(shè)計類問題。
面試問題:
1、HTTP請求的報文格式Spring的事務(wù)實現(xiàn)原理
2、實際場景問題,大量用戶數(shù)據(jù)如何在內(nèi)存中排序和去重
3、緩存機器增刪如何對系統(tǒng)影響最小,一致性哈希的實現(xiàn)
4、Redis持久化的幾種方式
5、Redis的緩存失效策略
7、實際場景問題解決,典型的TOP K問題
8、實際場景問題,海量登錄日志如何排序和處理SQL操作,主要是索引和聚合函數(shù)的應(yīng)用
國美在線
做了一份筆試題,主要考察Java基礎(chǔ),數(shù)據(jù)庫,設(shè)計模式以及數(shù)據(jù)結(jié)構(gòu),要求寫出B-Tree的節(jié)點結(jié)構(gòu),算法題目是一道等概率抽獎的題目,用蓄水池抽樣算法解決了。
面試問題:
1、SQL語句編寫。
2、MySQL的幾種優(yōu)化。
3、Spring行級鎖。
4、Spring衍生的相關(guān)其他組件整理。
5、RMI的幾種協(xié)議和實現(xiàn)框架。
6、BTree相關(guān)的操作。
7、數(shù)據(jù)庫鎖表的相關(guān)處理。
8、考察跳臺階問題。
另外面試過程中詢問了一些工作中用到框架和組件的版本等細(xì)節(jié)問題,平時沒太關(guān)注,后來思考了一下,對開源組件的應(yīng)用,版本的管理很重要。
小米
1.MySQL or查詢能使用索引嗎,為什么能或者不能,說出原理?
2.如何實現(xiàn)cookie跨域?非子域名
3.兩個文件a,b,a中包含b中所有的文件行,b中包含a中所有的文件行,滿足這兩個條件a和b相等,怎么用程序來實現(xiàn)?
4.二維求組,由a【0】【0】到a【n】【n】會有多少種情況,只考慮從左到右,從上到下
5.多臺服務(wù)器,一個域名,客戶端請求到具體某一臺服務(wù)器的全過程,盡可能的細(xì)
6.如何提取具有一定規(guī)則的日志行,并做技術(shù)統(tǒng)計
去哪兒
1.手撕代碼。牛客上的原題,可以去看看:NC13**二叉樹的最大深度。**
2.JVM內(nèi)存查看與分析,編寫內(nèi)存泄露實例
3.線上CPU100%,如何定位和排查問題
4.如何在運行時確定對象類型?
5.引用傳遞和值傳遞
6.類加載過程,如何獲得當(dāng)前對象的****ClassLoader
7.Git操作,Maven多[項目]聚合
8.10萬個ip段如何快速查找
**9.Java內(nèi)存模型,volatile和****i++**的線程安全
10.線程池實現(xiàn)原理,Lock機制的實現(xiàn)
(1)其實java線程池的實現(xiàn)原理很簡單,說白了就是一個線程集合workerSet和一個阻塞隊列workQueue。當(dāng)用戶向線程池提交一個任務(wù)(也就是線程)時,線程池會先將任務(wù)放入workQueue中。workerSet中的線程會不斷的從workQueue中獲取線程然后執(zhí)行。當(dāng)workQueue中沒有任務(wù)的時候,worker就會阻塞,直到隊列中有任務(wù)了就取出來繼續(xù)執(zhí)行。
11.JVM對final關(guān)鍵字的編譯優(yōu)化
12.ConcurrentHashMap深入分析
13.HashMap和HashSet的使用
14.Synchronized和Lock的使用
15.Dubbo底層實現(xiàn),Dubbo相比webservice等方式的優(yōu)勢
16.設(shè)計模式,服務(wù)治理等
17.Spring動態(tài)加載數(shù)據(jù)源
18.Spring boot應(yīng)用
19.Spring中的設(shè)計模式
(1)簡單工廠模式:實質(zhì)是由一個工廠類根據(jù)傳入的參數(shù),動態(tài)決定應(yīng)該創(chuàng)建哪一個產(chǎn)品類。
(2)工廠方法模式:通常由應(yīng)用程序直接使用new創(chuàng)建新的對象,為了將對象的創(chuàng)建和使用相分離,采用工廠模式,即應(yīng)用程序?qū)ο蟮膭?chuàng)建及初始化職責(zé)交給工廠對象。
(3)單例模式:保證一個類僅有一個實例,并提供一個訪問它的全局訪問點。
(4)適配器模式;
(5)包裝器模式:spring中用到的包裝器模式在類名上有兩種表現(xiàn):一種是類名中含有Wrapper,另一種是類名中含有Decorator。基本上都是動態(tài)地給一個對象添加一些額外的職責(zé)。
(6)代理模式:為其他對象提供一種代理以控制對這個對象的訪問。
(7)觀察者模式:定義對象間的一種一對多的依賴關(guān)系,當(dāng)一個對象的狀態(tài)發(fā)生改變時,所有依賴于它的對象都得到通知并被自動更新。
(8)策略模式:定義一系列的[算法],把它們一個個封裝起來,并且使它們可相互替換。本模式使得[算法]可獨立于使用它的客戶而變化。
20.Linux的常用命令,簡單shell編寫
21.Linux系統(tǒng)監(jiān)控命令
22.Redis的持久化方式
23.緩存和數(shù)據(jù)庫的一致性問題
24.Redis、MongoDB和Memcached的區(qū)別
25.Solr和Lucene,中文分詞技術(shù)
26.爬蟲的深搜和廣搜,隊列和棧
27.數(shù)據(jù)庫索引的實現(xiàn),B+樹的結(jié)構(gòu)和操作,為什么不用紅黑樹
28.SQL表設(shè)計 Join****操作
29.數(shù)據(jù)庫范式,聚集索引與非聚集索引
30.數(shù)據(jù)庫存儲過程,SQL注入
快手
社招 高級Java開發(fā)
1、NC113 驗證IP地址
2、NC78 反轉(zhuǎn)鏈表
3、NC121 字符串的排列
跟我一起學(xué)習(xí)進大廠吧,后面我把面試題答案講解整理發(fā)布,敬請持續(xù)關(guān)注。
QQ群【837324215】
關(guān)注我的公眾號【Java大廠面試官】,回復(fù):架構(gòu)、資源等關(guān)鍵詞(更多關(guān)鍵詞,關(guān)注后注意提示信息)獲取更多免費資料。
公眾號也會持續(xù)輸出高質(zhì)量文章,和大家共同進步。
總結(jié)
以上是生活随笔為你收集整理的2020年11月最新互联网大厂面试经验分享【网易、阿里、腾讯、京东、百度、爱奇艺、字节、小米、美团、搜狐、58】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一分钟了解阿里云产品:云虚拟主机
- 下一篇: 产品生产的各个阶段:DV,EV,PV ·