互聯網大廠面經分享

由於疫情的影響,今年上半年都在遠程上班,這倒也爲找工作面試提供了便利,不用再專門請假了(汗)
面試一定要注意,不要裸面,算法題一定要刷,多看看面經,總之就是儘量準備的好一點,找到好工作的同時還能提升一波技術,一點也不虧哈哈

工作經歷

通常說到工作經歷的時候,會問你:

爲什麼要從原來的公司跳出來
覺得原來的公司有什麼缺點
這裏千萬要注意,不要一直吐槽自己的公司,否則會讓hr覺得這樣招進來的人不長久,對你的第一印象就大打折扣了

項目經歷

說到項目經歷的時候,有些面試官會從你說的當中跳他感興趣的問你,所以自我介紹的時候可以有傾向性的說說你比較拿手的項目。當然,這塊也得好好準備下,試想,當你連自己負責的部分都說不清楚,人家還敢找你來當同事嗎?

未來規劃

我在被問到這個問題的時候通常是一頭懵逼,因爲我之前沒有好好想過,大家可以準備一下。

基礎知識

基礎知識這塊是跟你簡歷上提到的技術棧相關的,如果你沒寫,就會問一些常見的,java基礎,redis,rocketmq,mysql,操作系統,大公司都會問的比較深,所以只是懂些皮毛不行,至少要有2-3個比較拿手的

Java

1)基礎
int float short double long char 佔字節數?
java內存模型
線程池原理
JUC是什麼
2)集合
集合這塊關注一下 1.8 的實現吧,和 1.7 相比變化了很多

Collection 有什麼子接口、有哪些具體的實現
簡單介紹下 ArrayList 怎麼實現,加操作、取值操作,什麼時候擴容?
講一下 hashMap 原理。hashMap 可以併發讀麼?併發寫會有什麼問題?
講一下 concurrentHashMap 原理。頭插法還是尾插法?擴容怎麼做?
怎麼安全的在迭代集合的過程中刪除元素?
HashMap 1.7和1.8有什麼區別,爲什麼每次擴容都是2的整數倍?
3)併發
線程
進程和線程的區別?並行和併發的區別?瞭解協程麼?
進程間如何通信:進程 A 想讀取進程 B 的主存怎麼辦?線程間通信?
線程的生命週期有哪些狀態?怎麼轉換?
wait 和 sleep 有什麼區別?什麼情況下會用到 sleep?
怎麼停止線程?
怎麼控制多個線程按序執行?
線程池
會用到線程池麼?怎麼使用的?用什麼實現的?
常用的線程池有哪些?用的哪個線程池?什麼情況下怎麼選擇?
ThreadPoolExecutor 有什麼參數?各有什麼作用?拒絕策略?

ReentrantLock 應用場景
死鎖條件
AQS
瞭解 AQS 麼?講講底層實現原理
AQS 有那些實現?
講講 AtomicInteger 的底層實現
volatile 關鍵字有什麼用?怎麼理解可見性,一般什麼場景去用可見性
講一下 threadLocal 原理,threadLocal 是存在 jvm 內存哪一塊的
一個任務從被提交到被執行,線程池做了哪些工作?

講一下鎖,有哪些鎖,有什麼區別,怎麼實現的?
springboot,怎麼做測試和線上的分離
4)IO
NIO,BIO,AIO區別,什麼是阻塞IO和非阻塞IO,什麼是異步IO和同步IO,阻塞和非阻塞指的是哪個過程的阻塞?
Netty聽過嗎,Netty的高效IO是如何實現的?
3.2 JVM
1)內存與 GC
jvm 內存區域分佈?gc 發生在哪些部分?
介紹一下垃圾回收過程。
垃圾回收算法的瞭解。現在用的什麼回收算法?
現在使用的什麼垃圾回收器?知道哪些?講講 G1
容器的內存和 jvm 的內存有什麼關係?參數怎麼配置?
2)異常與調優
線上有什麼 jvm 參數調整?
oom 問題排查思路
線上問題排查,突然長時間未響應,怎麼排查,oom
cpu 使用率特別高,怎麼排查?通用方法?定位代碼?cpu高的原因?
怎麼查看GC情況,如何有效避免頻繁發生GC,YoungGC和FullGC什麼區別,MinorGC聽過嗎?
怎麼獲取 dump 文件?怎麼分析?
3)類加載器
怎麼實現自己的類加載器?
雙親委派機制,有什麼好處,爲什麼有些情況要打破雙親委派機制?
類加載過程?
初始化順序?
3.3 Spring
spring 介紹一下
講一下 ioc、aop
ioc 怎麼防止循環依賴
aop 的實現原理、動態代理過程
Sprintboot啓動流程
maven倉庫?
spring boot starter 自加載是怎麼實現的?在生命週期哪個階段?
Spring 處理請求的過程?

MySQL

瞭解哪些存儲引擎,Innodb和MyIsam的區別,B+樹,爲什麼要用B+樹?
acid 含義?事務隔離級別?幻讀怎麼解決的?
用過 mysql 的鎖麼?有哪些鎖?
MyISAM、InnoDB 區別?爲什麼不用 MyISAM?
mvcc 原理?多版本數據存放在哪?
mysql 髒頁?
redo log,undo log?
索引
innodb 的索引結構是什麼?什麼是聚簇索引?
b+ 樹與 b 樹的區別?
b+ 樹與二叉樹區別,優點?爲什麼不用紅黑樹?
多列索引的結構
字符串類型和數字類型索引的效率?數據類型隱式轉換
主鍵與普通索引的聯繫?存儲上的區別?
sql
join 和 in 怎麼選擇?有什麼區別?
union 和 union all 有什麼區別?怎麼選擇?
怎麼處理 sql 慢查詢?
索引用得不太正常怎麼處理?同時有(a,b)和(a,c)的索引,查詢 a 的時候,會選哪個索引?
跨庫分頁的實現?
分庫分表有哪些策略?怎麼保證 id 唯一?
對 uuid 的理解?知道哪些 GUID、Random 算法?
雪花算法?
用Mysql實現分佈式鎖?
Mysql存儲1萬和1000萬數據,性能會明顯下降嗎?爲什麼?

網絡

tcp
tcp 有哪些機制確保可靠性?擁塞控制怎麼實現?
close_wait 太多怎麼處理?爲什麼會出現這種情況?
講講三次握手,四次揮手
http
http 2 有了解過麼,新增了哪些功能,現在用的什麼版本?1.1?
http 緩存機制都有哪些?什麼是 cdn?header 中涉及到緩存的字段有哪些?
cookie session 介紹一下
html 頁面,怎麼與後端交互?流程是什麼?涉及到哪些組件?
http 協議,報文格式?
keepalive 有什麼用?
Https 原理?
知道哪些 http 狀態碼有哪些?
http 有哪些請求方法?put、post 實現上有什麼區別?
前後端分離與不分離的區別?各有什麼優缺點?
常見 web 攻擊有哪些?瞭解 csrf 攻擊麼?
restful 的作用?有哪些優點和缺點?
nginx 達到上限了怎麼辦?怎麼對 nginx 負載均衡?dns?
nginx 負載均衡有哪些算法?各自有什麼優缺點?
CDN是什麼,瞭解嗎?和前端配合做過性能優化嗎,解決了什麼問題,用什麼指標衡量?用戶分佈?
Redis
Redis 數據結構、對象,使用場景
Redis 內存淘汰策略
緩存的熱點 Key 怎麼處理?redis 緩存穿透,怎麼避免?
redis keys 命令有什麼缺點
主從同步原理,新加從庫的過程
RDB 和 AOF 怎麼選擇,什麼場景使用?
redis 的 zset 的使用場景?底層實現?爲什麼要用跳錶?
Reids編碼方式,數據類型
Redis實現分佈式鎖有什麼優缺點?
Redis大key怎麼解決
線上用Redis碰過什麼坑
Redis雪崩
集羣模式,持久化方式

算法

有哪些常用排序算法?
手寫快排,快排時間複雜度是多少?
快排算法是不是穩定的?什麼是穩定性?
給定一個字母組成的字符串,找出不含有重複字符的最長子串的長度。
9 個硬幣中有一個劣幣,用天平秤,最壞幾次?
LeetCode,hard,扔雞蛋
鏈表做加法
1g 大小文件,裏面每行是最大 16k 的單詞,限制內存 1m,統計單詞頻率最多的 100 個單詞
手寫 100 位帶小數的大數字的減法
全排列。進階:給數組長度 n,求第 k 行的排列

系統設計

設計一個交易結算系統,toB,需要支持廣告投放後生成賬單,開發票,賬單還款,談談你的看法?
如果實現系統的國際化?
設計一個朋友圈?後端如何架構,畫一下架構圖

你有什麼想問的?

部門定位?崗位職責?
目前在做什麼業務?
加班情況?
薪酬福利介紹?

Offer 選擇

目前手頭的 offer 情況?
還有哪些公司的面試流程?
這些公司你自己有什麼傾向性呢?最看重什麼因素?
你的預期薪酬是多少?目前的薪資情況?
想加入一個怎麼樣的團隊?
最近一年的績效情況?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章