前言
樓主本科渣211,碩士華科,專業(yè)均SE,校招的時候沒啥實習(xí)經(jīng)歷,進(jìn)大廠工作兩年多,做后端開發(fā)的工作,沒有涉及到高并發(fā)的case,也沒有大流量的項目,也沒有必須引入某些中間件或者nosql才能解決業(yè)務(wù)問題的場景,簡稱“三無”,只能盡量在簡歷里矮子里面拔將軍,寫一些可能有些價值點的內(nèi)容。社招過程中拿過美團(tuán)、貨拉拉、微眾、阿里、字節(jié)的offer,最終選擇字節(jié)。
關(guān)于社招的最大感受
校招的時候因為沒參加過實習(xí),基本全是實驗室的玩具項目,業(yè)務(wù)復(fù)雜度跟技術(shù)復(fù)雜度可能O(1)級別,最多的面試基本就是基礎(chǔ)知識,框架原理等,沒啥好說的,項目隨便講講也就過了。
社招的時候如果你做的領(lǐng)域或者方向跟面試的崗位不搭界的話,那么社招面試基本上難度會陡然上升,全靠技術(shù)硬實力;如果你是相似的領(lǐng)域,那么可能會項目涉及的很多,技術(shù)沒有那么難,如果你剛好是他們所需要的一個領(lǐng)域模塊,那么你就會有更大的機會面試成功。
社招面試項目很重要,不光是你項目本身的技術(shù)復(fù)雜度,還有業(yè)務(wù)復(fù)雜度,你本身在項目中擔(dān)任的什么角色,遇到過什么問題,是技術(shù)瓶頸問題,還是業(yè)務(wù)問題,怎么解決的,這幾個問題是非常重要的
很多同學(xué)包括我自己一開始也沒有頭緒,看很多面經(jīng)都說要對自己的簡歷滾瓜爛熟,對自己的項目爛熟于心,所以到底是什么算爛熟于心,僅僅是把簡歷寫的內(nèi)容背下來嗎?
下面總結(jié)了一些問題,要注意自己一定要在自己的邏輯里面自洽,不能前后矛盾,前因后果要想清楚。也可以自己不要把所有問題都說滿,可以故意漏下問題,等面試官提問(面試套路,自己主導(dǎo)問題方向)??傊?,不然可能一個不是這個范圍的問題把你問到了,你不知道如何回答,會給面試官一個不好的印象(為啥你自己的項目你都沒有吃透?)
-
最后總結(jié)下社招面試最主要的幾種問題:
4.1 你項目為什么這么設(shè)計?
4.2 這么設(shè)計為了應(yīng)對什么樣的問題?你這樣設(shè)計有什么好處,獲得了哪些收益?
4.3 這么設(shè)計有什么瓶頸嗎?遇到了什么問題?這么設(shè)計有哪些地方不好的?考慮不周的?
4.4 針對問題怎么解決的?針對不好的地方怎么去優(yōu)化? - 假如你是大廠出來的,如果面試的時候一問三不知,或者兩不知,或者面試被一問,因為自己的問題沒有準(zhǔn)備好而導(dǎo)致卡殼或者思考不周,那面試就會大打折扣,這時候大廠反而不是光環(huán)了,而是一個問題。(大廠應(yīng)該都還可以,怎么到你這不咋行了呢?)
- 面試一定要自信。本來應(yīng)聘就是雙向選擇的過程,面試的公司也不是非你不進(jìn),不要因為你是面試者就姿態(tài)很低,一種乞求面試官給你一份工作的姿態(tài),這樣是不對的。好的面試應(yīng)該是你自信表達(dá)你自己的理解,即使不會也不要為難,不需要支支吾吾或者瞎說,這是大忌。不會就是不會,可以瀟灑的回答,沒有關(guān)系的,好的公司也不會就你不會的問題一直追問,這也沒有意義。
樓主社招面試經(jīng)歷
- 其實社招對于樓主這種白天加晚上還要干好本職工作,應(yīng)對需求的情況,還是很不友好的,如果你晚上還要忙著加班,那就更苦不堪言了。樓主從7月8月開始著手復(fù)習(xí),其實復(fù)習(xí)的進(jìn)度很慢,首先盡可能騰出晚上的時間進(jìn)行充電,假如10點鐘下班到家,再稍事歇息后,就10點20或者10點半開始充電,最好復(fù)習(xí)一個小時多一點,差不多看到11點半,準(zhǔn)備洗漱睡覺。但是如果下班后的通勤時間也很長,感覺可以在路上充電一會。
- 周末的時候那就更要安排好時間,這是難得的整塊的時間。首先你肯定需要列一個大綱,需要復(fù)習(xí)的內(nèi)容包含哪些模塊,這個周末重點復(fù)習(xí)哪個模塊。然后就是調(diào)整好跟女朋友或者家庭的時間,穩(wěn)固好感情,說明你正在做的事情,不要因為這種事情既影響了你的感情又影響了你的復(fù)習(xí)進(jìn)度。
- 關(guān)于簡歷,對于樓主來說簡歷很難寫,對于技術(shù)棧又不敢寫精通,不特別懂原理的又不敢多寫,所以技術(shù)棧看起來也比較薄弱。對于簡歷的項目,出彩的地方也不多,自己沉淀總結(jié)的東西也欠缺一些。但是有些技巧,例如你負(fù)責(zé)了哪些項目,負(fù)責(zé)了哪些模塊,實現(xiàn)了什么功能,提升了多少性能,可能放一個數(shù)字更能體現(xiàn)你的價值,例如:通過xxx的優(yōu)化,查詢速度提升100%;
通過xxxx的優(yōu)化,實現(xiàn)了xxx秒的無感知擴展;通過xxx的優(yōu)化,處理速度提升200%等等等語句 - 關(guān)于面試安排,樓主是9月多開始在boss上傳了簡歷,然后就有很多打招呼的,所以你需要在里面篩選出你自己感興趣的崗位。個人建議,可能需要一些崗位打好前站,例如你就想入職阿里,那么也不能一開始就面試阿里,當(dāng)然大佬略過哈,因為面試經(jīng)驗也是一個逐漸熟練的過程,狀態(tài)也是有一個提升的過程,可能對前面的公司不太公平,但的確是有效的方法。然后對于社招且在職且工作任務(wù)可能比較多的應(yīng)聘者來說,是痛苦的過程,面試時間我絕大部分都是安排在晚上,抽出一個小時定好會議室,可能面試完還需要繼續(xù)工作,或者趕上發(fā)布還要更緊張一些,可能還會面臨本來需要你這個時間在工位上解決問題,然后你去面試這樣的尷尬的境地,還提心吊膽,哎,一言難盡。
- 所以面試安排也不能每天晚上都有面試,每家公司的面試流程有慢有快,然后你也需要協(xié)調(diào)每個星期新投幾家公司,這個星期可能會有幾個原來的面試流程中的面試。樓主個人建議可能一個星期可以2家,這個因人而異,記的每次面試后的總結(jié),問題分析,這個非常非常重要。不要覺得面試完就面完了,覺得面試不好就心灰意冷,面試的問題才是你需要提升的地方,這是快捷有效的提升自己的方式。
- 基本時間里程就是7月8月準(zhǔn)備,9月開始投,前期是積累經(jīng)驗,9月底和10月份開始投自己意向公司,差不多10月底11月份就是最后的階段,然后就是選擇的過程了。
面經(jīng)
可能有的小伙伴就急了,說了這么多,我要的面經(jīng)干貨呢?好的,這就給你備上。其實前面的總結(jié)也是一個你如果考慮想出去看更好的機會需要提前思考和規(guī)劃好的事情,打好第一站是非常重要的。
一、猿輔導(dǎo)一面
- 面試形式:牛客網(wǎng)
- 算法:用鏈表模擬大數(shù)加法
- oracle跟mysql的區(qū)別,隔離級別
- 慢查詢?nèi)绾味ㄎ唬咳绾蝺?yōu)化?遇見過什么樣的case,怎么解決的?
- 項目用到了分庫分表,分庫一定會提升性能呢?什么是冷熱數(shù)據(jù)?優(yōu)化了什么地方?假如出現(xiàn)了數(shù)據(jù)暴增,怎么處理?有什么擴容的方法?怎么無感知擴容?怎么做到數(shù)據(jù)實時一致性?
- 線程池,核心參數(shù),等待隊列滿了,來任務(wù)立即執(zhí)行嗎?
- spring boot跟spring的區(qū)別,spring boot是用來干什么的?最大的作用是什么?starter是干什么的?
- hashmap1.7跟1.8?優(yōu)化點?紅黑樹化為什么是8?退化為什么是6?
二、美團(tuán)
- 一面
- 面試形式:??途W(wǎng)
- 項目介紹,難點,怎么遇到的?產(chǎn)生原因?如何解決?為什么要這樣分表?跨庫join如何解決?數(shù)據(jù)量突增怎么解決?
- 如何解決線上問題?cpu狂飆怎么辦?頻繁minor gc怎么辦?可能造成的原因是什么?如何避免?
- 數(shù)據(jù)庫 隔離級別,怎么實現(xiàn)的?當(dāng)前讀,快照讀?MVCC?
- 算法:兩數(shù)之和
- 二面
- 面試形式:??途W(wǎng)
- 項目難點,如何解決?
- 分庫分表的設(shè)計?
- 分布式事務(wù)出現(xiàn)過不一致嗎?為什么?怎么解決?有什么方法避免?怎么監(jiān)控?監(jiān)控到怎么處理?什么時候需要人工接入
- 如何優(yōu)雅的寫代碼?什么代碼算做優(yōu)雅?什么代碼是規(guī)范?你們代碼規(guī)范是什么樣的?
- 如何進(jìn)行code review?
- JVM模型,pc計數(shù)器什么時候為空?
7.算法:之字遍歷二叉樹
- 三面
- 面試形式:牛客網(wǎng)
- 對于大流量,高并發(fā)怎么看?你們項目有沒有?為什么沒有?如果有怎么做?
- 對于你入職以來的工作你怎么看?
- 怎么能拿一個好績效?對于你的績效你怎么看?
- 對于中間件怎么看?用過哪些中間件?為了解決什么問題?
- 對于redis怎么理解?適合什么場景?你用它來干什么?解決什么問題?
- 你怎么看待我們團(tuán)隊?
- 你對于自己的規(guī)劃是怎么樣的?
- 為什么這個時候選擇離職?
三、微眾一面
- 面試形式:??途W(wǎng)
- 做題,一個題目是自己實現(xiàn)的原子整數(shù)類,為啥沒實現(xiàn)原子性的;第二個題目是spring bean的生命周期 還有哪些set函數(shù)怎么使用?;第三個問題是銀行賬號A轉(zhuǎn)賬B的可能涉及到的問題,死鎖?事務(wù)?數(shù)據(jù)庫?并發(fā)?強一致性?談一談
四、酷家樂一面
- 面試形式:電話
- 項目介紹,分庫分表
- public private protected區(qū)別,放在類上,方法上,接口上,屬性上?
不加修飾符是什么? - 抽象類跟接口的區(qū)別,抽象類抽象方法
- 函數(shù)執(zhí)行時間不定,需要一定時間里返回?怎么實現(xiàn)?
- hashmap 紅黑樹,什么時候擴容?擴容是怎么擴容的?怎么發(fā)生環(huán)?死循環(huán)?1.8優(yōu)化?
- concurrenthashmap 怎么實現(xiàn)的線程安全?100%安全嗎?1.7跟1.8區(qū)別?為什么這么做?
- mysql innodb下,能不能不設(shè)置主鍵?主鍵可以為空嗎?可以允許幾個?主鍵跟非主鍵的區(qū)別?索引存儲形式?
- 聯(lián)合索引失效問題?索引失效問題?
- .java文件都包含什么?.class文件都包括什么?java對象的存儲結(jié)構(gòu)
五、有贊
- 一面
- 面試形式:電話
- 項目優(yōu)化做了哪些?
- 線程池,參數(shù),怎么設(shè)置?callable和runnable?線程間通信?
- mysql索引,覆蓋索引?回表?B+樹葉子節(jié)點存儲什么?為什么不用AVL樹?
- 數(shù)據(jù)庫鎖,樂觀,悲觀,record lock?next-key lock?
- hashmap 1.8優(yōu)化
- gc的時候 young gc只有兩個區(qū)可以完成嗎?有什么問題?
- 二面
- 面試形式:微信視頻
- 項目介紹
- 最有難度的點
- 高負(fù)載,高流量的業(yè)務(wù)處理
- 如何數(shù)據(jù)一致性?
- 如何減少人工干預(yù)?
六、頭條
- 一面
- 面試形式:??途W(wǎng)
- 特別說明:頭條是唯一一家需要你的代碼在牛客網(wǎng)那個IDE下AC的公司,直接面試官可能會給你測試樣例讓你測試,一般給20分鐘
- 算法:找零錢
- Redis為什么這么快?多路復(fù)用io模型?跟多線程對比?select epoll模型?
epoll怎么實現(xiàn)的?都用了哪些存儲結(jié)構(gòu)?什么時候就緒事件?回掉函數(shù)在哪里注冊?epoll是怎么使用的步驟?epoll wait干了什么?給redis服務(wù)端發(fā)送get數(shù)據(jù)請求,是如何處理的? - zset數(shù)據(jù)結(jié)構(gòu)是什么樣的?為什么采用跳表?insert一個數(shù)據(jù)是怎么樣的流程?get一個數(shù)據(jù)是怎么樣的流程?多級索引是怎么更新的?如何確定一個數(shù)據(jù)在第幾層?各自的時間復(fù)雜度是多少?你覺得還有什么優(yōu)化的地方?
- Redis的高性能是怎么實現(xiàn)的?多主多從?一主多從?各自插入一個key的時候是什么樣的流程?主從復(fù)制是什么樣的?怎么強一致性?什么情況下不適合?主掛了,各自的選舉是什么樣的?怎么完成主備切換的?如果主掛了,從沒復(fù)制完全,會出現(xiàn)什么問題?什么樣的情況下可以使用這樣的組群方式?什么樣的情況下不適合?
- raft協(xié)議 paxos算法
- http狀態(tài)碼 300 400 500 499
- dos ddos drdos 如何避免?怎么預(yù)防?怎么發(fā)現(xiàn)?利用了TCP什么特點?怎么改進(jìn)TCP可以預(yù)防?服務(wù)端處理不了的請求怎么辦?連接數(shù)最大值需要設(shè)置嗎?怎么設(shè)置?
- Thrift RPC過程是什么樣子的?異構(gòu)系統(tǒng)怎么完成通信?跟http相比什么優(yōu)缺點?了解grpc嗎?
- https http1.1 2.0 3.0
- hashmap如果的確需要很大容量的數(shù)據(jù)去操作的時候,怎么辦?怎么優(yōu)化?
- 二面
- 面試形式:??途W(wǎng)
- linux fork子進(jìn)程 如果在線程中fork會怎么樣?如果總共就4g內(nèi)存,一個進(jìn)程有10個線程,在線程中fork,能不能fork出來?
- TCP連接server端跟client端都有幾種狀態(tài)
- linux作為client端可以最多建立多少個tcp連接?作為server端呢?
- 建立tcp連接時,如何connect時候阻塞了,那么怎么能不阻塞,去干別的事情?
- linux怎么監(jiān)控cpu運行情況?端口連接情況?tcp連接情況?占用了多少內(nèi)存?
- epoll 多個請求怎么處理?fd什么時候可讀,什么時候可寫?epoll模型有沒有用到什么隊列去等待的,來一個請求處理一個嗎?能寫處理流程的一些偽代碼嗎?
- Redis是怎么處理請求的?單機的qps是多少?如果一直用get,你覺得達(dá)到qps的頂點,它的限制點在哪里?怎么能夠突破峰值qps?怎么用單線程處理的請求?如何解決單機qps達(dá)到峰值的問題?
- redis分布式鎖,怎么樣實現(xiàn)?怎么理解?不用redis可以嗎?有什么問題?生產(chǎn)上出現(xiàn)過問題嗎?為什么會出現(xiàn)?怎么優(yōu)化?考慮過zk嗎?單機redis分布式鎖?集群狀態(tài)下分布式鎖?主從下分布式鎖?都是什么情況?redlock怎么理解?
- 系統(tǒng)怎么算高可用?多部署機器能實現(xiàn)什么?有什么弊端?有什么優(yōu)勢?怎么實現(xiàn)高可用?多部署機器能實現(xiàn)高可用嗎?熔斷機制是什么?怎么實現(xiàn)?
- 三面
- 面試形式:??途W(wǎng)
- 算法:兩個有序數(shù)組間相加和的Topk問題
- 分庫分表 數(shù)量級 系統(tǒng)qps 聚合怎么做?
- 擴容怎么做?
- redis 淘汰策略?超過最大內(nèi)存限制發(fā)生什么?redis什么時候會慢?redis持久化機制
- nosql es能解決什么問題?hbase呢?
- 強一致性?弱一致性?適用什么場合?手機跟web端怎么實現(xiàn)強一致性?怎么設(shè)計緩存?
七、貨拉拉
- 一面
- 面試形式:zoom
- hashmap
- sync跟reentrantlock
- redis 基本數(shù)據(jù)類型,底層如何實現(xiàn)?跳表?為什么單線程會快?有哪些設(shè)計?單線程如何處理多個請求?哪些可能會導(dǎo)致redis慢?redis如何實現(xiàn)高可用?哪些命令可能會慢?
- 線上oom情況?怎么排查?
- mysql mvcc 雙寫機制?binlog跟redo log先后順序?一個寫不成功怎么處理?當(dāng)前讀和快照讀?事務(wù)隔離級別?線上sql優(yōu)化經(jīng)驗?
- 分布式事務(wù)?用過哪些方式?還知道哪些方式?怎么實現(xiàn)?有沒有想過自己實現(xiàn)?避免哪些坑?
- 跨庫聚合怎么實現(xiàn)?分頁?第幾頁?下一頁?
八、阿里
- 一面
- 面試形式:電話
- 特別說明:阿里面試官在面試之前會介紹他們的團(tuán)隊,這次面試的大綱,感覺狠專業(yè)
- JVM如何和操作系統(tǒng)交互
- 垃圾回收 回收什么?怎么回收?垃圾回收算法?垃圾回收器?
- sync和reentrcntlock
- 分庫分表 聚合查詢 limit怎么實現(xiàn) top的實現(xiàn)
- 不停機擴容?分表避免冷熱?不停機擴庫?不停機擴表?跨庫事務(wù)?
- 線程池 參數(shù) 為什么不用fixed?
- redis 淘汰策略 主從 集群 高可用如何實現(xiàn)?
- 分布式鎖
9.zk實現(xiàn)分布式鎖? - 算法題:寫好發(fā)他郵箱 幾個線程輪番打印不同花色的撲克牌從小到大
- 二面
- 面試形式:電話
- 分庫分表為什么這么設(shè)計?數(shù)據(jù)增長怎么做?怎么擴容?數(shù)據(jù)不均勻怎么辦?冷熱數(shù)據(jù)怎么分離?聚合怎么做?跨庫聚合怎么做,查詢怎么做?跨庫分頁怎么做?
2.mysql 線上的組群模式?一主多從?為什么這樣?強一致性如何保證?為了解決讀寫分離嗎?是為了一主多備嗎?主庫crash掉怎么辦?從庫呢? - 分布式事務(wù)怎么做?什么原理?怎么實現(xiàn)的?出現(xiàn)過事務(wù)不一致性嗎?為什么?怎么解決的?
- 訪問請求暴增怎么做?怎么緩解壓力?
- redis分布式鎖怎么實現(xiàn)的?可靠嗎?有什么問題?redlock能解決嗎?為什么?怎么優(yōu)化?
為什么用redis做? - cpu飆升怎么處理?load飆升怎么處理?什么情況可能會遇到上述情況?
- full gc怎么形成?什么情況會產(chǎn)生這么情況?線上出現(xiàn)怎么排查?
九、百度
一面已過,后來沒約二面詢問hr,hr告訴說不招了,尷尬,面試問題讓我給忘了。。。
十、快手
- 面試形式:??途W(wǎng)
- 熱榜top100怎么做?
- 最近瀏覽web端手機端怎么設(shè)計?
- 最喜歡的榜單 怎么設(shè)計緩存?
- 直播間刷一個禮物,怎么讓所有人都看到?
- 設(shè)計一個最近看過的作品,數(shù)據(jù)庫跟緩存怎么配合?什么時候更新數(shù)據(jù)庫,什么時候更新緩存?
- 算法題:兩個大數(shù)相加
寫在最后
- 面經(jīng)不分時間先后,有可能幾面幾面的沒寫全,沒寫完,因為有的面試面經(jīng)當(dāng)時忘記記錄,所以就忘記了。
- 基本后跟樓主設(shè)想差不多,反正前面的都不太好,后面的有了經(jīng)驗可能會好一些
- 另外友情小提示,看準(zhǔn)崗位就果斷投,很有可能崗位很熱,你總想準(zhǔn)備的非常好的時候再去面,可能崗位都沒了。還有就是大部分的公司都需要算法題的考驗,大多來自力扣簡單跟中等難度,困難我個人覺得隨緣吧。除了最好能ac外,我覺得有些算法思想你要掌握,你如dp怎么玩?回溯怎么玩?遞歸怎么玩?stack能解決啥問題?fifo能解決啥問題?dfs怎么玩?bfs怎么玩?實在ac不了,談?wù)勀銓λ惴}的思考過程,選用什么數(shù)據(jù)結(jié)構(gòu)去解決問題?時間復(fù)雜度是多少?但個人感覺如果你沒刷過這個題目,現(xiàn)場讓你20分鐘去做,還是很困難的,畢竟考慮到你的緊張,ide的問題,還要思考,敲代碼,還要注意時間復(fù)雜度什么的。如果一開始就讓你做算法題更是。。給你后面的面試問題都帶來很大壓力。
- 上面寫到的算法題如果寫在后面 ,那就是最后在做算法題,如果寫在前面,就是一開始就要做
寄語
最后祝大家都能拿到心儀的offer,前程似錦