寫在前面
海外渣碩滨嘱,從七月份開始準(zhǔn)備秋招,歷時四個月浸间,陸陸續(xù)續(xù)投了30多家公司太雨,數(shù)不清頂著時差做了多少筆試,無數(shù)個不眠的夜都在不斷地懷疑自己中度過(菜雞本雞沒跑了)魁蒜,收到的面試卻仍然屈指可數(shù)囊扳,主要以大廠為主,結(jié)局雖不圓滿但能看到自己的付出所帶來的成長兜看。
以下面經(jīng)已過濾項目相關(guān)問題锥咸,參考意義不大
一、阿里 - 業(yè)務(wù)平臺事業(yè)部(會員中臺)- Java開發(fā)(一面掛)
1. Java
- 重寫hashcode()是否需要重寫equals()细移,不重寫會有什么后果
2. 并發(fā)
- 自旋鎖和阻塞鎖的區(qū)別
- 公平鎖和非公平鎖的區(qū)別
- jdk中哪種數(shù)據(jù)結(jié)構(gòu)或工具可以實現(xiàn)當(dāng)多個線程到達某個狀態(tài)時執(zhí)行一段代碼
- 柵欄和閉鎖的區(qū)別
- 如何使用信號量實現(xiàn)上述情況
3. JVM
- 新生代和年老代的GC算法分別是什么
- 標(biāo)記清除和標(biāo)記整理的區(qū)別
- 了解過CMS收集器嗎
4. 網(wǎng)絡(luò)
- 解釋HTTPs
- HTTPs為什么要用對稱加密+非對稱加密搏予,相對于只使用非對稱加密有什么好處
5. 數(shù)據(jù)庫
- 給定一個表,其中有三列(員工名稱弧轧,工資雪侥,部門號),找出每個部門工資最高的員工
6. 代碼
- LeetCode 863 二叉樹中所有距離為K的結(jié)點
二精绎、阿里 - 新零售技術(shù)事業(yè)群(業(yè)務(wù)平臺事業(yè)部)- Java開發(fā)(一面掛)
1. 框架
- 用過哪些Java開源框架
- 講一講對Spring的理解
- 看過IOC和AOP的源碼嗎
- 它們底層是如何實現(xiàn)的
- 用過其他什么框架
- 了解過分布式或者微服務(wù)的開源框架嗎
- 講一講對分布式系統(tǒng)模型的理解
- 分布式系統(tǒng)中有一個節(jié)點宕機怎么辦
- 分布式系統(tǒng)如何實現(xiàn)負(fù)載均衡
2. 數(shù)據(jù)庫
- MySQL和Oracle數(shù)據(jù)庫有哪些不同
- 數(shù)據(jù)庫有哪些鎖
- 表鎖和行鎖的區(qū)別
- 哪些場景需要加表鎖
- 插入一條數(shù)據(jù)需要加什么鎖
- 分布式數(shù)據(jù)庫如何保證數(shù)據(jù)可靠性
- 了解過MySQL的主從復(fù)制嗎
三速缨、騰訊 - TEG - 后端開發(fā)(一面掛)
1. 數(shù)據(jù)結(jié)構(gòu)
- B+樹與紅黑樹的區(qū)別
2. Java
- HashMap的底層數(shù)據(jù)結(jié)構(gòu),局限性與線程安全
- 如何實現(xiàn)線程安全的HashMap
- Collections.sychronizedMap與ConcurrentHashMap的區(qū)別
- HashMap與ConcurrentHashMap的性能比較
3. JVM
- 類的編譯過程
- 類的加載過程
- JVM的內(nèi)存空間
- JVM的GC機制
4. 操作系統(tǒng)
- 進程與線程的區(qū)別
- 進程間如何通信
- 共享內(nèi)存與Socket的優(yōu)缺點與性能比較
- 子進程從父進程繼承了什么
- 什么是僵尸進程
- 線程與協(xié)程的區(qū)別
5. 網(wǎng)絡(luò)
- TCP的四次揮手
- TIME_WAIT狀態(tài)處在哪一方以及為什么需要它
- TCP與UDP的區(qū)別與可靠性
- 如何實現(xiàn)UDP的可靠傳輸
6. 數(shù)據(jù)庫
- 解釋ACID四大特性
- 原子性的底層實現(xiàn)
- 數(shù)據(jù)庫宕機后恢復(fù)的過程
- 如何保證事務(wù)的ACID特性
- MySQL日志類型
7. 分布式
- 談?wù)剬Ψ植际较到y(tǒng)的理解
- 分布式數(shù)據(jù)庫的實現(xiàn)
- 如何保證不同數(shù)據(jù)庫之間的數(shù)據(jù)一致性
- 如何實現(xiàn)主從數(shù)據(jù)庫間的同步
四代乃、騰訊 - FIT - 后端開發(fā)(一面掛)
1. 網(wǎng)絡(luò)
- TCP三次握手/四次揮手
- TIME_WAIT狀態(tài)
- 網(wǎng)絡(luò)延遲大的情況怎么處理
- HTTP請求到響應(yīng)全過程(服務(wù)端)
- HTTP請求頭及其作用
- HTTP和HTTPs
- HTTPs的握手過程
五旬牲、字節(jié) - 頭條 - 后端開發(fā)(二面掛)
1. 一面
- 操作系統(tǒng)
- 講一講進程和線程
- 講一講多線程和線程池
- Linux的最大進程數(shù)限制
①. WEB
- 輸入URL到頁面加載的過程
- 后端怎么處理前端傳過來的文件
②. JVM
- GC機制(GC算法,分代收集,收集器原茅,STW)
③. 代碼
- 給定一個數(shù)組a[N]和一個整數(shù)P牍陌,求a[i] + a[j] + a[k] =P,保證i<j<k
2. 二面
①. 數(shù)據(jù)庫
- 身份證如何有效建立索引
- Innodb索引類型
- 聚簇索引和非聚簇索引的區(qū)別
- 索引失效的情況
- 寫一個分頁查詢
②. Java
- JMM內(nèi)存模型
- Classloader雙親委派機制
- 講一下ThreadLocal
- 線程間如何通信
六员咽、字節(jié) - 頭條 - 客戶端開發(fā)(已拿offer)
1. 一面
①. 操作系統(tǒng)
- 講一下進程和線程
- 講一下線程安全
②. 智力題
- 兩個人拋硬幣毒涧,先拋的人贏的概率
③. 代碼
- 單鏈表排序,奇數(shù)位升序贝室,偶數(shù)位降序
2. 二面
①. WEB
- HTML契讲,JS,CSS的區(qū)別
- 輸入URL到頁面加載的過程
- HTTP的長連接和實現(xiàn)原理
②. Java
- 創(chuàng)建和終止一個線程
- 講一下熟悉的容器類
- ArrayList中如何刪除某個元素的所有相同元素
- 講一下迭代器的實現(xiàn)原理
③. SQL
- 學(xué)生表 Student (S#,Sname,Sage,Ssex)滑频,課程表 Course (C#,Cname)捡偏,成績表SC (S#,C#,score),查詢平均成績大于 60 分的同學(xué)的學(xué)號和平均成績
④. 代碼
Leetcode 283 移動零
3. 三面
①. 智力題+數(shù)據(jù)結(jié)構(gòu)+代碼
- 撲克牌的移動
②. 并發(fā)
- 樂觀鎖和悲觀鎖的區(qū)別
- 兩種鎖在Java中的具體實現(xiàn)
- 兩種鎖的使用場景
七峡迷、阿里 - 供應(yīng)鏈平臺事業(yè)部 - Java開發(fā)(二面掛)
1. 一面
①. 框架
- 講一下IOC
- 對SpringBoot的理解
- Mybatis中#和$的區(qū)別
②. Java
- HashMap底層實現(xiàn)和擴容機制
③. 代碼
- Leetcode 206 鏈表反轉(zhuǎn)
④. 數(shù)據(jù)庫
- InnoDB和MyISAM的區(qū)別
⑤. 其他
- SQL注入
2. 二面
①. 算法和數(shù)據(jù)結(jié)構(gòu)
- 講一下紅黑樹
- 紅黑節(jié)點的個數(shù)
- 紅黑樹的插入刪除查詢時間復(fù)雜度
- 講一下B+樹
- B+樹的插入刪除查詢時間復(fù)雜度
- 講一下堆的性質(zhì)及應(yīng)用場景
- 建堆時間復(fù)雜度
- 各種排序算法的時間復(fù)雜度及穩(wěn)定性
②. 數(shù)據(jù)庫
- 講一下三范式
③. 網(wǎng)絡(luò)
- 為什么要三次握手
- 二次握手有什么問題
- 三次握手有哪些缺陷
- TCP是如何控制流量的
- 發(fā)送方發(fā)送頻率過高造成丟包银伟,TCP是如何解決的
- 講一下OSI網(wǎng)絡(luò)架構(gòu)
- HTTP在哪一層
- HTTP報文結(jié)構(gòu)
- HTTP首部字段
- HTTPs加密在哪一層實現(xiàn)
④. 操作系統(tǒng)
- 講一下虛擬內(nèi)存
- 如果訪問虛擬地址時,該地址在物理內(nèi)存中不存在绘搞,會發(fā)生什么
⑤. Java
- 講一下volatile
- volatile底層實現(xiàn)
- static修飾用法和區(qū)別
⑥. JVM
- 講一下GC算法
- JVM內(nèi)存空間
⑦. 代碼
- Leetcode 2 鏈表相加
⑧. 函數(shù)式編程
- 函數(shù)式編程和面向?qū)ο缶幊痰膮^(qū)別
- jdk8為什么要引入函數(shù)式編程
⑨. 機器學(xué)習(xí)
- 講一下梯度下降
- 梯度下降能保證收斂嗎