前言
首先在這里介紹一下這位大佬柠偶,他是之前就在看我博客的一個算是粉絲吧情妖,自己是湖大畢業(yè)的,自己在學(xué)校里面就經(jīng)常趁著假期去找各種實習(xí)的事诱担,非常好學(xué)的一個人毡证,平時有什么不懂的就來問我,我也很樂意解答蔫仙,他是去年畢業(yè)的料睛,前一段時間找我吃了個飯,告訴我自己進字節(jié)了摇邦,說實話我還是有點驚訝的恤煞,畢業(yè)一年進BATJ,這不是大佬是什么施籍,下面附上大佬的面試感悟以及復(fù)習(xí)資料居扒!
我這里還準(zhǔn)備了一線大廠面試資料和我原創(chuàng)的超硬核PDF技術(shù)文檔,以及我為大家精心準(zhǔn)備的多套大廠面試題(不斷更新中)丑慎,希望大家都能找到心儀的工作喜喂!有需要的朋友點擊這里備注簡書瓤摧,自行下載即可,希望大家面試順利玉吁,拿下自己心儀的offer照弥!
一面 11.10 :44 min
說下項目。
線程與協(xié)程进副。(協(xié)程不會)
DNS查詢这揣。
DNS投毒。(不會)
堆和棧的區(qū)別影斑。
堆什么時候做內(nèi)存回收给赞。(錯了一半)
項目有無用過多線程。(無鸥昏,只看過書上的demo)
多線程的參數(shù)塞俱。
用過哪些設(shè)計模式姐帚,我說單例吏垮、工廠、觀察者罐旗、代理模式膳汪。(他想讓我說策略模式、裝飾模式和適配器模式九秀,但這三個我都不知道)
說一下代理模式和使用場景遗嗽。
Redis字典結(jié)構(gòu)、擴容鼓蜒。
HashMap解決Hash沖突的方法痹换。
MySQL的二叉樹、B樹都弹、B+樹娇豫、Hash索引比較,二叉樹的缺點畅厢。
. MySQL的可重復(fù)讀是怎么實現(xiàn)的冯痢,MVCC怎么實現(xiàn)的。
MySQL如何判斷死鎖框杜,回滾的時間是空閑的浦楣,能做什么優(yōu)化。(優(yōu)化不知道)
進程間通信方式咪辱,舉例說明一個振劳。(舉例說明不會)
一個跟內(nèi)存泄漏比較相近的詞,問我有沒有聽說過油狂,具體忘了历恐,答沒有庐杨。
代碼:二選一,做的第一個夹供,沒bugfree灵份,改動了一次,挺遺憾的哮洽。
- 字符串最長子串
輸入: "abcabcbb" 輸出: 3 解釋: 因為無重復(fù)字符的最長子串是 "abc"填渠,所以其長度為 3。
輸入: "bbbbb" 輸出: 1 解釋: 因為無重復(fù)字符的最長子串是 "b"鸟辅,所以其長度為 1氛什。
- 給定一組正整數(shù),重新排列它們的順序然后組成一個最大的整數(shù)
輸入: [11,5] 輸出: 511
輸入: [3,30,34,5,8] 輸出: 8534330
- 反問:
問部門語言
是不是ToB
跟商業(yè)變現(xiàn)的區(qū)別
我看有些面經(jīng)都直接問自己過沒過匪凉,面試官會直接說枪眉,我也問了自己過沒過,他說等hr通知再层,我心里咯噔一下贸铜,但覺得不至于不過,也不怎么慌聂受。
五點四十五左右面完蒿秦,六點半hr回復(fù)我了,六點四十的時候二面hr就給我打電話預(yù)約下次面試了蛋济,約到了第二天兩點棍鳖,不得不說,字節(jié)效率拉滿碗旅。
二面 11.11 54min
問了什么時候能實習(xí)渡处,實習(xí)多久
項目里的登錄狀態(tài)怎么做的(一開始說的SpringSecurity的過濾鏈,看他表情好像說的不對祟辟,他給了點提示医瘫,我問是說cookie嗎,他說對川尖,然后開始說cookie)
-* cookie與session區(qū)別
進程間通信方式登下,每個詳細(xì)說明(一面問過了,可能一面答得不好叮喳,被標(biāo)記成答不出來了被芳,所以又問了一邊,還好一面結(jié)束后好好背了一下)
url輸入后的過程馍悟,https版本畔濒,順便說了數(shù)字簽名、證書锣咒,session-key的建立
TCP三次握手侵状、四次揮手
TIME_WAIT作用
HashMap原理和擴容(腦子一緊張赞弥,擴容給忘了,想了能有10秒鐘)
HashMap是否是線程安全的趣兄,從你剛才說的頭插法插入鏈表說一下為什么不安全绽左,是一個什么樣的過程
如果想要實現(xiàn)HashMap線程安全,要怎么做(我問可以直接說ConcurrentHashMap的原理嗎艇潭,他說最好是根據(jù)HashMap的問題拼窥,一步步推導(dǎo)出來,然后我就對比了HashTable蹋凝、HashMap說了一下鲁纠,最后說到為了保持可見性和速度,value用volatile修飾鳍寂,引出了下面的問題)
volatile性質(zhì)(說錯了改含,挺離譜了,我先說了可見性和原子性迄汛,又說了++不是原子性捍壤,自己打自己臉,面試官說那到底是不是原子性隔心,我說部分原子性白群,他說不是原子性)
什么是原子性
緩存行原理(說錯了,我說緩存行在內(nèi)存里硬霍,他說不對,然后說CPU什么的笼裳,我說不了解)
CPU調(diào)度(不會)
volatile為什么使用緩存行
volatile對于64位緩存行的優(yōu)化
網(wǎng)卡的工作原理(數(shù)據(jù)到網(wǎng)卡唯卖,從網(wǎng)卡讀取出來的方法等,不會躬柬,只知道到了網(wǎng)卡怎么出去)
使用TCP的時候網(wǎng)絡(luò)擁塞的處理(我答的流控制拜轨、滑動窗口那一套,看面試官表情應(yīng)該是沒錯)
滑動窗口大小如何確定
TCP擁塞控制
TCP連接的時候的攻擊了解嗎(我說了一直發(fā)送SYN讓服務(wù)器多個連接處于SYN_RCVD狀態(tài)來消耗服務(wù)器內(nèi)存允青,他問我確定是內(nèi)存嗎橄碾,我說是吧,不太清楚)
代碼:基礎(chǔ)題型颠锉,Bugfree法牲。
給定一個僅包含數(shù)字0?9 的二叉樹,每一條從根節(jié)點到葉子節(jié)點的路徑都可以用一個數(shù)字表示琼掠。
例如根節(jié)點到葉子節(jié)點的一條路徑是1→2→3,那么這條路徑就用123 來代替拒垃。
找出根節(jié)點到葉子節(jié)點的所有路徑表示的數(shù)字之和
反問:
問了結(jié)果,面試官一開始不想說瓷蛙,最后反問快結(jié)束的時候給說了悼瓮,說給過了戈毒,基本符合他的預(yù)期。
問了三面?zhèn)戎攸c在哪横堡,是項目還是基礎(chǔ)氛悬,面試官笑了,說不知道中贝,說他自己看重基礎(chǔ)亏镰,說他自己不了解三面。
問了新人怎么培養(yǎng)套么,面試官說有官方培訓(xùn)還有組內(nèi)交流培己。
問了實習(xí)生多久參與線上項目,面試官說一個周胚泌,基本把實習(xí)生當(dāng)正常員工用省咨,面試官還問了有沒有轉(zhuǎn)正需求,我說有玷室。
三面 11.12 25 min
問我投沒投別的公司零蓉,我說就字節(jié)和滴滴,然后問我為啥沒投其他廠穷缤,我說美團敌蜂、阿里現(xiàn)在不招,騰訊感覺語言方向不太合適津肛,不太想去章喉。
讓我對自己的基礎(chǔ)狀況做個評價,我說我對計算機網(wǎng)絡(luò)身坐、MySQL秸脱、Redis比較熟悉,操作系統(tǒng)相對薄弱一些部蛇。
問我考研專業(yè)課考了什么摊唇,我說只考了c語言和數(shù)據(jù)結(jié)構(gòu),還有部分算法涯鲁,當(dāng)時他聽到后還挺吃驚的巷查,又確認(rèn)了一遍,覺得學(xué)的太少了抹腿,到這我就感覺不太妙了岛请。
手撕生產(chǎn)者、消費者模型幢踏,10個生產(chǎn)者髓需,10個消費者,隊列容量為30個房蝉,沒寫出來僚匆,這個怪我微渠,之前看了一遍還手寫了一遍,但是當(dāng)時都給忘了咧擂,能有10分鐘逞盆,沒寫出來。然后他說“你不是看過嗎”松申,我說有點忘記了云芦。
講講同步IO、異步IO贸桶、(還有個IO我不記得名字了)舅逸,從用戶態(tài)與內(nèi)核態(tài)的角度講一下。(不會皇筛,都說了操作系統(tǒng)薄弱琉历,還問我這種問題)
項目為什么用SpringBoot。
知道事務(wù)的傳播嗎水醋。(沒了解過)
對于Spring你了解什么旗笔。我說了IOC和AOP,然后他問使用AOP的好處是什么拄踪。
設(shè)計模式了解嗎蝇恶,說一下策略模式。這個我準(zhǔn)備了惶桐,看的大話設(shè)計模式撮弧,舉了滿減、優(yōu)惠例子耀盗,還說了抽象類想虎、實現(xiàn)類、工廠類叛拷、客戶端做什么,然后他說我說的不對岂却,不是策略模式忿薇,我就問那我說的是什么模式,他說有點像模板方法模式躏哩,然后問策略模式的好處署浩。
說說自己有什么優(yōu)勢,好像是這么個問題扫尺,就是問學(xué)習(xí)狀態(tài)之類的筋栋,我說專注、效率高之類的正驻。
問我能不能接受半年且沒有轉(zhuǎn)正機會的實習(xí)弊攘。聽到這我挺火大抢腐,雖然三面面的有點稀碎,但我就這么差嗎襟交,半年就半年迈倍,連轉(zhuǎn)正資格都沒有,我又不是非吃你這口飯不可捣域,然后我就說不太想考慮啼染。
反問:這塊我就知道自己涼了,那既然都到三面了焕梅,也不能白來迹鹅,你們部門干嘛我也不感興趣了,又進不去贞言,就問了下面試官對于面試者的考核問題斜棚,還問了下問什么三次面試都幾乎沒有提及Redis,是不是部門里用的少蜗字,他說不能說打肝,然后說就到這吧,我說好挪捕,就結(jié)束了粗梭。
結(jié)果:11.16接到電話了,說三面表現(xiàn)不好级零,面試官給的結(jié)果是待定断医,換個部門加面,然后約到了11.19號奏纪。
四面 40 min
面試官說咱們先做個題試試鉴嗤,我說可以,我一說他啪的就把題目打在了公屏上序调,很快啊醉锅,然后上來就是一個"二維數(shù)組查找",一個"2*N鋪瓷磚"发绢,一個"TopK"硬耍,我全防出去了啊,防出去以后边酒,自然是傳統(tǒng)面試经柴,點到為止,我已經(jīng)準(zhǔn)備背八股文了墩朦,他突然襲擊坯认,一記"還有別的方法嗎?",打過來了牛哺,我大意了啊陋气,沒有背,當(dāng)時流眼淚了荆隘,我說停停恩伺,我不知道。
代碼:
- 在一個二維數(shù)組中椰拒,每一行都按照從左到右遞增的順序排序晶渠,每一列都按照從上到下遞增的順序排序。請完成一個函數(shù)燃观,輸入這樣的一個二維數(shù)組和一個整數(shù)褒脯,判斷數(shù)組中是否含有該整數(shù)。
- 我們可以用2 * 1的小矩形橫著或者豎著去覆蓋更大的矩形缆毁。請問用n個2 * 1的小矩形無重疊地覆蓋一個2 * n的大矩形番川,總共有多少種方法?寫出您的代碼 脊框。
- 在100億個無符號整數(shù)中取最大100個 topK Memory has limited. What’s time complexity of this solution?(題的原文就這樣颁督,一半中文一半英文,說思路就行浇雹,先問了有內(nèi)存限制的情況沉御,我說堆排序,他說什么堆昭灵,我說最小堆吠裆,他說時間復(fù)雜度呢,我說N * log K烂完,他說要是沒內(nèi)存限制呢试疙,我說快速選擇, 他說時間復(fù)雜度呢抠蚣,我說K祝旷,他說最壞的情況會到N方,還有別的方法嗎嘶窄,我想了一會缓屠,說如果均勻分布可以用桶排序,其他的不知道了护侮,他沒說話,就結(jié)束了储耐。)
基礎(chǔ)知識問題:
- HTTPS加密過程羊初。
- MySQL為什么用B+數(shù),不用二叉查找樹、紅黑樹长赞。
- 知道pagefault嗎晦攒。(沒聽說過這個名詞,我說知道一些頁的內(nèi)容得哆,您可以說說這是什么我可能知道一些相關(guān)的脯颜,他說知道頁中斷嗎,這個詞我也沒聽說過贩据,我就問是"缺頁"嗎栋操,他也沒說話,我就說不知道了饱亮,但是我面完一查矾芙,確實是跟缺頁相關(guān)的,他要是說是我又能背五分鐘近上。剔宪。。怎么就不說話呢)
反問:
問這次發(fā)的郵件是”廣告研發(fā)“壹无,之前是”廣告系統(tǒng)“葱绒,想問區(qū)別是啥,他說沒區(qū)別斗锭。又問多久參與上線代碼地淀,1-2個周。然后就完了拒迅,也沒說過不過骚秦,然后HR通知說過了。
最后
我們總是喜歡瞻仰大廠的大神們璧微,但實際上大神也不過凡人作箍,與菜鳥程序員相比,也就多花了幾分心思前硫,如果你再不努力胞得,差距也只會越來越大。實際上屹电,作為程序員阶剑,豐富自己的知識儲備,提升自己的知識深度和廣度是很有必要的危号,在我看來牧愁,自己付出多少,回報就有多少外莲。
最后提供免費的Java架構(gòu)學(xué)習(xí)資料猪半,學(xué)習(xí)技術(shù)內(nèi)容包含有:Spring兔朦,Dubbo,MyBatis, RPC, 源碼分析磨确,高并發(fā)沽甥、高性能、分布式,性能優(yōu)化乏奥,微服務(wù) 高級架構(gòu)開發(fā)等等摆舟。有需要的朋友點擊這里備注簡書,自行下載即可邓了,還有Java核心知識點+全套架構(gòu)師學(xué)習(xí)資料和視頻+一線大廠面試寶典+面試簡歷模板+阿里美團網(wǎng)易騰訊小米愛奇藝快手嗶哩嗶哩面試題+Spring源碼合集+Java架構(gòu)實戰(zhàn)電子書一起免費分享給大家恨诱!