百度研發(fā)面經(jīng)整合版
軟件研發(fā)工程師
基礎(chǔ)研發(fā)工程師
百度智能云
百度核心搜索部
百度今年的提前批有點(diǎn)奇怪,好像都不走流程扯躺,疟ィ客上好幾個(gè)百度內(nèi)推的帖子,我投了幾個(gè)护昧,基本上都是百度智能云的魂迄,當(dāng)然也有其他部門。
下面是我的面經(jīng)惋耙,包括三個(gè)部門的面試捣炬,每個(gè)部門側(cè)重點(diǎn)不太一樣。
百度智能云
一面
1 項(xiàng)目
2 講一下AOP吧
3 動(dòng)態(tài)代理和靜態(tài)代理有什么區(qū)別
4 TCP和IP報(bào)文是否會(huì)分片绽榛,分別在什么情況下會(huì)分片湿酸。
TCP分包之后是否還會(huì)進(jìn)行ip分片
5 做個(gè)題
無限長軌道。兩輛車同方向開灭美,車會(huì)滴水稿械,怎么讓他們相遇。這題簡直像腦筋急轉(zhuǎn)彎冲粤。
6 寫一個(gè)斐波那契數(shù)列
遞歸式,要求改進(jìn)
dp方式页眯,要求優(yōu)化空間
用三個(gè)變量代替數(shù)組進(jìn)行dp梯捕,要求改進(jìn)
我說數(shù)學(xué)公式,OK窝撵。
7 講一下Linux的內(nèi)存結(jié)構(gòu)傀顾,我說只會(huì)JVM的,他讓我說一下碌奉。
兩者的內(nèi)存如何映射短曾,是什么關(guān)系,不會(huì)赐劣。
8 沒了
二面
1 項(xiàng)目講一下嫉拐,10多分鐘去了。
2 排序算法魁兼,復(fù)雜度婉徘,比較。快排的空間復(fù)雜度是logn
3 講一下OSI七層模型盖呼,我說了5層模型儒鹿,然后他讓我再補(bǔ)充一下,問了每層的作用几晤,問了wifi屬于哪一層约炎。
4 線程間的同步用什么方式,說了object方法蟹瘾。
問我使用hashmap時(shí)重寫哪兩個(gè)方法圾浅,為什么要重寫,巴拉巴拉热芹,什么場景下重寫贱傀。
5 平時(shí)用過什么數(shù)據(jù)結(jié)構(gòu),list用哪些有啥區(qū)別伊脓。
6 Spring中的ioc和aop府寒。ioc的注解有哪些。
autowired和resource有什么區(qū)別报腔,作用域有哪些株搔。
autowired如何配置兩個(gè)類中的一個(gè)嗎
7 寫一個(gè)單例模式,有點(diǎn)忘卻了纯蛾,巴拉巴拉搞出一個(gè)雙重檢測的纤房,中間改了多次。
8 Java會(huì)有內(nèi)存泄漏嗎翻诉,三個(gè)區(qū)分別什么情況下會(huì)產(chǎn)生內(nèi)存泄漏
三面
1 主要了解哪些技術(shù)
2 分布式系統(tǒng)怎么設(shè)計(jì)炮姨,說了CAP和BASE,最終一致性
3 問我最終一致性是什么碰煌,舉一下強(qiáng)一致性和最終一致性的例子舒岸。分布式事務(wù)和消息隊(duì)列
4 分布式事務(wù)的消息id怎么確認(rèn)順序,我說使用zk
5 zk的性能瓶頸怎么克服芦圾,我說使用redis和redis集群蛾派。
6 跨機(jī)房的網(wǎng)絡(luò)延遲怎么解決,我說不懂个少,他讓我猜一俠華北到華南的延遲時(shí)間大概是多久洪乍,我說大概十秒內(nèi)。
7 網(wǎng)絡(luò)這塊熟么夜焦,說一下socket編程吧壳澳。說了一下java的socket
8 網(wǎng)絡(luò)編程的NIO和BIO區(qū)別,阻塞指的是什么意思呢糊探。
9 socket客戶端和服務(wù)端的連接過程和通信過程說一下钾埂。
10 操作系統(tǒng)熟么河闰,一般版,shell和命令熟么褥紫,不熟姜性。
11 算法熟么,答不熟髓考。
12 系統(tǒng)怎么設(shè)計(jì)部念,設(shè)計(jì)模式怎么用
13 系統(tǒng)優(yōu)化怎么做,cpu氨菇,IO儡炼,內(nèi)存分別怎么排查問題和調(diào)優(yōu)
14 家鄉(xiāng),女朋友查蓉,巴拉巴拉
百度核心搜索
一面:
1 自我介紹
2 docker和k8s了解多少
3 研究生學(xué)了哪些課程
4 操作系統(tǒng)了解么乌询,講一下進(jìn)程和線程
5 死鎖和處理方式
6 內(nèi)存,虛擬內(nèi)存和頁面置換
7 網(wǎng)絡(luò)了解么豌研,講一下三次握手和四次揮手
8 數(shù)據(jù)庫了解多少妹田,mysql索引,事務(wù)鹃共,鎖講了一些
9 Redis呢鬼佣,講了一下數(shù)據(jù)結(jié)構(gòu),持久化方式霜浴,使用場景
10 分布式了解哪些晶衷,負(fù)載均衡有哪些方式,說了dns阴孟,nginx晌纫,lvs和硬件,一致性問題怎么解決永丝,說了2pc缸匪,3pc,raft和paxos类溢,zab
10 mysql大表數(shù)據(jù)查詢,怎么優(yōu)化露懒,分表闯冷,分庫。
11單鏈表判環(huán)
使用快慢指針解決
12 完全二叉樹判斷:
二面
1 項(xiàng)目
2 docker和kubenetes的原理和了解程度
3 docker的cgroup了解么
4 kubenetes的架構(gòu)懈词,擴(kuò)容是怎么完成的蛇耀。
5 Java的四種引用
6 Java的線程通信方式
7 Linux的進(jìn)程通信方式
8 Java的線程池
9 算法
1 - N + 1這些數(shù)中取出N個(gè),問剩下的是哪個(gè)坎弯。纺涤。
我說加起來相減译暂,面試官說取巧了,不能這樣撩炊。
我說比較數(shù)組下標(biāo)外永,他還是說取巧。
于是我讓他提示我一下拧咳,他說了排序再找伯顶。。額
然后想了兩個(gè)空間換時(shí)間的辦法骆膝,一個(gè)是用hashmap遍歷兩個(gè)數(shù)組祭衩。一個(gè)是合并數(shù)組后統(tǒng)計(jì)數(shù)字出現(xiàn)次數(shù),也是hashmap
給定一串?dāng)?shù)字阅签,找出所有可能的IP地址組合掐暮,比如192168111,組合是192.168.1.11政钟,192.168.11.1路克。
應(yīng)該LeetCode的題。之前自己沒寫完整锥涕,現(xiàn)場憋出來了衷戈。
這個(gè)代碼應(yīng)該沒錯(cuò)。面試官看了二十分鐘才說ok层坠。
然后我們就這樣沉默了20分鐘殖妇,中間他就說了幾句話。
三面
1項(xiàng)目
2家庭情況
3學(xué)習(xí)生活的挑戰(zhàn)
4學(xué)新技術(shù)的方式
5解釋一下docker
6意向城市和崗位方向
百度智能云
基礎(chǔ)研發(fā)工程師
一面
1 項(xiàng)目
2 隊(duì)列和棧區(qū)別
3 兩個(gè)棧實(shí)現(xiàn)隊(duì)列破花,兩個(gè)棧實(shí)現(xiàn)最小值棧
4 數(shù)據(jù)庫的事務(wù)性質(zhì)谦趣,如何實(shí)現(xiàn)這些性質(zhì)
5 事務(wù)隔離級別有哪些,默認(rèn)是什么級別座每。
6 已提交讀有什么問題,用于什么場景
7 二叉樹了解么前鹅,平衡二叉樹呢,有什么場景會(huì)用到呢峭梳。
8 僵尸進(jìn)程和孤兒進(jìn)程是什么舰绘,分別有什么危害。
9 主從復(fù)制怎么實(shí)現(xiàn)葱椭。
10 Redis你用來做什么捂寿,為什么不用mq做異步隊(duì)列
11 分布式文件系統(tǒng)了解么,HDFS講一下原理
12 Java中一般用什么類型表示價(jià)格孵运。
13 Java如何把byte類型轉(zhuǎn)換成字符串
14 Java的string類型為什么是不可變的
15 有什么問題
阿里巴巴研發(fā)面經(jīng)
阿里中間件研發(fā)面經(jīng)
研發(fā)工程師(Java)
我參與了阿里巴巴中間件部門的提前批面試秦陋,一共經(jīng)歷了四次面試,拿到了口頭offer治笨。這是我的面經(jīng)驳概,在這里分享給大家赤嚼。
一面:
1 自我介紹
2 項(xiàng)目中做了什么,難點(diǎn)呢顺又。
3 Java的線程池說一下更卒,各個(gè)參數(shù)的作用,如何進(jìn)行的待榔。
4 Redis講一下
5 分布式系統(tǒng)的全局id如何實(shí)現(xiàn)逞壁。用zookeeper如何實(shí)現(xiàn)的呢,機(jī)器號+時(shí)間戳即可锐锣。
6 分布式鎖的方案腌闯,redis和zookeeper那個(gè)好,如果是集群部署雕憔,高并發(fā)情況下哪個(gè)性能更好姿骏。
7 kafka了解么,了解哪些消息隊(duì)列斤彼。
8 想做業(yè)務(wù)還是研究分瘦。
9 然后出了一道題,linux的訪問權(quán)限是rwx格式的琉苇。使用一個(gè)類支持訪問權(quán)限的增刪改查嘲玫,并且注意使用的數(shù)據(jù)格式以及方法效率,規(guī)范并扇。給了一個(gè)多小時(shí)寫題去团。
耗時(shí)將近30分鐘。
二面:
1 介紹你做的項(xiàng)目和其中的難點(diǎn)穷蛹。
2 上次面試官問的問題土陪,反射的作用是什么。
3 數(shù)據(jù)倉庫肴熏,多線程和并發(fā)工具等鬼雀。
4 私有云,docker和k8s等蛙吏。
5 了解哪些中間件源哩,dubbo,rocketmq鸦做,mycat等璧疗。
6 dubbo中的rpc如何實(shí)現(xiàn)。
7 自己實(shí)現(xiàn)rpc應(yīng)該怎么做
9 dubbo的服務(wù)注冊與發(fā)現(xiàn)馁龟。
10 聽說我是非科班,于是問了些排序算法
耗時(shí)將近30分鐘漆魔。
三面:
三面不是面試坷檩,而是筆試却音,耗時(shí)三個(gè)小時(shí),考的是Java核心的基礎(chǔ)矢炼。但是好像不能透題系瓢,就不說了。都挺有難度的句灌。
大概說一下就是有幾個(gè)考點(diǎn)夷陋,Java并發(fā)的知識點(diǎn),集合類胰锌,線程池骗绕,多線程之間的通信等。
HR面:
聊人生談理想资昧,HR小姐姐非常溫柔酬土,交流十分愉快。30分鐘格带。
騰訊研發(fā)面經(jīng)
騰訊SNG
后臺開發(fā)工程師
大概是8月初投的簡歷撤缴,當(dāng)時(shí)沒有選事業(yè)群,第二天直接被sng撈了叽唱,抓著我一頓面試屈呕。
一周內(nèi)就面完了三次面試,接著就開始無盡的等待棺亭,整整等了三周左右虎眨,終于完成了四面和HR面。
整個(gè)過程還是比較曲折的侦铜,技術(shù)面試的難度也挺大的专甩,不過他們部門也是Java線,所以還比較有的聊钉稍。結(jié)果目前還不知道涤躲。
一面:
1 有序數(shù)組排序,二分贡未,復(fù)雜度
2 常見排序算法种樱,說下快排過程,時(shí)間復(fù)雜度
3 有N個(gè)節(jié)點(diǎn)的滿二叉樹的高度俊卤。1+logN
4 朋友之間的點(diǎn)對點(diǎn)關(guān)系用圖維護(hù)嫩挤,怎么判斷兩人是否是朋友,并查集消恍,時(shí)間復(fù)雜度岂昭,過程。沒講清楚
1. 初始化元素
2. 實(shí)現(xiàn)元素與元素間的聯(lián)合操作
3. 實(shí)現(xiàn)查找元素所在樹的根節(jié)點(diǎn)
4. 解決一個(gè)問題狠怨,判定兩個(gè)元素是否在同一棵樹上(兩個(gè)元素是否相互連接)
5 單元點(diǎn)最短路的方法约啊,時(shí)間復(fù)雜度
6 如何實(shí)現(xiàn)關(guān)鍵字輸入提示邑遏,使用字典樹,復(fù)雜度多少恰矩,有沒有其他方案记盒,答哈希,如果是中文呢外傅,分詞后建立字典樹纪吮?
7 hashmap的實(shí)現(xiàn)講一下吧,講的很詳細(xì)了萎胰。講一下紅黑樹的結(jié)構(gòu)碾盟,查詢性能等。
8 Java中的垃圾回收講一下奥洼,講了分代巷疼,gc算法,gc root可達(dá)性分析等
9 講一下兩個(gè)項(xiàng)目你都做了什么把灵奖。
10 除了代碼之外你還學(xué)習(xí)了什么技術(shù)嚼沿,框架。
11 死鎖是怎么產(chǎn)生的
12 線程和進(jìn)程的區(qū)別
13 進(jìn)程的通信方式
14 CPU的執(zhí)行方式
15 代碼中遇到進(jìn)程阻塞瓷患,進(jìn)程僵死骡尽,內(nèi)存泄漏等情況怎么排查。通過ps查詢狀態(tài)擅编,分析dump文件等方式排查攀细。
16 Linux了解么,查看進(jìn)程狀態(tài)ps爱态,查看cpu狀態(tài) top谭贪。查看占用端口的進(jìn)程號netstat grep
17 10g文件,只有2g內(nèi)存锦担,怎么查找文件中指定的字符串出現(xiàn)位置俭识。MapReduce分割文件處理。
他說可以用cat | grep 管道處理洞渔。
二面:
1 快排的時(shí)間復(fù)雜度套媚,冒泡時(shí)間復(fù)雜度,快排是否穩(wěn)定磁椒,快排的過程
2 100w個(gè)數(shù)堤瘤,怎么找到前1000個(gè)最大的,堆排序浆熔,怎么構(gòu)造本辐,怎么調(diào)整,時(shí)間復(fù)雜度。
3 一個(gè)矩陣慎皱,從左上角到右下角环葵,每個(gè)位置有一個(gè)權(quán)值”γ幔可以上下左右走,到達(dá)右下角的路徑權(quán)值最小怎么走邓萨。
先說了一下dfs遞歸實(shí)現(xiàn)地梨。面試官說要優(yōu)化。
說了一下用迪杰斯特拉的思路缔恳,說可以宝剖。
4 四輛小車,每輛車加滿油可以走一公里歉甚,問怎么能讓一輛小車走最遠(yuǎn)万细。說了好幾種方案,面試官引導(dǎo)我優(yōu)化了一下纸泄,但是還是不滿意赖钞,最后他說跳過。
5 hashmap的實(shí)現(xiàn)聘裁,hashtable雪营,concurrenthashmap實(shí)現(xiàn)。
6 MySQL的索引衡便,B+樹性質(zhì)献起。
7 Linux的cpu 100怎么排查,top jstack镣陕,日志谴餐,gui工具
8 Linux大文件怎么查某一行的內(nèi)容。
9 Redis內(nèi)存數(shù)據(jù)庫的內(nèi)存指的是共享內(nèi)存么
10 Redis的持久化方式
11 秒殺系統(tǒng)的架構(gòu)設(shè)計(jì)
三面:
1 十億個(gè)數(shù)的集合和10w個(gè)數(shù)的集合呆抑,如何求它們的交集岂嗓。
集合的數(shù)字不重復(fù)。
我講了兩次循環(huán)理肺,兩次hash摄闸,以及排序或者合并等方式。妹萨。都不對年枕。后來面試官說是對小數(shù)組做hash,然后遍歷大數(shù)組即可乎完。我完全想錯(cuò)方向了熏兄。
2 十億和數(shù)找到前100個(gè)最大的,堆排序,怎么實(shí)現(xiàn)摩桶,怎么調(diào)整桥状。
3 TCP和UDP的區(qū)別,具體使用場景呢硝清。
4 TCP四次揮手講一下過程辅斟,最后一次ack如果客戶端沒收到怎么辦。
5 對于socket編程芦拿,accept方法是干什么的士飒,在三次握手中屬于第幾次,可以猜一下蔗崎,為什么這么覺得酵幕。
6 Linux操作系統(tǒng)了解么,了解一點(diǎn)點(diǎn)缓苛,就沒問了拘领。
7 對于單例模式桑谍,有什么使用場景了,講了全局id生成器,他問我分布式id生成器怎么實(shí)現(xiàn)慢显,說了zk塞耕,問我zk了解原理不熔萧,講了zab车猬,然后就沒問啦。
8 除了單例模式淆党,知道適配器模式怎么實(shí)現(xiàn)么酷师,有什么用
9 回到網(wǎng)絡(luò),剛才你說到直播場景染乌,知道直播的架構(gòu)怎么設(shè)計(jì)么山孔,要點(diǎn)是什么,說了幾個(gè)不太對荷憋,他說要避免廣播風(fēng)暴台颠,答不會(huì)。
10 Redis和MySQL有什么區(qū)別勒庄,用于什么場景串前。
11 問了一下最近看什么書,什么時(shí)候開始寫博客的
12 問了還有幾輪面試实蔽,他說這輪我可以過荡碾,有點(diǎn)小驚喜
四面:
三面過了半個(gè)多月,終于安排四面了局装。
1 自我介紹
2 項(xiàng)目坛吁,收獲
3 Linux了解哪些劳殖,基礎(chǔ)命令和知識。問我proc文件系統(tǒng)了解么拨脉,答不了解哆姻。
4 TCP和UDP的核心區(qū)別在哪,講了滑動(dòng)窗口保證可靠有序傳輸玫膀,UDP不可靠矛缨。TCP需要連接而UDP不需要。
5 TCP的四次揮手帖旨,time wait狀態(tài)有什么意義劳景。
6 說完這個(gè)他問我有什么想問他的了。
7 我問他為什么隔了這么久才面試碉就,而且之前三面都只是初試,然后他說最近他在休假闷串,所以就瓮钥。。烹吵。害我擔(dān)心了好久碉熄。他說接下來等HR面就行了。
HR面:
1 自我介紹
2 實(shí)習(xí)收獲
3 臺灣交流體驗(yàn)
4 之前實(shí)習(xí)公司的情況肋拔,拿到offer了嗎锈津,會(huì)如何選擇呢
5 排一下公司,部門凉蜂,薪資和城市等因素琼梆。
6 你的優(yōu)缺點(diǎn),如何改進(jìn)
7 學(xué)生時(shí)代最成功的事
8 你的預(yù)期薪資
螞蟻金服研發(fā)面經(jīng)
螞蟻金服中間件
螞蟻財(cái)富
研發(fā)工程師
之前面了阿里中間件的提前批窿吩,不過沒走流程茎杂。同期還面了螞蟻中間件的兩輪面試,被告知不走流程就不能面了纫雁,所以也沒面完煌往。
后來走了螞蟻金服財(cái)富事業(yè)群這邊的流程。前幾天剛剛面完HR轧邪。
正好今天分享一下面經(jīng)刽脖,大家可以多交流交流哈。
1:螞蟻中間件(****面了三次忌愚,兩次一面曲管,一次二面****)
****2:螞蟻財(cái)富(1+2+交叉+HR)****
1一面
螞蟻金服中間件一號機(jī)
一面:
自我介紹
1Java中的多線程了解么,線程池的增長策略和拒絕策略了解么菜循,說一下翘地。
2講一下線程增加的過程和拒絕策略的執(zhí)行申尤。
3講了一下fixthreadpool的增長策略,然后幾種拒絕策略衙耕。
4高并發(fā)情況下昧穿,如何使用線程池,用哪個(gè)橙喘,問了一下線程結(jié)束要多久时鸵,是否在下一個(gè)線程結(jié)束前完成(我想的是cachethreadpool,其實(shí)思路錯(cuò)了)厅瞎。
5表示并發(fā)量比較大饰潜,所以我說可以考慮并發(fā)量是否大于隊(duì)列長度加上最大線程數(shù)量和,如果不超過的話可以是用fixthreadpool和簸。
6并發(fā)juc了解么彭雾,有哪些線程安全的list。說了個(gè)copyonwritelist锁保,想了半天說不出第二個(gè)了薯酝。尷尬,那就vector把爽柒,不是juc里的吴菠。
貌似并發(fā)包里確實(shí)沒有其他list啊。
還問了concurrenthashmap1.8的改動(dòng)浩村。
7HTTP協(xié)議了解么做葵,和tcp有什么區(qū)別。
8http1.0和2.0的區(qū)別心墅。
答了TCP連接復(fù)用酿矢,加入ssl,以及壓縮請求頭怎燥。
其中哪個(gè)更新比較有意義棠涮,為什么。我說的是壓縮請求頭刺覆,這樣可以優(yōu)化HTTP服務(wù)的性能严肪。
9Java的網(wǎng)絡(luò)編程,比如NIO和Socket了解么谦屑。
說下BIO和NIO的區(qū)別把驳糯。
我說了BIO的阻塞用法,以及NIO的IO多路復(fù)用用法氢橙,說了selector酝枢,seletedkey,channel等類的使用流程悍手,以及單線程處理連接帘睦,多線程處理IO請求的好處袍患。
10說一下NIO的類庫或框架
講了netty,寫過服務(wù)端和客戶端的demo竣付,沒有在生產(chǎn)中實(shí)踐诡延。
1 channelhandler負(fù)責(zé)請求就緒時(shí)的io響應(yīng)。
2 bytebuf支持零拷貝古胆,通過邏輯buff合并實(shí)際buff肆良。
3 eventloop線程組負(fù)責(zé)實(shí)現(xiàn)線程池,任務(wù)隊(duì)列里就是io請求任務(wù)逸绎,類似線程池調(diào)度執(zhí)行惹恃。
4 acceptor接收線程負(fù)責(zé)接收tcp請求,并且注冊任務(wù)到隊(duì)列里棺牧。
11倒排索引了解么巫糙,我說不了解。
其實(shí)就是搜索引擎的基礎(chǔ)索引颊乘,根據(jù)關(guān)鍵字到文檔的映射關(guān)系建立索引曲秉,中文關(guān)鍵字可以使用中文分詞,查詢時(shí)通過關(guān)鍵字來定位索引疲牵,并且進(jìn)行排序后得到文檔結(jié)果集。
然后面試官說講一下數(shù)據(jù)庫把榆鼠,說下sql優(yōu)化的方式
我說的是MySQL纲爸,先講了一下sql使用索引的優(yōu)化,然后基于索引說了幾條優(yōu)化方案妆够。
12索引什么時(shí)候會(huì)失效變成全表掃描
說了聯(lián)合索引的前綴匹配识啦,跳躍索引,聚合函數(shù)神妹,判空和<>這些情況颓哮。
13分布式的paxos和raft算法了解么
了解過,但是講不清楚鸵荠。
paxos:多個(gè)proposer發(fā)請?zhí)嶙h(每個(gè)提議有id+value)冕茅,acceptor接受最新id的提議并把之前保留的提議返回。當(dāng)超過半數(shù)的accetor返回某個(gè)提議時(shí)蛹找,此時(shí)要求value修改為propeser歷史上最大值姨伤,propeser認(rèn)為可以接受該提議,于是廣播給每個(gè)acceptor庸疾,acceptor發(fā)現(xiàn)該提議和自己保存的一致乍楚,于是接受該提議并且learner同步該提議。
raft:raft要求每個(gè)節(jié)點(diǎn)有一個(gè)選主的時(shí)間間隔届慈,每過一個(gè)時(shí)間間隔向master發(fā)送心跳包徒溪,當(dāng)心跳失敗忿偷,該節(jié)點(diǎn)重新發(fā)起選主,當(dāng)過半節(jié)點(diǎn)響應(yīng)時(shí)則該節(jié)點(diǎn)當(dāng)選主機(jī)臊泌,廣播狀態(tài)鲤桥,然后以后繼續(xù)下一輪選主。
14中間件知道哪些缺虐,阿里的dubbo芜壁,rocketmq的事務(wù)消息,問了TCC回答說這個(gè)之前沒看明白高氮。
說了mycat實(shí)現(xiàn)分表分庫慧妄,消息隊(duì)列kafka和rabbitmq等。
15平時(shí)看什么書剪芍,怎么學(xué)習(xí)的塞淹。還跟我說他們部門3個(gè)華科的,校友多多罪裹。
16Spring和Springmvc講一下饱普。講了Spring的ioc和aop,Springmvc的基本架構(gòu)状共,請求流程套耕。
螞蟻金服中間件二號機(jī)
一面:
1 自我介紹
2 講一下ArrayList和linkedlist的區(qū)別,ArrayList的擴(kuò)容方式峡继,擴(kuò)容時(shí)機(jī)冯袍。
3 hashmap的實(shí)現(xiàn)。
4 NIO了解么碾牌,講一下和BIO的區(qū)別康愤,AIO呢。阻塞舶吗,非阻塞征冷,異步。具體誓琼。
5 你說了解分布式服務(wù)检激,那么你怎么理解分布式服務(wù)。
6 你說了解Tomcat的基本原理腹侣,了解的是哪一部分呵扛,基本架構(gòu),connector和container
7 你在項(xiàng)目中怎么用到并發(fā)的
8 docker和虛擬機(jī)講一下筐带。
9 有啥想問的
螞蟻金服中間件二面
1 項(xiàng)目
2 說一下Spring源碼把今穿,它的架構(gòu),流程伦籍。
3 Spring的bean如果要在實(shí)例化過程中修改其某一個(gè)成員變量蓝晒,應(yīng)該怎么做呢腮出。不通過構(gòu)造方法,并且AOP也并不能實(shí)現(xiàn)芝薇。
4 Tomcat的類加載器了解么胚嘲,回答不了解只了解Java的類加載器。
5 自定義類加載器怎么實(shí)現(xiàn)洛二,其中哪個(gè)方法走雙親委派模型馋劈,哪個(gè)不走,不走的話怎么加載類(實(shí)現(xiàn)findclass方法晾嘶,一般用defineclass加載外部類)妓雾,如何才能不走雙親委派。(重寫loadclass方法)
6 布隆過濾器了解么垒迂,講了ip地址過濾的布隆過濾器實(shí)現(xiàn)械姻。
7 聽說你項(xiàng)目用過docker,講一下docker的實(shí)現(xiàn)原理机断,說了虛擬機(jī)一般要對內(nèi)核進(jìn)行虛擬化楷拳,docker則用cgroup和namespace分別進(jìn)行硬件和命名空間的隔離。
8 項(xiàng)目中遇到的最大挑戰(zhàn)吏奸。
9 項(xiàng)目中學(xué)到最多的東西
10 有什么想問
螞蟻財(cái)富事業(yè)部
一面:
1 億級ip地址過濾
2 排序算法和適用場景
3 數(shù)據(jù)庫的事務(wù)有什么用
4 數(shù)據(jù)庫的悲觀鎖和樂觀鎖
5 數(shù)據(jù)的索引有什么用欢揖,怎么實(shí)現(xiàn)
6 聯(lián)合索引的匹配原則
7 數(shù)據(jù)庫萬級變成億級,怎么處理奋蔚。分庫分表她混,分片規(guī)則hash和取余數(shù)。使用mycat中間件實(shí)現(xiàn)旺拉。
8 redis這種nosql和mysql有什么區(qū)別,講了一遍redis
9 Spring了解不棵磷,用到了哪些設(shè)計(jì)模式蛾狗,說了四個(gè),單例仪媒,工廠沉桌,代理,觀察者算吩,模板其實(shí)也算留凭。
10 web請求的過程,講了瀏覽器到http服務(wù)器的過程偎巢,再講了mvc的請求處理過程蔼夜。
11 你的職業(yè)規(guī)劃
12 沒了。
二面:
沒有二面压昼,好像說是跳過了一輪求冷,直接技術(shù)主管面瘤运。
三面:
1 項(xiàng)目中的多線程,為什么用chm匠题,還有什么可以避免并發(fā)問題拯坟。
2 平時(shí)在看什么,寫什么博客韭山,我說分布式郁季,關(guān)注什么內(nèi)容,大后端钱磅,Hadoop生態(tài)梦裂。
3 dubbo了解么
4 dubbo的基本架構(gòu),幾個(gè)組件說一下
5 服務(wù)生產(chǎn)者和消費(fèi)者怎么進(jìn)行rpc調(diào)用
6 怎么進(jìn)行服務(wù)注冊發(fā)現(xiàn) zk實(shí)現(xiàn)具體說說
7 dubbo的負(fù)載均衡怎么做续搀,講一下具體代碼實(shí)現(xiàn)塞琼。
8 dubbo的服務(wù)容錯(cuò)怎么做,怎么知道服務(wù)器宕機(jī)了 zk的心跳機(jī)制維持服務(wù)器連接
9 好了我要問的差不多啦禁舷。
交叉面:
隔壁部門的技術(shù)主管彪杉,問了一道算法題。牵咙。就沒問別的了派近。。我也是很醉洁桌。渴丸。。
題目是鏈表的排序另凌,扯了4谱轨、5種方案,轉(zhuǎn)成數(shù)組吠谢,直接排序土童,拆分再排序,順序連接等等工坊。献汗。然后我表示不能再優(yōu)化了。他就說沒別的問題了王污。罢吃。。有點(diǎn)吃驚昭齐。
HR面:
1 興趣愛好
2 三年到五年的職業(yè)規(guī)劃
3 意向公司和城市
4 實(shí)習(xí)經(jīng)歷和收獲
5 實(shí)習(xí)中最大的困難
6 為什么換公司尿招,為什么拒絕菜鳥實(shí)習(xí)offer
7 你的缺點(diǎn)和優(yōu)點(diǎn)
8 你覺得你比其他人優(yōu)秀的地方說三個(gè)
9 為什么想來我們部門
10 巴拉巴拉
今日頭條研發(fā)面經(jīng)
今日頭條研發(fā)面經(jīng)
今日頭條上海
后臺開發(fā)工程師
今日頭條
后端研發(fā)工程師
找牛客大佬要了白金碼,跳過死亡筆試泊业,直接視頻面把沼,從3點(diǎn)開始,斷斷續(xù)續(xù)到晚上8點(diǎn)結(jié)束吁伺。
每個(gè)面試官給我的感覺都是怎么這么高冷啊饮睬。
1一面
一面:
1 寫一個(gè)題,找一個(gè)無序數(shù)組的中位數(shù)
2 寫了個(gè)快排篮奄,然后讓我找到無序數(shù)組第k大的一個(gè)數(shù)捆愁,我說先排序再找,實(shí)際上可以用快排的partition函數(shù)窟却。
3 快排的時(shí)間復(fù)雜度昼丑,最壞情況呢,最好情況呢夸赫,堆排序的時(shí)間復(fù)雜度呢菩帝,建堆的復(fù)雜度是多少,nlgn茬腿。
4 操作系統(tǒng)了解么呼奢,Linux和windows
5 說說Linux的磁盤管理,一臉懵逼
6 Linux有哪些進(jìn)程通信方式切平,五大件
7 Linux的共享內(nèi)存如何實(shí)現(xiàn)握础,大概說了一下。
8 共享內(nèi)存實(shí)現(xiàn)的具體步驟悴品,我說沒用過
9 socket網(wǎng)絡(luò)編程禀综,說一下TCP的三次握手和四次揮手,中間網(wǎng)絡(luò)不好苔严,面試官都沒聽清楚定枷,很尷尬
10 跳過網(wǎng)絡(luò),問了項(xiàng)目的一些東西
11 問我如何把docker講的很清楚届氢,我從物理機(jī)欠窒,虛擬機(jī)到容器具體實(shí)現(xiàn)稍微說了下。
12 問我cgroup在linux的具體實(shí)現(xiàn)悼沈,不會(huì)贱迟。
13 多線程用過哪些姐扮,chm和countdownlatch在實(shí)習(xí)用過
14 不得不吐槽下今天判豕客的視頻網(wǎng)速,不知道啥原因卡的一比茶敏,明明下載網(wǎng)速很正常啊壤靶,牛客視頻每秒才20k惊搏。贮乳。瘋狂掉線搞得很蛋疼忧换。
二面:
1 自我介紹
2 Java的集合類哪些是線程安全
3 分別說說這些集合類,hashmap怎么實(shí)現(xiàn)的向拆,扯了很多
4 MySQL索引的實(shí)現(xiàn)亚茬,innodb的索引,b+樹索引是怎么實(shí)現(xiàn)的浓恳,為什么用b+樹做索引節(jié)點(diǎn)刹缝,一個(gè)節(jié)點(diǎn)存了多少數(shù)據(jù),怎么規(guī)定大小颈将,與磁盤頁對應(yīng)梢夯。
5 MySQL的事務(wù)隔離級別,分別解決什么問題晴圾。
6 Redis了解么颂砸,如果Redis有1億個(gè)key,使用keys命令是否會(huì)影響線上服務(wù)死姚,我說會(huì)人乓,因?yàn)槭菃尉€程模型,可以部署多個(gè)節(jié)點(diǎn)知允。
7 問我知不知道有一條命令可以實(shí)現(xiàn)上面這個(gè)功能撒蟀。不知道
8 Redis的持久化方式,aod和rdb温鸽,具體怎么實(shí)現(xiàn)保屯,追加日志和備份文件,底層實(shí)現(xiàn)原理的話知道么涤垫,不清楚姑尺。
9 Redis的list是怎么實(shí)現(xiàn)的,我說用ziplist+quicklist實(shí)現(xiàn)的蝠猬,ziplist壓縮空間切蟋,quicklist實(shí)現(xiàn)鏈表。
10 sortedset怎么實(shí)現(xiàn)的榆芦,使用dict+skiplist實(shí)現(xiàn)的柄粹,問我skiplist的數(shù)據(jù)結(jié)構(gòu),大概說了下是個(gè)實(shí)現(xiàn)簡單的快速查詢結(jié)構(gòu)匆绣。
11 了解什么消息隊(duì)列驻右,rmq和kafka,沒細(xì)問
12 寫題時(shí)間到崎淳。第一題:寫一個(gè)層序遍歷堪夭。
13 第二題:寫一個(gè)插入樹節(jié)點(diǎn)到一顆排序樹的插入方法,使用遞歸方式找到插入位置即可。
14 第三題:一個(gè)有向圖用鄰接矩陣表示森爽,并且是有權(quán)圖恨豁,現(xiàn)在問怎么判斷圖中有沒有環(huán)。
15 我說直接dfs走到原點(diǎn)即為有環(huán)爬迟,剛開始寫的時(shí)候我又問了一嘴是不是只要找到一個(gè)就行橘蜜,面試官說是的,然后我說這樣應(yīng)該用bfs付呕,有一次訪問到原節(jié)點(diǎn)就是有環(huán)了扮匠。
16面試官問我不用遞歸能不能做這個(gè)題,其實(shí)我都還沒開始寫凡涩。然后我就說沒有思路棒搜,他提示我拓?fù)鋱D。我沒明白拓?fù)鋱D能帶來什么好處』罨現(xiàn)在一想力麸,好像當(dāng)訪問過程中找不到下一個(gè)節(jié)點(diǎn)時(shí)就說明有環(huán)。做一個(gè)訪問標(biāo)記應(yīng)該就可以育韩。
17 第四題:一個(gè)二叉樹克蚂,找到二叉樹中最長的一條路徑。
我先用求樹高的方式求出了根節(jié)點(diǎn)的左右子樹高度筋讨,加起來便是埃叭。
18 然后面試官提示需要考慮某個(gè)子樹深度特別大的情況,于是我用遍歷的方式刷新最大值悉罕,用上面那個(gè)方法遍歷完整個(gè)樹即可赤屋。
19 面試官說復(fù)雜度比較高,但是由于時(shí)間問題就說結(jié)束了壁袄。
三面:
三面的面試官真的高冷啊类早,不茍言笑就算了,我問他問他他都不愛搭理的嗜逻,搞得我內(nèi)心慌得一比涩僻,感覺涼涼。
1 介紹一下項(xiàng)目
2 你談到的并發(fā)技術(shù)栈顷,chm和countdownlatch怎么使用的
3 為什么要這么處理逆日,使用線程池是不是也可以。我說也可以
4 操作系統(tǒng)的進(jìn)程通信方式萄凤,僵尸進(jìn)程和孤兒進(jìn)程是什么室抽,如何避免僵尸進(jìn)程,我說讓父進(jìn)程顯示通知蛙卤,那父進(jìn)程怎么知道子進(jìn)程結(jié)束了狠半,答不會(huì)。
5 計(jì)算機(jī)網(wǎng)絡(luò)TCP和UDP有什么區(qū)別颤难,為什么迅雷下載是基于UDP的神年,我說FTP是基于TCP,而迅雷是p2p不需要TCP那么可靠的傳輸保證行嗤。
6 他說不對已日,我說是不是因?yàn)橐⑦B接,開銷比較大栅屏,他說不對
7 我說p2p的發(fā)送節(jié)點(diǎn)很多飘千,所以不是那么需要各種傳輸保證,他說不對栈雳。
8 我說TCP會(huì)自動(dòng)分包而TCP可以自己定義數(shù)據(jù)長度护奈。。他還是說不對哥纫。
最后他說算了霉旗。我們問下一個(gè)吧。
9 操作系統(tǒng)的死鎖必要條件蛀骇,如何避免死鎖厌秒。
10 寫一個(gè)LRU的緩存,需要完成超時(shí)淘汰和LRU淘汰擅憔。
我說用lhm行不行鸵闪,他說用linkedlist和hashmap可以。
于是我就寫了put和get函數(shù)暑诸,進(jìn)行了隊(duì)頭隊(duì)尾操作蚌讼。
他說get復(fù)雜度會(huì)不會(huì)太高,我瞎掰了半天沒找到辦法个榕,他說那就這樣吧啦逆,今天面試到這。
11 媽蛋笛洛,過期淘汰的處理我還沒寫呢夏志,你就說結(jié)束了,感覺涼了啊苛让,我說我要不要把剩下邏輯下完沟蔑,他說不用,心涼了一大截~
12 然后HR小姐姐讓我等結(jié)果了狱杰。溜了溜了
騰訊研發(fā)面經(jīng)
騰訊研發(fā)面經(jīng)
騰訊SNG
后臺開發(fā)工程師
大概是8月初投的簡歷瘦材,當(dāng)時(shí)沒有選事業(yè)群,第二天直接被sng撈了仿畸,抓著我一頓面試食棕。
一周內(nèi)就面完了三次面試朗和,接著就開始無盡的等待,整整等了三周左右簿晓,終于完成了四面和HR面眶拉。
整個(gè)過程還是比較曲折的,技術(shù)面試的難度也挺大的憔儿,不過他們部門也是Java線忆植,所以還比較有的聊。結(jié)果目前還不知道谒臼。
1一面
一面:
1 有序數(shù)組排序朝刊,二分,復(fù)雜度
2 常見排序算法蜈缤,說下快排過程拾氓,時(shí)間復(fù)雜度
3 有N個(gè)節(jié)點(diǎn)的滿二叉樹的高度。1+logN
4 朋友之間的點(diǎn)對點(diǎn)關(guān)系用圖維護(hù)底哥,怎么判斷兩人是否是朋友痪枫,并查集,時(shí)間復(fù)雜度叠艳,過程奶陈。沒講清楚
1. 初始化元素
2. 實(shí)現(xiàn)元素與元素間的聯(lián)合操作
3. 實(shí)現(xiàn)查找元素所在樹的根節(jié)點(diǎn)
4. 解決一個(gè)問題,判定兩個(gè)元素是否在同一棵樹上(兩個(gè)元素是否相互連接)
5 單元點(diǎn)最短路的方法附较,時(shí)間復(fù)雜度
6 如何實(shí)現(xiàn)關(guān)鍵字輸入提示吃粒,使用字典樹,復(fù)雜度多少拒课,有沒有其他方案徐勃,答哈希,如果是中文呢早像,分詞后建立字典樹僻肖?
7 hashmap的實(shí)現(xiàn)講一下吧,講的很詳細(xì)了卢鹦。講一下紅黑樹的結(jié)構(gòu)臀脏,查詢性能等。
8 Java中的垃圾回收講一下冀自,講了分代揉稚,gc算法,gc root可達(dá)性分析等
9 講一下兩個(gè)項(xiàng)目你都做了什么把熬粗。
10 除了代碼之外你還學(xué)習(xí)了什么技術(shù)搀玖,框架。
11 死鎖是怎么產(chǎn)生的
12 線程和進(jìn)程的區(qū)別
13 進(jìn)程的通信方式
14 CPU的執(zhí)行方式
15 代碼中遇到進(jìn)程阻塞驻呐,進(jìn)程僵死灌诅,內(nèi)存泄漏等情況怎么排查芳来。通過ps查詢狀態(tài),分析dump文件等方式排查猜拾。
16 Linux了解么即舌,查看進(jìn)程狀態(tài)ps,查看cpu狀態(tài) top关带。查看占用端口的進(jìn)程號netstat grep
17 10g文件,只有2g內(nèi)存沼撕,怎么查找文件中指定的字符串出現(xiàn)位置宋雏。MapReduce分割文件處理。
他說可以用cat | grep 管道處理务豺。
二面:
1 快排的時(shí)間復(fù)雜度磨总,冒泡時(shí)間復(fù)雜度,快排是否穩(wěn)定笼沥,快排的過程
2 100w個(gè)數(shù)蚪燕,怎么找到前1000個(gè)最大的,堆排序奔浅,怎么構(gòu)造馆纳,怎么調(diào)整,時(shí)間復(fù)雜度汹桦。
3 一個(gè)矩陣鲁驶,從左上角到右下角,每個(gè)位置有一個(gè)權(quán)值舞骆≡客洌可以上下左右走,到達(dá)右下角的路徑權(quán)值最小怎么走督禽。
先說了一下dfs遞歸實(shí)現(xiàn)脆霎。面試官說要優(yōu)化。
說了一下用迪杰斯特拉的思路狈惫,說可以睛蛛。
4 四輛小車,每輛車加滿油可以走一公里胧谈,問怎么能讓一輛小車走最遠(yuǎn)玖院。說了好幾種方案,面試官引導(dǎo)我優(yōu)化了一下第岖,但是還是不滿意难菌,最后他說跳過。
5 hashmap的實(shí)現(xiàn)蔑滓,hashtable郊酒,concurrenthashmap實(shí)現(xiàn)遇绞。
6 MySQL的索引,B+樹性質(zhì)燎窘。
7 Linux的cpu 100怎么排查摹闽,top jstack,日志褐健,gui工具
8 Linux大文件怎么查某一行的內(nèi)容付鹿。
9 Redis內(nèi)存數(shù)據(jù)庫的內(nèi)存指的是共享內(nèi)存么
10 Redis的持久化方式
11 秒殺系統(tǒng)的架構(gòu)設(shè)計(jì)
三面:
1 十億個(gè)數(shù)的集合和10w個(gè)數(shù)的集合,如何求它們的交集蚜迅。
集合的數(shù)字不重復(fù)舵匾。
我講了兩次循環(huán),兩次hash谁不,以及排序或者合并等方式坐梯。。都不對刹帕。后來面試官說是對小數(shù)組做hash吵血,然后遍歷大數(shù)組即可。我完全想錯(cuò)方向了偷溺。
2 十億和數(shù)找到前100個(gè)最大的蹋辅,堆排序,怎么實(shí)現(xiàn)挫掏,怎么調(diào)整晕翠。
3 TCP和UDP的區(qū)別,具體使用場景呢砍濒。
4 TCP四次揮手講一下過程淋肾,最后一次ack如果客戶端沒收到怎么辦。
5 對于socket編程爸邢,accept方法是干什么的樊卓,在三次握手中屬于第幾次,可以猜一下杠河,為什么這么覺得碌尔。
6 Linux操作系統(tǒng)了解么,了解一點(diǎn)點(diǎn)券敌,就沒問了唾戚。
7 對于單例模式,有什么使用場景了待诅,講了全局id生成器叹坦,他問我分布式id生成器怎么實(shí)現(xiàn),說了zk卑雁,問我zk了解原理不募书,講了zab绪囱,然后就沒問啦。
8 除了單例模式莹捡,知道適配器模式怎么實(shí)現(xiàn)么鬼吵,有什么用
9 回到網(wǎng)絡(luò),剛才你說到直播場景篮赢,知道直播的架構(gòu)怎么設(shè)計(jì)么齿椅,要點(diǎn)是什么,說了幾個(gè)不太對启泣,他說要避免廣播風(fēng)暴涣脚,答不會(huì)。
10 Redis和MySQL有什么區(qū)別种远,用于什么場景涩澡。
11 問了一下最近看什么書顽耳,什么時(shí)候開始寫博客的
12 問了還有幾輪面試坠敷,他說這輪我可以過,有點(diǎn)小驚喜
四面:
三面過了半個(gè)多月射富,終于安排四面了膝迎。
1 自我介紹
2 項(xiàng)目,收獲
3 Linux了解哪些胰耗,基礎(chǔ)命令和知識限次。問我proc文件系統(tǒng)了解么,答不了解柴灯。
4 TCP和UDP的核心區(qū)別在哪卖漫,講了滑動(dòng)窗口保證可靠有序傳輸,UDP不可靠赠群。TCP需要連接而UDP不需要羊始。
5 TCP的四次揮手,time wait狀態(tài)有什么意義查描。
6 說完這個(gè)他問我有什么想問他的了突委。
7 我問他為什么隔了這么久才面試,而且之前三面都只是初試冬三,然后他說最近他在休假匀油,所以就右遭。沿猜。。害我擔(dān)心了好久笼蛛。他說接下來等HR面就行了窝爪。
HR面:
1 自我介紹
2 實(shí)習(xí)收獲
3 臺灣交流體驗(yàn)
4 之前實(shí)習(xí)公司的情況钝侠,拿到offer了嗎该园,會(huì)如何選擇呢
5 排一下公司,部門帅韧,薪資和城市等因素里初。
6 你的優(yōu)缺點(diǎn),如何改進(jìn)
7 學(xué)生時(shí)代最成功的事
8 你的預(yù)期薪資
微信公眾號
個(gè)人公眾號:程序員黃小斜
?
黃小斜是 985 碩士忽舟,阿里巴巴Java工程師双妨,在自學(xué)編程、技術(shù)求職叮阅、Java學(xué)習(xí)等方面有豐富經(jīng)驗(yàn)和獨(dú)到見解刁品,希望幫助到更多想要從事互聯(lián)網(wǎng)行業(yè)的程序員們。
?
作者專注于 JAVA 后端技術(shù)棧浩姥,熱衷于分享程序員干貨挑随、學(xué)習(xí)經(jīng)驗(yàn)、求職心得勒叠,以及自學(xué)編程和Java技術(shù)棧的相關(guān)干貨兜挨。
?
黃小斜是一個(gè)斜杠青年,堅(jiān)持學(xué)習(xí)和寫作眯分,相信終身學(xué)習(xí)的力量拌汇,希望和更多的程序員交朋友,一起進(jìn)步和成長弊决!
原創(chuàng)電子書:
關(guān)注微信公眾號【程序員黃小斜】后回復(fù)【原創(chuàng)電子書】即可領(lǐng)取我原創(chuàng)的電子書《菜鳥程序員修煉手冊:從技術(shù)小白到阿里巴巴Java工程師》這份電子書總結(jié)了我2年的Java學(xué)習(xí)之路噪舀,包括學(xué)習(xí)方法、技術(shù)總結(jié)飘诗、求職經(jīng)驗(yàn)和面試技巧等內(nèi)容与倡,已經(jīng)幫助很多的程序員拿到了心儀的offer!
技術(shù)公眾號:程序員江湖
英雄不問出處昆稿,編程不看出身纺座。這里是自學(xué)編程愛好者的聚集地,也是程序員IT學(xué)習(xí)資源的藏經(jīng)閣貌嫡。點(diǎn)擊關(guān)注比驻,一起成為更優(yōu)秀的程序員!
程序員3T技術(shù)學(xué)習(xí)資源: 一些程序員學(xué)習(xí)技術(shù)的資源大禮包岛抄,關(guān)注公眾號【程序員江湖】后别惦,后臺回復(fù)關(guān)鍵字 “資料” 即可免費(fèi)無套路獲取,包括Java夫椭、python掸掸、C++、大數(shù)據(jù)、機(jī)器學(xué)習(xí)扰付、前端堤撵、移動(dòng)端等方向的技術(shù)資料。
關(guān)注公眾號【程序員江湖】后回復(fù)「Java」羽莺、「Python」实昨、「C++」、「大數(shù)據(jù)」盐固、「算法」荒给、「AI」、「Android」刁卜、「前端」志电、「iOS」、「BAT」蛔趴、「校招」挑辆、「筆試」、「面試」孝情、「計(jì)算機(jī)基礎(chǔ)」鱼蝉、「LeetCode」 等關(guān)鍵字可以獲取對應(yīng)的免費(fèi)程序員學(xué)習(xí)資料。