除了BAT(沒錯我説的B是B站的B),還有網易、希音科技、美柚等中小廠的最新面經。
這次投稿的同學行文幽默風趣,處處透漏着不成功便搞笑的騷氣。
祝他早日上岸,也歡迎大家在評論區討論這些面試題,有哪些面試題不知道怎麼回答好,可以在評論區討論留言,我會及時回覆的。
b站外包/go開發/一面
- 自我介紹
- 在百度什麼級別?t幾?(沒有技術級別,當時忘記自己是什麼級別了,説了個m,然後他説m是經理hhh)
- 怎麼設計一個api的(沒答好,已讀亂回)
- 怎麼去防那個ddos(redis限流+nginx層做處理,最後還是花錢買服務)
- 怎麼部署那個安全攔截服務的(領導買了,在控制枱做的服務,點點點)
- cdn的理解(加快訪問速度之類的,問我還有沒有別的,我説沒有)
- 負載均衡怎麼做的(領導在控制枱點點點)
- 説項目沒難度(我説是,不像b站外包用到這麼多技術)
- 分表是怎麼分的
希音外包/PHP工程師/二面
- 自我介紹、項目總結
- laravel的生命週期(亂説一通)
- redis宕機了怎麼辦(redis日誌排查,加redis哨兵做主從切換)
- http請求過程(亂説一通)
- 消息積壓(説了分區、批量提交(面試官疑惑)、異步消費,他説異步消費不是搞得代碼更加臃腫?)
- 怎麼做冪等(面試官説用分佈式鎖做冪等?沒有反駁他,説他對就完事了)
- mysql內存佔用突然飆升,怎麼排查問題(慢日誌、框架日誌排查,加索引、加緩存之類去解決)
- mysql死鎖怎麼解決的(只説了把mysql配置文件鎖等待的時間設置短一點)
- 什麼是死鎖
- 接口的請求過程(亂説一通)
- redis持久化機制
- redis緩存擊穿、穿透、雪崩
- 在團隊中扮演什麼角色
複試
- 自我介紹
- 説一下你重構後的項目,和之前的項目有什麼不同,亮點在哪裏(cms系統比織夢的安全性高)
- 過幾年後你的項目數據量上來, 你會做一個什麼樣的優化(説了redis和mysql搞個集羣,數據監控之類的)
- 項目基於Laravel8實現 ,構建項目的基礎架構,確保代碼的可維護性和擴展性的(亂説一堆)
- redis持久化機制
- redis rdb快照的時候,有寫操作進來,會備份嗎(不會,主線程會阻塞,感覺面試官想問bgsave命令,子線程備份,當時沒想到)
- redis rdb 單線程 能不能接收客户端的請求(説了io多路複用)
- 發短信的時候,發送失敗怎麼處理的(記錄發送狀態+重試機制)
- 你們對短信發送的時間有要求嗎。比如多少秒發多少條,是怎麼確保一個到達率的(沒有,如果要保證發送時間,説了多台機器批量去發送)
網易外包/Go後端開發/一面
- 自我介紹
- mysql查詢慢是什麼原因(沒索引、表數據量大、死鎖)
- mysql插入慢什麼原因(表數據量大,sql語句多,表索引量大)
- 抽獎邏輯是怎麼樣的
- 怎麼實現用户登錄
- 用户登錄安全有了解過嗎(亂説一通)
- redis擊穿
- redis穿透
- redis其他數據結構有用過嗎?hmap、zet
- 短信發送失敗怎麼處理的(記錄發送狀態+重試機制)
二面
- 自我介紹
- cms系統0-1開發的?(開源框架二次開發)
- 做了哪些功能(欄目、文章、配置、模型管理之類的)
- 登錄的過程説一下
- session登錄有什麼弊端,怎麼改(多台服務器拿不到session,用redis做緩存)
- 客户端拿着token,你是怎麼通過token獲取客户的信息(校驗token,獲取token作為key的信息)
- 有沒有難一點的功能,説一下(沒有,單體項目量不大,只是業務複雜度的難,技術上的難點沒有)
- 用户信息怎麼做加密,token怎麼生成之類的(md5+拼接指定的key或者之類的)
- 200個券碼,發送客户,怎麼設計?(分佈式鎖,數據庫唯一索引兜底)
- 還可以怎麼優化(redis布隆過濾器,避免大量重複請求,處理邏輯做冪等方案)【睡不着想起來還可以做mysql的樂觀鎖,數據做緩存預熱,減輕數據庫請求壓力】
- 長連接做成短連接,怎麼設計,怎麼做到短連接唯一(説了和自己的 短信生成方法(用户id活動id,二進制),php的uuid,時間戳,uuid截取?引用第三方庫之類的)
- 面試官説要短的,要唯一的,答不出來
美柚科技外包/golang服務端工程師/一面
- cpu飆升怎麼排查(top命令查看進程,找出對應的模塊去排查)
- 平常用的什麼設計模式(策略模式,説了抽獎,單例模式數據庫)
- 大數據量怎麼分表(説了按年份分表,然後業務需求,按照指定需求去劃分)
- 水平分表、垂直分表(説了垂直分表是把冷字段切分出去,減少字段列)
- 設計模式開閉原則?(不懂,面試官説開是怎麼加邏輯,閉是不能讓什麼什麼寫進來)
- go內存泄漏怎麼排查(忘記了)
- sql執行慢怎麼排查(mysql慢日誌查詢,explain分析,在對應字段建立索引)
- 索引怎麼建立(建立在wehere或者order字段之類的)
- b+樹和b樹的區別(説了葉子節點和非葉子節點,b+樹用雙向連表方便查詢)
- 有沒有用過微服務(項目沒用到,自己寫過一下示例)
- 項目最大的qps是多少(説了官網有1000+)
- gmp調度模型(隨便一吹)
- go協程裏不捕抓異常會怎麼樣(內存泄漏,面試官説不全是)
- redis用的那些結構(string、zset、list)
- redis遇到過什麼問題(緩存擊穿,設置熱點數據不過期,更新數據庫再更新緩存)
- 説一下kafka(説了對接線索系統)
- 為什麼重構用go(説公司技術轉型,提倡php要轉go)
- 怎麼保證高可用(説了對服務做監控之類的?沒準備好)
- 對服務器怎麼做的監控,cpu、內存之類的(我説沒有,自己做監控的話就做了定時任務監控網站是否訪問,線索是否正常入庫)
- 沒有運維嗎(沒有,後端一把梭)
- 項目怎麼部署的(icode上做安全檢測,然後scp命令上線)
- 開發文檔?他説是功能開發起來會遇到什麼情況之類的文檔(我説了功能開發時間、數據庫文檔、接口文檔)
騰訊外包/後端開發/一面
- 自我介紹
- go開發幾年(1年半)
- 熟悉到什麼程度(增刪改查不是問題)
- map是否安全(不安全)
- 為什麼不安全
- slice的底層結構
- apendslice會安全嗎
- automatic有用過(用過+1-1)
- 説一下什麼是原子性(要麼成功要麼失敗)
- 怎麼做有一個有序的排序(結構裏搞個切片,然後用sort排序)
- mysql主從同步機制(不會)
- redis常用數據結構(string、list、hash、set、zset、bitmap)
- 有序列表的底層結構(不會,跳錶)
- 常用的索引數據結構(哈希、b+樹、二叉樹)
- 微服務的服務發現(客户端服務、服務端服務)
- 怎麼感知服務集羣的變化(服務註冊中心、輪詢服務健康、監控系統)
- 註冊中心如何感知服務的變化(心跳推送?觸發機制之類的)
- 會不會k8s(不會)
阿里外包/一面
- 自我介紹
- 遇到過高併發?(網站大訪問量用redis緩存,表單做提交)
- 進程、線程、協程(隨便説説)
- go的協程設置原理(説了gmp模型)
- go的鎖,用到什麼鎖(mutex、rwmutex)
- 鎖怎麼實現的,有沒有看過源碼(莫得)
- innodb和myisam區別(事務支持、查詢速度、表文件結構、外鍵支持、innodb有主鍵,查詢效率高)
- 為什麼查詢效率高(葉子節點存儲索引和數據,避免回表二次查詢)
- mysql優化(説了分表和覆蓋索引)
- explain關注的字段(命中索引、可能命中索引、全表掃描、用到覆蓋索引)
- redis和kafka的區別(説了redis和kafka的特點)
- 用過k8s嗎(沒)
- mysql的版本控制(説了mvcc,以及怎麼實現的)
- 前期用php?(公司轉型)
- php和go哪個好用(説了go協程用起來方便,php的麻煩一點,編譯型語言,安全比php明文安全)
- goroutine+channel依次輸出小貓小狗100次(設置貓狗channel,先讀貓channel輸出,狗輸出的時候先讀貓channel來保證順序,沒説好這一塊)
- map怎麼用?線程安全?怎麼擴容?(不是安全的,用sync.map安全,説了雙倍擴容)
- 怎麼解決他的哈希衝突?(重新擴容、哈希函數重新生成)
- 設計模式(説了單例模式、策略模式)
- php用什麼框架(tp、laravel)
- laravel的依賴注入
關注我
歡迎關注我,我還會繼續更新更多面經。