前言
兩個(gè)月面了美團(tuán)、滴滴夯到、360嚷缭、新浪網(wǎng)、完美世界黄娘、搜狐六家公司峭状,其中兩個(gè)公司面的都是Java研發(fā),美團(tuán)三面面試官說(shuō)是做外賣(mài)機(jī)器人(類(lèi)似無(wú)人駕駛車(chē))逼争,個(gè)人比較感興趣优床,如果發(fā)offer,就簽約美團(tuán)了誓焦。找工作這幾個(gè)月胆敞,自己也看了很多的面經(jīng),收藏了一系列的面試資料杂伟,為了回饋幫助過(guò)或給我?guī)?lái)信心和失落時(shí)鼓勵(lì)的你們移层,特將美團(tuán)、滴滴赫粥、360观话、新浪網(wǎng)、完美世界越平、搜狐的面試經(jīng)歷記錄一下频蛔。希望取之以桃,報(bào)之以李吧秦叛。另外有需要面試資料的小伙伴們晦溪,也可以在文末領(lǐng)取一下!
美團(tuán)
一面
1.自我介紹和項(xiàng)目挣跋。
2.項(xiàng)目里面的數(shù)據(jù)庫(kù)如何設(shè)計(jì)的三圆?
3.varchar的最大長(zhǎng)度,超過(guò)了用什么避咆?
4.多列索引怎么用舟肉?并解釋底層原理。
5.左連接牌借、右連接度气、內(nèi)連接。
6.說(shuō)出幾種保證線(xiàn)程安全的方法膨报。
7.說(shuō)出幾種保證線(xiàn)程同步的方法。
二面
1.自我介紹和項(xiàng)目。
2.五層網(wǎng)絡(luò)協(xié)議和osi七層網(wǎng)絡(luò)協(xié)議现柠。
3.tcp3次握手和4次揮手院领,并解釋如果3次握手改成兩次行不行?
4.編程題够吩,判斷鏈表是否有環(huán)比然,除了快慢指針還有其它做法嘛?
5.編程題:找到鏈表的中間節(jié)點(diǎn)周循。
6.編程題:給出一個(gè)char數(shù)組 比如a,b,c每個(gè)字符出現(xiàn)的概率給出强法,如10%,20%,70,寫(xiě)一個(gè)算法保證打印10000次字符湾笛,這三個(gè)字符的出現(xiàn)頻率是給出的頻率饮怯,而且每個(gè)字符都是隨機(jī)打印的,不能連續(xù)打印嚎研。
7.Mysql的存儲(chǔ)引擎蓖墅。
8.事務(wù)的隔離級(jí)別,并回答幻讀是出現(xiàn)在一次事務(wù)操作還是兩次临扮?
9.說(shuō)下你了解的設(shè)計(jì)模式论矾,并說(shuō)下單例中的餓漢式和懶漢式的區(qū)別和各自的優(yōu)缺點(diǎn)。
10.場(chǎng)景設(shè)計(jì)杆勇,商品表贪壳,一共100件商品,如何保障多用戶(hù)購(gòu)買(mǎi)商品時(shí)蚜退,商品數(shù)量不會(huì)出現(xiàn)負(fù)數(shù)闰靴,并且保證效率最高。
三面
1.cap了解么关霸?分別指什么传黄?
2.網(wǎng)絡(luò)編程nio和netty相關(guān),netty的線(xiàn)程模型队寇,零拷貝實(shí)現(xiàn)膘掰。
3.Redis是單線(xiàn)程還是多線(xiàn)程?Redis的分布式集群怎么做佳遣?
4.分布式消息隊(duì)列有哪些(Kafka等)识埋?有使用過(guò)哪些?具體應(yīng)用在什么場(chǎng)景零渐?
5.負(fù)載均衡怎么做的呢窒舟,為什么這么做,了解過(guò)集群雪崩么诵盼?
6.談?wù)劯卟l(fā)場(chǎng)景下削峰惠豺,限流的實(shí)現(xiàn)银还?
四面
HR面,聊優(yōu)缺點(diǎn)洁墙,聊人生規(guī)劃蛹疯,聊學(xué)習(xí)技巧,聊各種有的沒(méi)有热监,問(wèn)Offer狀況捺弦。
滴滴
一面
1.自我介紹,講自己的實(shí)習(xí)經(jīng)歷和做的項(xiàng)目孝扛。
2.寫(xiě)道題列吼,判斷一個(gè)字符串是否為回文字符串(送分題)。
3.給出一張表苦始,對(duì)應(yīng)該表寞钥,問(wèn)了兩個(gè)問(wèn)題,寫(xiě)sql語(yǔ)句(一個(gè)學(xué)生表盈简,一個(gè)成績(jī)表凑耻,查詢(xún)某人的總成績(jī),更改某人成績(jī))柠贤。
4.寫(xiě)出你Linux常用的一些命令香浩,然后問(wèn)給一個(gè)文件,統(tǒng)計(jì)包含a,b,c的文件行數(shù)臼勉,如何查詢(xún)擴(kuò)展名為.abc的所有文件邻吭?
5.場(chǎng)景設(shè)計(jì)題,滴滴打車(chē)發(fā)紅包宴霸,許多用戶(hù)搶?zhuān)绾伪WC一個(gè)紅包被一個(gè)用戶(hù)搶到后不被其他用戶(hù)搶?zhuān)?/p>
6.給你一支圓珠筆囱晴,測(cè)試它是否符合生產(chǎn)條件?
7.用沒(méi)用過(guò)redis瓢谢,說(shuō)下redis的好處和數(shù)據(jù)類(lèi)型畸写?
8.設(shè)計(jì)模式了解嘛,說(shuō)下單例模式氓扛,并手寫(xiě)一個(gè)線(xiàn)程安全的單例枯芬。
9.重載和重寫(xiě)的區(qū)別。
10.java的多態(tài)體現(xiàn)在哪里采郎?
二面
1.自我介紹和項(xiàng)目千所,對(duì)應(yīng)項(xiàng)目問(wèn)了n元文法模型,然后手寫(xiě)公式蒜埋。
2.Redis的持久化操作淫痰。
3.如何利用redis處理熱點(diǎn)數(shù)據(jù)?
4.TCP三次握手的過(guò)程整份,如果沒(méi)有第三次握手有什么問(wèn)題待错。
5.分布式鎖怎么實(shí)現(xiàn)籽孙?
6.說(shuō)下常用的排序算法,寫(xiě)下歸并排序朗鸠。
7.手推歸并排序的時(shí)間復(fù)雜度蚯撩。
8.說(shuō)下java的反射機(jī)制础倍,并解釋為什么java有反射而c++沒(méi)有烛占,還有反射的應(yīng)用場(chǎng)景。
9.為什么要雙機(jī)房容災(zāi)備份沟启,什么時(shí)候會(huì)整個(gè)集群都掛掉忆家?
10.Kafka 用嗎,你們用kafka來(lái)干嘛的德迹,kafka怎么保證消息不丟失的芽卿?
11.如果10倍流量來(lái)了,你們r(jià)edis扛得住嗎胳搞?
12.為什么要雙機(jī)房卸例?
13.死鎖遇到過(guò)嗎,講一下肌毅?
14.多線(xiàn)程了解嗎筷转, 說(shuō)一下synchronized跟reentrentLock的區(qū)別?
15.寫(xiě)消費(fèi)者生產(chǎn)者模型悬而。
三面
1.什么時(shí)候多線(xiàn)程會(huì)發(fā)生死鎖呜舒,寫(xiě)一個(gè)例子?
2.說(shuō)一說(shuō)jdk1.8中笨奠,對(duì)hashMap的優(yōu)化袭蝗,對(duì)concurrentHashMap的優(yōu)化?
3.如何解決hash沖突的般婆,以及如果沖突了到腥,怎么在hash表中找到目標(biāo)值?
4.有1000個(gè)數(shù)據(jù)存在hashmap中蔚袍,實(shí)際的數(shù)量是多少乡范,考慮負(fù)載因子和擴(kuò)容?
5.常見(jiàn)的RPC有哪些页响?對(duì)應(yīng)的區(qū)別和性能比較篓足?
6.操作系統(tǒng)的用戶(hù)態(tài)和核心態(tài)切換條件以及為什么要切換?
7.線(xiàn)程間的通信方式闰蚕,異步隊(duì)列栈拖,消息延遲獲取没陡?
8.Tcp知道不涩哟?
9.Http的header有哪些索赏?
10.浮點(diǎn)數(shù)求立方根。
四面
HR談人生理想和講滴滴的業(yè)務(wù)贴彼。
360
一面
差不多三十五分鐘左右吧
1.介紹你做過(guò)的項(xiàng)目潜腻。
2.手寫(xiě)單例模式。
3.布局優(yōu)化器仗。
4.有沒(méi)有用過(guò)什么開(kāi)源框架融涣?
5.ImagLoader的實(shí)現(xiàn)原理。
6.OnTouchEvent事件中 down事件 和up事件的傳遞精钮。
7.hashMap的實(shí)現(xiàn)原理威鹿。
8.LinkedHashMap的實(shí)現(xiàn)原理。
9.內(nèi)存管理及優(yōu)化轨香。
10.點(diǎn)九圖忽你。
二面
一面過(guò)了十多分鐘以后,接著就進(jìn)行二面臂容,都是視頻面試科雳,差不多二十分鐘左右
1.AsyncTak的原理及常用方法。
2.APK從安裝到啟動(dòng)的過(guò)程脓杉。
3.平時(shí)是怎樣學(xué)習(xí)的糟秘?
4.學(xué)習(xí)和實(shí)習(xí)是在怎樣協(xié)調(diào)的?
5.有360手機(jī)助手有什么想了解的嗎丽已?
題外話(huà)
感覺(jué)個(gè)人太緊張了蚌堵,有好多原理性的東西講著講著就忘記講了,面試的時(shí)候真的是太緊張了沛婴,發(fā)揮不太好吼畏,平時(shí)一定要多總結(jié),不然面試的時(shí)候一下子總結(jié)地不太好嘁灯,發(fā)揮不出應(yīng)有的水平泻蚊。
新浪
一面
1.先問(wèn)自我介紹,說(shuō)一下你認(rèn)為的團(tuán)隊(duì)合作丑婿?
2.用過(guò)Linux系統(tǒng)嗎性雄?常用指令(我說(shuō)不太了解,就沒(méi)問(wèn))
3.說(shuō)一下虛擬內(nèi)存羹奉?
4.介紹一下hashmap秒旋?
5.hashmap和hashtable的區(qū)別?
6.算法題:10萬(wàn)行數(shù)據(jù)诀拭,每一行都是一個(gè)int類(lèi)型的數(shù)迁筛,按數(shù)字出現(xiàn)的頻次取出現(xiàn)次數(shù)最高的10個(gè)數(shù)
7.輸入是一個(gè)整形數(shù)組,輸出:數(shù)字+頻次
8.思路:可以自己定義一個(gè)類(lèi)耕挨,里面key為出現(xiàn)的數(shù)字细卧,value為出現(xiàn)的頻次
9.然后新建一個(gè)容量為10的小頂堆尉桩,按照value進(jìn)行排序。
10.我是用hashmap統(tǒng)計(jì)的贪庙,然后再對(duì)value用小頂堆(priorityqueue)排序蜘犁,需要把value和key綁定。如果下一個(gè)的value小于堆頂則丟棄止邮,大于堆頂則插入这橙。
二面
1.自我介紹;
2.介紹項(xiàng)目农尖;
3.KVM和XEN虛擬化的區(qū)別
4.如何用JAVA生成永遠(yuǎn)的ID:UUID(Universally Unique Identifier)
5.樹(shù)的遍歷析恋,并非二叉樹(shù)的遍歷
6.堆排序的問(wèn)題
7.多線(xiàn)程輪流執(zhí)行用什么鎖?盛卡?
8.AOP的底層原理(動(dòng)態(tài)代理,GClib)
9.Object類(lèi)的方法
10.循環(huán)依賴(lài)如何解決筑凫,自己設(shè)計(jì)幾種算法
11.快速排序原理滑沧,隨機(jī)快排口述
12.iptable實(shí)現(xiàn)反向代理
三面
1.首先問(wèn)了我發(fā)表的論文具體的內(nèi)容是什么?
2.虛擬內(nèi)存知道么巍实?什么時(shí)候使用虛擬內(nèi)存滓技?虛擬內(nèi)存除了擴(kuò)大內(nèi)存還有什么用?
3.Spring的上下文切換棚潦,如何優(yōu)化上下文優(yōu)化來(lái)做到減少系統(tǒng)資源消耗令漂?
4.函數(shù)調(diào)用約定了解么?Function calling convention丸边。
5.進(jìn)程線(xiàn)程的區(qū)別叠必,除了包含關(guān)系之外的一些區(qū)別,底層詳細(xì)信息妹窖。
6.TCP/UDP 全部?jī)?nèi)容:三次握手纬朝、四次揮手、為什么不能兩次骄呼,為什么三次共苛,TCP的可靠是怎么實(shí)現(xiàn)的,滑動(dòng)窗口,為什么是2MSL?
7.邊緣網(wǎng)關(guān)協(xié)議了解么蜓萄?簡(jiǎn)單描述一下
8.Docker容器相關(guān)隅茎。
9.高并發(fā)接觸過(guò)么(沒(méi)有,都是用戶(hù)量小嫉沽,業(yè)務(wù)驅(qū)動(dòng)技術(shù)辟犀,并不是產(chǎn)品驅(qū)動(dòng)技術(shù))
10.最后一個(gè)就是sql語(yǔ)句的考察,然后各種變換情況耻蛇,表連接什么的踪蹬,我以為寫(xiě)錯(cuò)了胞此,結(jié)果面試官說(shuō)都對(duì)~
完美世界
一面
1.自我介紹。
2.講一下HashMap跃捣,HashMap和Concurrent HashMap有什么區(qū)別漱牵,HashMap的Key可以為Null嗎?Concurrent HashMap呢疚漆?
3.知道異常嗎酣胀,將你知道的異常寫(xiě)出來(lái)(這個(gè)我把異常的整個(gè)體系畫(huà)出來(lái)了,然后我自覺(jué)的將Error和Exception區(qū)別講了一下)娶聘,說(shuō)說(shuō)常見(jiàn)的Runtime Exception闻镶。
4.了解并發(fā)編程是吧(因?yàn)槲液?jiǎn)歷上寫(xiě)了了解Java并發(fā)編程),講講Synchronized和Lock(這個(gè)我就將用法和注意事項(xiàng)和性能的區(qū)別一一講述)丸升,Synchronized修飾普通方法和修飾靜態(tài)方法有什么區(qū)別铆农,然后面試官給我寫(xiě)了兩個(gè)情景讓我講程序運(yùn)行情況。
5.講講GC機(jī)制狡耻,知道擔(dān)保機(jī)制嗎墩剖?
6.Java中阻塞線(xiàn)程的方法有哪些?(剛開(kāi)始緊張說(shuō)成中斷有哪幾種了夷狰,然后面試官提醒我說(shuō)他沒(méi)問(wèn)這個(gè))
7.平時(shí)數(shù)據(jù)庫(kù)用的是什么岭皂?講講Mysql的存儲(chǔ)引擎。寫(xiě)幾個(gè)SQL語(yǔ)句沼头。
二面
1.會(huì)用線(xiàn)程池嗎爷绘?知道數(shù)據(jù)庫(kù)連接池嗎?如果讓你寫(xiě)一個(gè)你怎么寫(xiě)进倍?(現(xiàn)場(chǎng)寫(xiě)喔土至,但是我當(dāng)時(shí)不知道怎么想的,以為面試官讓我寫(xiě)線(xiàn)程池背捌,我就寫(xiě)了半天線(xiàn)程池毙籽,然后面試官等不及了就看我寫(xiě)的我還一本正經(jīng)的給講線(xiàn)程池,然后就很尷尬的進(jìn)入下一題了哈哈哈哈)
2.知道Https嗎毡庆?寫(xiě)一下詳細(xì)連接過(guò)程坑赡。
HR面
主要是問(wèn)如何做的項(xiàng)目和平時(shí)生活學(xué)習(xí)狀態(tài),講了一下薪酬和培訓(xùn)機(jī)制么抗,感覺(jué)完美的人都蠻好的~
總裁面
總裁很有氣場(chǎng)毅否!進(jìn)去就直接問(wèn)項(xiàng)目里的東西,講了一些項(xiàng)目里用到的技術(shù)蝇刀,問(wèn)平時(shí)怎么學(xué)習(xí)螟加,看什么書(shū),在項(xiàng)目里都干了什么。然后就差不多了捆探,感覺(jué)總裁特別特別忙然爆,問(wèn)我有什么問(wèn)題,我就說(shuō)沒(méi)有了黍图,然后就結(jié)束啦曾雕。
搜狐
一面
1.自我介紹。
2.你用到了LDA助被,那么請(qǐng)講一下LDA的原理是什么剖张?我簡(jiǎn)單說(shuō)了一下LDA生成文檔的過(guò)程,但是根據(jù)什么生成沒(méi)答上來(lái)2333(LDA是我的痛揩环,看了幾遍沒(méi)看懂)
3.也就是說(shuō)你的計(jì)算是現(xiàn)場(chǎng)算的么搔弄?是的,我知道這樣效率有問(wèn)題丰滑,我的系統(tǒng)中沒(méi)有解決顾犹,但是可以先對(duì)新聞進(jìn)行聚類(lèi),然后對(duì)每個(gè)簇提出一個(gè)模型吨枉,先匹配簇在選擇新聞(SCENE 論文中的方法)
4.你的數(shù)據(jù)量有多大蹦渣?3萬(wàn)多條新聞,100個(gè)用戶(hù)吧貌亭。
5.你的用戶(hù)較少,那么在推薦的時(shí)候矩陣一定是稀疏的认臊,對(duì)于這個(gè)稀疏矩陣應(yīng)該如何處理圃庭?可以用PCA或者SVD進(jìn)行矩陣分解
6.你的關(guān)鍵字是如何從文檔中提取出來(lái)的?使用了中科院的NLPIR+TF-IDF算法失晴。
7.講一講tf-idf是什么意思剧腻,TF就是表示詞頻女蜈,IDF是逆文檔頻率的意思計(jì)算方法為log(N/n)沐寺,N新聞集的大小,n為包含這個(gè)詞的新聞的數(shù)量腮恩。
8.你系統(tǒng)使用什么語(yǔ)言實(shí)現(xiàn)的拆又?
9.你的新聞的備選集如何獲热逖?選取當(dāng)天新聞帖族,挨個(gè)算一遍栈源。
二面
1.你的項(xiàng)目部署在哪里?
2.講一下項(xiàng)目
3.把項(xiàng)目中的主要數(shù)據(jù)庫(kù)表怎么設(shè)計(jì)的寫(xiě)一下它的結(jié)構(gòu)
4.用戶(hù)表密碼是怎么存儲(chǔ)的竖般?(回答MD5)你知道還有別的加密方式嗎甚垦?
5.寫(xiě)SQL,根據(jù)設(shè)計(jì)的表進(jìn)行多表查詢(xún)(寫(xiě)了一個(gè)嵌套查詢(xún),又讓寫(xiě)join查詢(xún))
6.索引該怎么建艰亮?針對(duì)你設(shè)計(jì)的表每個(gè)字段闭翩,需不需要建立索引?
7.建索引的原則是什么迄埃?
8.你主要用了SpringBoot的哪些功能疗韵?
三面
1.你做的項(xiàng)目,哪些是對(duì)你來(lái)說(shuō)無(wú)論是技術(shù)成長(zhǎng)還是難度上是比較挑戰(zhàn)调俘,你項(xiàng)目遇到什么挑戰(zhàn)怎么解決的伶棒?
2.你的項(xiàng)目具備什么樣的能力,主要是解決什么樣的問(wèn)題彩库?
3.項(xiàng)目的一些問(wèn)題肤无,做了多久?你每天都會(huì)做嗎骇钦,還是會(huì)做一些學(xué)習(xí)上的事情宛渐?
4.做完之后有請(qǐng)周?chē)娜嘶蛘吲笥褋?lái)感受一下嗎?
5.算法題:
輸入一個(gè)整數(shù)眯搭,判斷是否是自除數(shù)
輸入一個(gè)字符串窥翩,只考慮數(shù)字和字母,忽略字母大小寫(xiě)鳞仙,驗(yàn)證是否為回文串寇蚊?
6.代碼中為什么用StringBuilder,不用StringBuffer棍好?
7.你有看過(guò)Java怎么實(shí)現(xiàn)equals和hashcode嗎仗岸?
8.好了,那么你覺(jué)著你自己都有哪些優(yōu)點(diǎn)呢借笙?
最后
所有的面試題目都不是一成不變的扒怖,上面的面試題只是給大家一個(gè)借鑒作用,最主要的是給自己增加知識(shí)的儲(chǔ)備业稼,有備無(wú)患盗痒。