今年秋招我的面試大致結(jié)束了,差不多把提供北京java崗位的互聯(lián)網(wǎng)公司大都投一遍,也獲得了幾個(gè)面試機(jī)會(huì),在這兒把面經(jīng)都和大伙兒分享一下吧。
1、滴滴
滴滴面試安排是如果你通過(guò)了一面,那么就優(yōu)先安排后面的面試,所以導(dǎo)致還沒(méi)一面的人就得一直苦等。那會(huì)兒我是下午一點(diǎn)去的,大概到了快4點(diǎn)才進(jìn)行一面,后面就嗖嗖嗖地過(guò)關(guān)斬將到了hr面,也算是運(yùn)氣不錯(cuò)吧。
交叉1面
(代碼)01矩陣,相鄰的1是一個(gè)島嶼,找出所有島嶼數(shù)(遞歸解決)
有關(guān)注過(guò)開源社區(qū)嗎,都看過(guò)哪些源碼
AtomicInteger實(shí)現(xiàn)原理(CAS自旋)
synchronized和reentrantLock區(qū)別
介紹spring的IOC和AOP,分別如何實(shí)現(xiàn)(classloader、動(dòng)態(tài)代理)
redis如何處理分布式服務(wù)器并發(fā)造成的不一致(本身就是單線程序列化的隔離級(jí)別),如果數(shù)據(jù)庫(kù)不提供隔離呢
OSGi的機(jī)制(因?yàn)楹?jiǎn)歷寫了)
交叉2面
2個(gè)雞蛋,100高的樓,最少的次數(shù)測(cè)出雞蛋碎掉的臨界層,沒(méi)碎的雞蛋可以反復(fù)用(沒(méi)做出,應(yīng)該是14次,網(wǎng)上有解法)
大量字符串找出數(shù)量最多的K個(gè),考慮內(nèi)存放得下和放不下兩種情況
解釋mysql索引、b樹,為啥不用平衡二叉樹、紅黑樹(磁盤和內(nèi)存的存儲(chǔ)方式不同)
垃圾回收算法,為什么要分代處理
跳表(不熟,沒(méi)繼續(xù))
IO(不熟,沒(méi)繼續(xù))
epoll(不熟,沒(méi)繼續(xù))
一致性hash
zookeeper如何同步配置(不熟,沒(méi)繼續(xù))
講下java鎖的原理
ConcurrentHashMap原理
BOSS面
(代碼)最長(zhǎng)回文子串
GC停頓原因,如何降低停頓
JVM如何調(diào)優(yōu)、參數(shù)怎么調(diào)
如何用工具分析jvm狀態(tài)(visualVM看堆中對(duì)象的分配,對(duì)象間的引用、是否有內(nèi)存泄漏,jstack看線程狀態(tài)、是否死鎖等等)
進(jìn)程和線程區(qū)別
epoll和select區(qū)別(不熟,沒(méi)繼續(xù))
解釋mysql索引、b樹
hr面
五個(gè)詞來(lái)描述自己
長(zhǎng)期的計(jì)劃
興趣愛(ài)好
期望薪水
對(duì)崗位的要求
已經(jīng)拿到的offer
hr告訴我滴滴主要的事業(yè)部用的是c和php,進(jìn)來(lái)后發(fā)現(xiàn)公司內(nèi)已經(jīng)逐漸在用golang替代兩者了,但是使用java的部門也有不少。
java崗面
(代碼)含Double數(shù)據(jù)的list,找出最長(zhǎng)連續(xù)遞增序列的長(zhǎng)度(連續(xù)遞增比較簡(jiǎn)單,看你代碼質(zhì)量)
找出最長(zhǎng)遞增子序列的長(zhǎng)度,說(shuō)思路(dp算法,復(fù)雜度O(n))
mysql中int的最大填充長(zhǎng)度(我記得是255,后來(lái)查了也是255,但被告知是錯(cuò)的……),varchar不同編碼下的存儲(chǔ)字符個(gè)數(shù)
寫SQL,多表連接查昨天的第二多的值
js題,考察閉包
2、美團(tuán)
美團(tuán)的面試安排在下午,不用早起真好~ 等候區(qū)就在1樓,工作人員供了面包和一次性杯子,旁邊就是運(yùn)動(dòng)區(qū),有跑步機(jī)、乒乓球桌、桌上足球及一些運(yùn)動(dòng)器材,感覺(jué)環(huán)境還是很不錯(cuò)的(此處應(yīng)該吐槽下京東,場(chǎng)面極其混亂)。
面試一共三輪,會(huì)有工作人員叫名字讓你進(jìn)去面試,就是中間的等待有點(diǎn)久。每輪通過(guò)的話就會(huì)留下來(lái)接著下一面,沒(méi)過(guò)的話工作人員會(huì)告訴你“很抱歉,你今天的面試已經(jīng)結(jié)束了”,特別是在漫長(zhǎng)的等待中,周圍的人一個(gè)個(gè)被“很抱歉”,那個(gè)心理壓力可不是一般大。然后就是全部的面試經(jīng)過(guò),大概整理了下,發(fā)現(xiàn)運(yùn)氣還不錯(cuò),都可以答得上來(lái)。面試問(wèn)題只是參照,面試官會(huì)根據(jù)你的簡(jiǎn)歷來(lái)問(wèn)針對(duì)性的問(wèn)題,而你也可以引導(dǎo)他來(lái)問(wèn)你擅長(zhǎng)的領(lǐng)域,當(dāng)然有些基礎(chǔ)的東西還是必須了解的,比如jvm、spring框架、持久化框架、數(shù)據(jù)庫(kù)之類的。
一面
介紹實(shí)習(xí)經(jīng)歷,講項(xiàng)目
解釋https (先公私鑰加密,再對(duì)稱加密) 為什么不直接公私鑰
jvm中類加載過(guò)程,解釋雙親委派加載,及類是在哪個(gè)加載器加載的
傳值、傳引用 傳入對(duì)象引用,指向一個(gè)new的對(duì)象,問(wèn)主函數(shù)里的會(huì)變嗎
找出數(shù)組中最多的那個(gè)數(shù),除了hashset還有沒(méi)其他方法(只想到蒙特卡羅法)
(代碼)輸入合法的數(shù)字字符串,輸出貨幣字符,就是每隔3位加個(gè)逗號(hào),考慮邊界處理
(代碼)有1-10 10個(gè)數(shù),和一個(gè)數(shù)sum,計(jì)算用10個(gè)數(shù)連加得到sum有多少種系數(shù)組合(遞歸)
二面
自我介紹,講項(xiàng)目
spring中bean加載機(jī)制,bean生成的具體步驟
ioc注入的方式
spring何時(shí)創(chuàng)建applicationContext(web.xml中使用listener)
listener是監(jiān)聽哪個(gè)事件(ServletContext創(chuàng)建事件)
springMVC流程具體敘述下
synchronized和reentrantLock的區(qū)別,synchronized用在代碼快、方法、靜態(tài)方法時(shí)鎖的都是什么
介紹ConcurrentHashMap原理,用的是哪種鎖,segment有沒(méi)可能增大(不會(huì),只會(huì)增大每個(gè)segment中的entry數(shù)組)
如何實(shí)現(xiàn)高效的同步鏈表
(代碼)層次遍歷二叉樹,偶數(shù)層輸出逆序輸出(隊(duì)列,用一個(gè)標(biāo)記記錄每一層的結(jié)束,統(tǒng)一輸出當(dāng)前層)
三面
介紹實(shí)習(xí)經(jīng)歷,講項(xiàng)目
(代碼)給定一個(gè)字符串,寫出所有可能的全排列(遞歸)
剩下的就是問(wèn)一下hr面的問(wèn)題:
怎么理解踏實(shí),你在項(xiàng)目中哪兒體現(xiàn)到了
最近最有成就感的事
你的優(yōu)點(diǎn) 缺點(diǎn)
最近在看的技術(shù)
是否寫過(guò)其他個(gè)人興趣的小項(xiàng)目
寫技術(shù)博客嗎,github呢
個(gè)人職位目標(biāo)
三面的面試官還是很nice的,最后的部門好像也是由三面的來(lái)挑。面試結(jié)束第二天就讓簽了兩方,待遇也沒(méi)得談。
3、網(wǎng)易
面試等待時(shí)間趕超了滴滴,上午10點(diǎn)等到下午兩點(diǎn)才剛開始一面。hr面結(jié)束都5點(diǎn)多了,正趕上下班高峰期,公交又堵了好久,回去后感覺(jué)渾身都已經(jīng)無(wú)力了。
一面
介紹了下阿里的實(shí)習(xí)項(xiàng)目,問(wèn)了下對(duì)SOA和OSGi的認(rèn)識(shí),以及之間的關(guān)系
項(xiàng)目中遇到的最難忘的問(wèn)題,如何解決的(網(wǎng)上搜索、問(wèn)經(jīng)驗(yàn)豐富的、斷點(diǎn)調(diào)試跟進(jìn)源碼、技術(shù)論壇發(fā)帖)
問(wèn)了擅長(zhǎng)的java領(lǐng)域,針對(duì)性提問(wèn)(jvm、容器、并發(fā))
介紹jvm內(nèi)存機(jī)制(把各個(gè)內(nèi)存區(qū)域作用、回收算法、收集器分類統(tǒng)統(tǒng)說(shuō)了一遍)
創(chuàng)建線程方式(實(shí)現(xiàn)runnable接口、集成Thread、線程池)
java都有哪些加鎖方式(synchronized、ReentrantLock、共享鎖、讀寫鎖等)
想讓所有線程都等到一個(gè)時(shí)刻同時(shí)執(zhí)行有哪些方法(介紹了下CountDownLatch和CyclicBarrier)
volatile的作用(使變量對(duì)所有線程可見(jiàn),同時(shí)禁止指令重排序)
都用過(guò)哪些java容器,LinkedList都一般都在什么時(shí)候用到(經(jīng)常插入刪除時(shí)、實(shí)現(xiàn)隊(duì)列和棧時(shí))
介紹ConcurrentHashMap(分段加鎖,幾乎每個(gè)面試都問(wèn)這個(gè)。。。)
Object里頭都有哪些方法,著重問(wèn)了clone(深復(fù)制還是淺復(fù)制)、finalize(一般在什么時(shí)候用,回收時(shí)一定能被運(yùn)行)
二面
問(wèn)題和一面差不多,很多重復(fù)的就不說(shuō)了
如何管理線程(介紹了各種線程池的實(shí)現(xiàn))
如何讓線程A等待線程B結(jié)束后再執(zhí)行(join、單線程池),還反問(wèn)單線程池真的可以嗎,所以大致和他介紹了下阻塞隊(duì)列的機(jī)制
如何優(yōu)化jvm參數(shù)(堆大小、xmx一般和xms設(shè)成一樣大、永久代大小、收集器選擇、收集器參數(shù)、新生代對(duì)象年齡閾值等)
hr面
很少見(jiàn)的男hr,性格溫和,談起來(lái)很輕松愉快
介紹所有的項(xiàng)目
對(duì)在阿里的實(shí)習(xí)如何評(píng)價(jià),對(duì)mentor如何評(píng)價(jià)
在阿里有沒(méi)什么讓你比較惋惜的地方(內(nèi)部論壇資源非常豐富,都是大牛的知識(shí)帖,后悔看得太少)
喜歡何種風(fēng)格的領(lǐng)導(dǎo),是嚴(yán)格的技術(shù)型還是寬松的管理型
你的職業(yè)規(guī)劃,轉(zhuǎn)管理還是一直技術(shù)
喜歡的興趣愛(ài)好
針對(duì)我寫到的旅游又問(wèn)了,去哪兒旅游過(guò),通常都是如何準(zhǔn)備一次旅行的(查各種攻略、做旅行計(jì)劃,叫上小伙伴),是否寫游記呢(很少),對(duì)寫游記的人如何評(píng)價(jià)(為他們點(diǎn)贊~)
最近在看什么書籍呢(各種技術(shù)類書籍)
是否能提前來(lái)實(shí)習(xí)
已經(jīng)拿到的offer
目標(biāo)薪資
4、58趕集
58就在798旁邊,面試完后特地去在寒風(fēng)中感受了下藝術(shù)氣息。簽到的時(shí)候可以看到自己筆試的分?jǐn)?shù),貌似是按分?jǐn)?shù)排的面試順序。不想更加糾結(jié)所以放棄了二面。
一面
終于遇到一位年輕且頭發(fā)還算茂密的面試官了,還蠻熱情的
閑扯了下項(xiàng)目
介紹spring的IOC和AOP,容器的概念(本質(zhì)就是applicationContext管理了classloader)
bean的創(chuàng)建過(guò)程
手寫TCP三次握手(最好把狀態(tài)也寫出來(lái)),每次請(qǐng)求的序號(hào)是如何變化的
TCP如何控制擁塞(擁塞窗口、慢開始、擁塞避免、快重傳、快恢復(fù))
(代碼)N個(gè)男生,N個(gè)女生,給出所有排列方式,其滿足在任意i處(范圍在[0,2n-1]),0-i的女生數(shù)都大于男生數(shù)(遞歸實(shí)現(xiàn))
知道哪些排序算法,介紹一下快排
5、京東
在某天晚上突然收到第二天早上去京東面試的通知,而且用的還是電話語(yǔ)音,9月22日讀成九點(diǎn)二二 是什么鬼!面試現(xiàn)場(chǎng)比較混亂,一邊的人在排著隊(duì),一邊是有負(fù)責(zé)人出來(lái)循環(huán)播放“XXX在嗎”……當(dāng)天只安排一輪面試,大約等了一小時(shí)才見(jiàn)到面試官,面試官貌似是做管理的,技術(shù)性問(wèn)題不多。介紹完項(xiàng)目后提出了一些場(chǎng)景問(wèn)你如何解決,如何實(shí)現(xiàn)分布式,一般在哪兒用redis等等,面試過(guò)程很短一下就結(jié)束了。回去后半夜又收二面通知,又是那個(gè)電話語(yǔ)音,我當(dāng)時(shí)的內(nèi)心是崩潰的……但是面試時(shí)間和美團(tuán)的沖突了,并且根本找不到hr聯(lián)系方式,京東的面試就在此止步了。
還有幾家公司的面試,要么不大合適,要么就是跪了,就不細(xì)說(shuō)了。希望大伙兒都能找到滿意的工作,特別是到了校招后期,心態(tài)可能會(huì)變化比較大,可以來(lái)場(chǎng)說(shuō)走就走的短途旅行緩解下壓力,不要過(guò)于苛求自己,祝一切順利!