2019秋招總結(jié),面了阿里,騰訊,字節(jié)跳動(dòng),已拿offer,分享面經(jīng)

寫在前面

海外渣碩,從七月份開始準(zhǔn)備秋招,歷時(shí)四個(gè)月,陸陸續(xù)續(xù)投了30多家公司,數(shù)不清頂著時(shí)差做了多少筆試,無(wú)數(shù)個(gè)不眠的夜都在不斷地懷疑自己中度過(guò)(菜雞本雞沒跑了),收到的面試卻仍然屈指可數(shù),主要以大廠為主,結(jié)局雖不圓滿但能看到自己的付出所帶來(lái)的成長(zhǎng)。

以下面經(jīng)已過(guò)濾項(xiàng)目相關(guān)問題,參考意義不大

一、阿里 - 業(yè)務(wù)平臺(tái)事業(yè)部(會(huì)員中臺(tái))- Java開發(fā)(一面掛)

1. Java

  • 重寫hashcode()是否需要重寫equals(),不重寫會(huì)有什么后果

2. 并發(fā)

  • 自旋鎖和阻塞鎖的區(qū)別
  • 公平鎖和非公平鎖的區(qū)別
  • jdk中哪種數(shù)據(jù)結(jié)構(gòu)或工具可以實(shí)現(xiàn)當(dāng)多個(gè)線程到達(dá)某個(gè)狀態(tài)時(shí)執(zhí)行一段代碼
  • 柵欄和閉鎖的區(qū)別
  • 如何使用信號(hào)量實(shí)現(xiàn)上述情況

3. JVM

  • 新生代和年老代的GC算法分別是什么
  • 標(biāo)記清除和標(biāo)記整理的區(qū)別
  • 了解過(guò)CMS收集器嗎

4. 網(wǎng)絡(luò)

  • 解釋HTTPs
  • HTTPs為什么要用對(duì)稱加密+非對(duì)稱加密,相對(duì)于只使用非對(duì)稱加密有什么好處

5. 數(shù)據(jù)庫(kù)

  • 給定一個(gè)表,其中有三列(員工名稱,工資,部門號(hào)),找出每個(gè)部門工資最高的員工

6. 代碼

  • LeetCode 863 二叉樹中所有距離為K的結(jié)點(diǎn)

二、阿里 - 新零售技術(shù)事業(yè)群(業(yè)務(wù)平臺(tái)事業(yè)部)- Java開發(fā)(一面掛)

1. 框架

  • 用過(guò)哪些Java開源框架
  • 講一講對(duì)Spring的理解
  • 看過(guò)IOC和AOP的源碼嗎
  • 它們底層是如何實(shí)現(xiàn)的
  • 用過(guò)其他什么框架
  • 了解過(guò)分布式或者微服務(wù)的開源框架嗎
  • 講一講對(duì)分布式系統(tǒng)模型的理解
  • 分布式系統(tǒng)中有一個(gè)節(jié)點(diǎn)宕機(jī)怎么辦
  • 分布式系統(tǒng)如何實(shí)現(xiàn)負(fù)載均衡

2. 數(shù)據(jù)庫(kù)

  • MySQL和Oracle數(shù)據(jù)庫(kù)有哪些不同
  • 數(shù)據(jù)庫(kù)有哪些鎖
  • 表鎖和行鎖的區(qū)別
  • 哪些場(chǎng)景需要加表鎖
  • 插入一條數(shù)據(jù)需要加什么鎖
  • 分布式數(shù)據(jù)庫(kù)如何保證數(shù)據(jù)可靠性
  • 了解過(guò)MySQL的主從復(fù)制嗎

三、騰訊 - TEG - 后端開發(fā)(一面掛)

1. 數(shù)據(jù)結(jié)構(gòu)

  • B+樹與紅黑樹的區(qū)別

2. Java

  • HashMap的底層數(shù)據(jù)結(jié)構(gòu),局限性與線程安全
  • 如何實(shí)現(xiàn)線程安全的HashMap
  • Collections.sychronizedMap與ConcurrentHashMap的區(qū)別
  • HashMap與ConcurrentHashMap的性能比較

3. JVM

  • 類的編譯過(guò)程
  • 類的加載過(guò)程
  • JVM的內(nèi)存空間
  • JVM的GC機(jī)制

4. 操作系統(tǒng)

  • 進(jìn)程與線程的區(qū)別
  • 進(jìn)程間如何通信
  • 共享內(nèi)存與Socket的優(yōu)缺點(diǎn)與性能比較
  • 子進(jìn)程從父進(jìn)程繼承了什么
  • 什么是僵尸進(jìn)程
  • 線程與協(xié)程的區(qū)別

5. 網(wǎng)絡(luò)

  • TCP的四次揮手
  • TIME_WAIT狀態(tài)處在哪一方以及為什么需要它
  • TCP與UDP的區(qū)別與可靠性
  • 如何實(shí)現(xiàn)UDP的可靠傳輸

6. 數(shù)據(jù)庫(kù)

  • 解釋ACID四大特性
  • 原子性的底層實(shí)現(xiàn)
  • 數(shù)據(jù)庫(kù)宕機(jī)后恢復(fù)的過(guò)程
  • 如何保證事務(wù)的ACID特性
  • MySQL日志類型

7. 分布式

  • 談?wù)剬?duì)分布式系統(tǒng)的理解
  • 分布式數(shù)據(jù)庫(kù)的實(shí)現(xiàn)
  • 如何保證不同數(shù)據(jù)庫(kù)之間的數(shù)據(jù)一致性
  • 如何實(shí)現(xiàn)主從數(shù)據(jù)庫(kù)間的同步

四、騰訊 - FIT - 后端開發(fā)(一面掛)

1. 網(wǎng)絡(luò)

  • TCP三次握手/四次揮手
  • TIME_WAIT狀態(tài)
  • 網(wǎng)絡(luò)延遲大的情況怎么處理
  • HTTP請(qǐng)求到響應(yīng)全過(guò)程(服務(wù)端)
  • HTTP請(qǐng)求頭及其作用
  • HTTP和HTTPs
  • HTTPs的握手過(guò)程

五、字節(jié) - 頭條 - 后端開發(fā)(二面掛)

1. 一面

  • 操作系統(tǒng)
  • 講一講進(jìn)程和線程
  • 講一講多線程和線程池
  • Linux的最大進(jìn)程數(shù)限制

①. WEB

  • 輸入U(xiǎn)RL到頁(yè)面加載的過(guò)程
  • 后端怎么處理前端傳過(guò)來(lái)的文件

②. JVM

  • GC機(jī)制(GC算法,分代收集,收集器,STW)

③. 代碼

  • 給定一個(gè)數(shù)組a[N]和一個(gè)整數(shù)P,求a[i] + a[j] + a[k] =P,保證i<j<k

2. 二面

①. 數(shù)據(jù)庫(kù)

  • 身份證如何有效建立索引
  • Innodb索引類型
  • 聚簇索引和非聚簇索引的區(qū)別
  • 索引失效的情況
  • 寫一個(gè)分頁(yè)查詢

②. Java

  • JMM內(nèi)存模型
  • Classloader雙親委派機(jī)制
  • 講一下ThreadLocal
  • 線程間如何通信

六、字節(jié) - 頭條 - 客戶端開發(fā)(已拿offer)

1. 一面

①. 操作系統(tǒng)

  • 講一下進(jìn)程和線程
  • 講一下線程安全

②. 智力題

  • 兩個(gè)人拋硬幣,先拋的人贏的概率

③. 代碼

  • 單鏈表排序,奇數(shù)位升序,偶數(shù)位降序

2. 二面

①. WEB

  • HTML,JS,CSS的區(qū)別
  • 輸入U(xiǎn)RL到頁(yè)面加載的過(guò)程
  • HTTP的長(zhǎng)連接和實(shí)現(xiàn)原理

②. Java

  • 創(chuàng)建和終止一個(gè)線程
  • 講一下熟悉的容器類
  • ArrayList中如何刪除某個(gè)元素的所有相同元素
  • 講一下迭代器的實(shí)現(xiàn)原理

③. SQL

  • 學(xué)生表 Student (S#,Sname,Sage,Ssex),課程表 Course (C#,Cname),成績(jī)表SC (S#,C#,score),查詢平均成績(jī)大于 60 分的同學(xué)的學(xué)號(hào)和平均成績(jī)

④. 代碼

Leetcode 283 移動(dòng)零

3. 三面

①. 智力題+數(shù)據(jù)結(jié)構(gòu)+代碼

  • 撲克牌的移動(dòng)

②. 并發(fā)

  • 樂觀鎖和悲觀鎖的區(qū)別
  • 兩種鎖在Java中的具體實(shí)現(xiàn)
  • 兩種鎖的使用場(chǎng)景

七、阿里 - 供應(yīng)鏈平臺(tái)事業(yè)部 - Java開發(fā)(二面掛)

1. 一面

①. 框架

  • 講一下IOC
  • 對(duì)SpringBoot的理解
  • Mybatis中#和$的區(qū)別

②. Java

  • HashMap底層實(shí)現(xiàn)和擴(kuò)容機(jī)制

③. 代碼

  • Leetcode 206 鏈表反轉(zhuǎn)

④. 數(shù)據(jù)庫(kù)

  • InnoDB和MyISAM的區(qū)別

⑤. 其他

  • SQL注入

2. 二面

①. 算法和數(shù)據(jù)結(jié)構(gòu)

  • 講一下紅黑樹
  • 紅黑節(jié)點(diǎn)的個(gè)數(shù)
  • 紅黑樹的插入刪除查詢時(shí)間復(fù)雜度
  • 講一下B+樹
  • B+樹的插入刪除查詢時(shí)間復(fù)雜度
  • 講一下堆的性質(zhì)及應(yīng)用場(chǎng)景
  • 建堆時(shí)間復(fù)雜度
  • 各種排序算法的時(shí)間復(fù)雜度及穩(wěn)定性

②. 數(shù)據(jù)庫(kù)

  • 講一下三范式

③. 網(wǎng)絡(luò)

  • 為什么要三次握手
  • 二次握手有什么問題
  • 三次握手有哪些缺陷
  • TCP是如何控制流量的
  • 發(fā)送方發(fā)送頻率過(guò)高造成丟包,TCP是如何解決的
  • 講一下OSI網(wǎng)絡(luò)架構(gòu)
  • HTTP在哪一層
  • HTTP報(bào)文結(jié)構(gòu)
  • HTTP首部字段
  • HTTPs加密在哪一層實(shí)現(xiàn)

④. 操作系統(tǒng)

  • 講一下虛擬內(nèi)存
  • 如果訪問虛擬地址時(shí),該地址在物理內(nèi)存中不存在,會(huì)發(fā)生什么

⑤. Java

  • 講一下volatile
  • volatile底層實(shí)現(xiàn)
  • static修飾用法和區(qū)別

⑥. JVM

  • 講一下GC算法
  • JVM內(nèi)存空間

⑦. 代碼

  • Leetcode 2 鏈表相加

⑧. 函數(shù)式編程

  • 函數(shù)式編程和面向?qū)ο缶幊痰膮^(qū)別
  • jdk8為什么要引入函數(shù)式編程

⑨. 機(jī)器學(xué)習(xí)

  • 講一下梯度下降
  • 梯度下降能保證收斂嗎
?著作權(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)容