2019秋招總結,面了阿里,騰訊,字節跳動,已拿offer,分享面經

寫在前面

海外渣碩,從七月份開始準備秋招,歷時四個月,陸陸續續投了30多家公司,數不清頂着時差作了多少筆試,無數個不眠的夜都在不斷地懷疑本身中度過(菜雞本雞沒跑了),收到的面試卻仍然屈指可數,主要以大廠爲主,結局雖不圓滿但能看到本身的付出所帶來的成長。前端

如下面經已過濾項目相關問題,參考意義不大

1、阿里 - 業務平臺事業部(會員中臺)- Java開發(一面掛)

1. Java

  • 重寫hashcode()是否須要重寫equals(),不重寫會有什麼後果

2. 併發

  • 自旋鎖和阻塞鎖的區別
  • 公平鎖和非公平鎖的區別
  • jdk中哪一種數據結構或工具能夠實現當多個線程到達某個狀態時執行一段代碼
  • 柵欄和閉鎖的區別
  • 如何使用信號量實現上述狀況

3. JVM

  • 新生代和年老代的GC算法分別是什麼
  • 標記清除和標記整理的區別
  • 瞭解過CMS收集器嗎

4. 網絡

  • 解釋HTTPs
  • HTTPs爲何要用對稱加密+非對稱加密,相對於只使用非對稱加密有什麼好處

5. 數據庫

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

6. 代碼

  • LeetCode 863 二叉樹中全部距離爲K的結點

2、阿里 - 新零售技術事業羣(業務平臺事業部)- Java開發(一面掛)

1. 框架

  • 用過哪些Java開源框架
  • 講一講對Spring的理解
  • 看過IOC和AOP的源碼嗎
  • 它們底層是如何實現的
  • 用過其餘什麼框架
  • 瞭解過度布式或者微服務的開源框架嗎
  • 講一講對分佈式系統模型的理解
  • 分佈式系統中有一個節點宕機怎麼辦
  • 分佈式系統如何實現負載均衡

2. 數據庫

  • MySQL和Oracle數據庫有哪些不一樣
  • 數據庫有哪些鎖
  • 表鎖和行鎖的區別
  • 哪些場景須要加表鎖
  • 插入一條數據須要加什麼鎖
  • 分佈式數據庫如何保證數據可靠性
  • 瞭解過MySQL的主從複製嗎

3、騰訊 - TEG - 後端開發(一面掛)

1. 數據結構

  • B+樹與紅黑樹的區別

2. Java

  • HashMap的底層數據結構,侷限性與線程安全
  • 如何實現線程安全的HashMap
  • Collections.sychronizedMap與ConcurrentHashMap的區別
  • HashMap與ConcurrentHashMap的性能比較

3. JVM

  • 類的編譯過程
  • 類的加載過程
  • JVM的內存空間
  • JVM的GC機制

4. 操做系統

  • 進程與線程的區別
  • 進程間如何通訊
  • 共享內存與Socket的優缺點與性能比較
  • 子進程從父進程繼承了什麼
  • 什麼是殭屍進程
  • 線程與協程的區別

5. 網絡

  • TCP的四次揮手
  • TIME_WAIT狀態處在哪一方以及爲何須要它
  • TCP與UDP的區別與可靠性
  • 如何實現UDP的可靠傳輸

6. 數據庫

  • 解釋ACID四大特性
  • 原子性的底層實現
  • 數據庫宕機後恢復的過程
  • 如何保證事務的ACID特性
  • MySQL日誌類型

7. 分佈式

  • 談談對分佈式系統的理解
  • 分佈式數據庫的實現
  • 如何保證不一樣數據庫之間的數據一致性
  • 如何實現主從數據庫間的同步

4、騰訊 - FIT - 後端開發(一面掛)

1. 網絡

  • TCP三次握手/四次揮手
  • TIME_WAIT狀態
  • 網絡延遲大的狀況怎麼處理
  • HTTP請求到響應全過程(服務端)
  • HTTP請求頭及其做用
  • HTTP和HTTPs
  • HTTPs的握手過程

5、字節 - 頭條 - 後端開發(二面掛)

1. 一面

  • 操做系統
  • 講一講進程和線程
  • 講一講多線程和線程池
  • Linux的最大進程數限制

①. WEB

  • 輸入URL到頁面加載的過程
  • 後端怎麼處理前端傳過來的文件

②. JVM

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

③. 代碼

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

2. 二面

①. 數據庫

  • 身份證如何有效創建索引
  • Innodb索引類型
  • 聚簇索引和非聚簇索引的區別
  • 索引失效的狀況
  • 寫一個分頁查詢

②. Java

  • JMM內存模型
  • Classloader雙親委派機制
  • 講一下ThreadLocal
  • 線程間如何通訊

6、字節 - 頭條 - 客戶端開發(已拿offer)

1. 一面

①. 操做系統

  • 講一下進程和線程
  • 講一下線程安全

②. 智力題

  • 兩我的拋硬幣,先拋的人贏的機率

③. 代碼

  • 單鏈表排序,奇數位升序,偶數位降序

2. 二面

①. WEB

  • HTML,JS,CSS的區別
  • 輸入URL到頁面加載的過程
  • HTTP的長鏈接和實現原理

②. Java

  • 建立和終止一個線程
  • 講一下熟悉的容器類
  • ArrayList中如何刪除某個元素的全部相同元素
  • 講一下迭代器的實現原理

③. SQL

  • 學生表 Student (S#,Sname,Sage,Ssex),課程表 Course (C#,Cname),成績表SC (S#,C#,score),查詢平均成績大於 60 分的同窗的學號和平均成績

④. 代碼

Leetcode 283 移動零面試

3. 三面

①. 智力題+數據結構+代碼

  • 撲克牌的移動

②. 併發

  • 樂觀鎖和悲觀鎖的區別
  • 兩種鎖在Java中的具體實現
  • 兩種鎖的使用場景

7、阿里 - 供應鏈平臺事業部 - Java開發(二面掛)

1. 一面

①. 框架

  • 講一下IOC
  • 對SpringBoot的理解
  • Mybatis中#和$的區別

②. Java

  • HashMap底層實現和擴容機制

③. 代碼

  • Leetcode 206 鏈表反轉

④. 數據庫

  • InnoDB和MyISAM的區別

⑤. 其餘

  • SQL注入

2. 二面

①. 算法和數據結構

  • 講一下紅黑樹
  • 紅黑節點的個數
  • 紅黑樹的插入刪除查詢時間複雜度
  • 講一下B+樹
  • B+樹的插入刪除查詢時間複雜度
  • 講一下堆的性質及應用場景
  • 建堆時間複雜度
  • 各類排序算法的時間複雜度及穩定性

②. 數據庫

  • 講一下三範式

③. 網絡

  • 爲何要三次握手
  • 二次握手有什麼問題
  • 三次握手有哪些缺陷
  • TCP是如何控制流量的
  • 發送方發送頻率太高形成丟包,TCP是如何解決的
  • 講一下OSI網絡架構
  • HTTP在哪一層
  • HTTP報文結構
  • HTTP首部字段
  • HTTPs加密在哪一層實現

④. 操做系統

  • 講一下虛擬內存
  • 若是訪問虛擬地址時,該地址在物理內存中不存在,會發生什麼

⑤. Java

  • 講一下volatile
  • volatile底層實現
  • static修飾用法和區別

⑥. JVM

  • 講一下GC算法
  • JVM內存空間

⑦. 代碼

  • Leetcode 2 鏈表相加

⑧. 函數式編程

  • 函數式編程和麪向對象編程的區別
  • jdk8爲何要引入函數式編程

⑨. 機器學習

  • 講一下梯度降低
  • 梯度降低能保證收斂嗎

點擊下方傳送門便可領取筆者秋招整理的Java後端面試題和複習大綱

傳送門

相關文章
相關標籤/搜索