美團內(nèi)推面試記錄

引言


找學(xué)姐內(nèi)推的美團后臺開發(fā)崗位。剛投兩天就收到了面試通知党觅,相當(dāng)猝不及防雌澄。本文主要是記錄一些面試題目,面試題相關(guān)的知識在網(wǎng)上大多都查得到杯瞻,我就寫得稍微簡略一點镐牺。凡是文中用引號(“”)標(biāo)記的文字都是我當(dāng)時的回答,其他內(nèi)容則是我的一些補充魁莉。

面試官形象


一面:視頻面試睬涧,在牛客網(wǎng)的一個非常專業(yè)的面試平臺上旗唁,旁邊就有代碼框可以寫代碼給面試官看畦浓。男面試官,問的問題都偏java與計算機基礎(chǔ)(基礎(chǔ)是相對于項目而言)检疫,不像阿里上來就聊好久項目讶请,然后才問一些知識,美團則是上來先問基礎(chǔ)知識 屎媳,問了好久基礎(chǔ)知識才講一點項目夺溢。

一面


總體感覺

問得挺細,不過大多數(shù)問題都是挺經(jīng)典的烛谊,提前復(fù)習(xí)復(fù)習(xí)基本都能復(fù)習(xí)到风响。

1.自我介紹

自我介紹結(jié)束之后,面試官說那就先從你簡歷里寫的專業(yè)技能問起吧(我簡歷中專業(yè)技能第一項寫的是熟悉Java丹禀,然后他就先從java問起)状勤。

2.說說你在實習(xí)過程中干了什么?

3.ConcurrentMap相比以前的Map有哪些改進湃崩?

答:“CocurrentMap采用了分段式鎖荧降,以前的Map都是由Entry鏈表組成,而ConcurrentMap先將Entry分成一個個Segment攒读,然后再由Segment組成Map朵诫,每次寫的時候就只需要鎖住一個Segment就可以了,因此提高了性能薄扁〖舴担”

4.HashMap有哪些缺點废累?

答:“線程不安全”

5.你說HashMap是線程不安全的,那么有哪些情況會造成問題呢脱盲?

答:“當(dāng)兩個線程同時對HashMap進行ReSize的時候可能會產(chǎn)生環(huán)鏈邑滨。”

6.Java中會發(fā)生內(nèi)存溢出嗎钱反?

答:“會發(fā)生掖看。如果某個Java對象一直被保存在集合中忘記清除,就會導(dǎo)致引用一直不被釋放面哥,產(chǎn)生內(nèi)存溢出哎壳。記得Java中有一個WeakHashMap,能夠保存對象的弱引用尚卫,這樣程序中不再使用對象之后归榕,也會在Map中被自動清除≈ㄉ妫”

7.如果發(fā)現(xiàn)Java程序的CPU負載特別高刹泄,你會用什么工具進行分析和調(diào)試呢?

答:“Jconsole或者Jvisualvm怎爵,還有l(wèi)inux中自帶的top命令特石。”
然后面試官接著追問:“l(fā)inux中好像有參數(shù)能夠查看線程的內(nèi)存占用疙咸,你知道是什么嗎县匠?”
我:“不知道∪雎郑”
后來去網(wǎng)上查了查:查看線程的內(nèi)存與CPU占用的命令是top -H乞旦。ps xH也能查看系統(tǒng)中所有的線程。
面試官接著問:“造成這種現(xiàn)象的原因可能是什么呢题山?”
我:“有可能是程序中有死循環(huán)兰粉,或者線程數(shù)過多《ネ”

8.Java的線程池有用過嗎玖姑?

我回答說“用過,比如SingleThreadExecutor,CachedThreadPool,FixedThreadPool等等慨菱⊙媛纾”
面試官:這都是一些工廠方法,他們實際生產(chǎn)的是什么對象以及這個類的構(gòu)造方法的參數(shù)有了解嗎符喝?
我:“不了解闪彼。”

后來去網(wǎng)上查了一查:

其實Executors工廠中生成的這些線程池最終都是用不同的參數(shù)構(gòu)造了ThreadPoolExecutor對象,ThreadPoolExecutor類的構(gòu)造方法中有corePoolSize,maximumPoolSize,keepAliveTime,unit,workQueue,threadFactory和handler這幾個參數(shù)畏腕,含義如下:

  • corePoolSize:核心池的大小缴川。在創(chuàng)建了線程池后,默認(rèn)情況下描馅,線程池中并沒有任何線程把夸,而是等待有任務(wù)到來才創(chuàng)建線程去執(zhí)行任務(wù),除非調(diào)用了prestartAllCoreThreads()或者prestartCoreThread()方法铭污,從這2個方法的名字就可以看出恋日,是預(yù)創(chuàng)建線程的意思,即在沒有任務(wù)到來之前就創(chuàng)建corePoolSize個線程或者一個線程嘹狞。默認(rèn)情況下谚鄙,在創(chuàng)建了線程池后,線程池中的線程數(shù)為0刁绒,當(dāng)有任務(wù)來之后,就會創(chuàng)建一個線程去執(zhí)行任務(wù)烤黍;
  • maximumPoolSize:線程池最大線程數(shù)知市,它表示在線程池中最多能創(chuàng)建多少個線程;
  • keepAliveTime:表示線程沒有任務(wù)執(zhí)行時最多保持多久時間會終止速蕊。默認(rèn)情況下嫂丙,只有當(dāng)線程池中的線程數(shù)大于corePoolSize時,keepAliveTime才會起作用规哲,直到線程池中的線程數(shù)不大于corePoolSize跟啤,即當(dāng)線程池中的線程數(shù)大于corePoolSize時,如果一個線程空閑的時間達到keepAliveTime唉锌,則會終止隅肥,直到線程池中的線程數(shù)不超過corePoolSize。但是如果調(diào)用了allowCoreThreadTimeOut(boolean)方法袄简,在線程池中的線程數(shù)不大于corePoolSize時腥放,keepAliveTime參數(shù)也會起作用,直到線程池中的線程數(shù)為0绿语;
  • unit:參數(shù)keepAliveTime的時間單位
  • workQueue:一個阻塞隊列秃症,用來存儲等待執(zhí)行的任務(wù);
  • threadFactory:線程工廠吕粹,主要用來創(chuàng)建線程种柑;
  • handler:表示當(dāng)拒絕處理任務(wù)時的策略,有以下四種取值:
1.ThreadPoolExecutor.AbortPolicy:丟棄任務(wù)并拋出RejectedExecutionException異常匹耕。 
2.ThreadPoolExecutor.DiscardPolicy:也是丟棄任務(wù)聚请,但是不拋出異常。 
3.ThreadPoolExecutor.DiscardOldestPolicy:丟棄隊列最前面的任務(wù)泌神,然后重新嘗試執(zhí)行任務(wù)(重復(fù)此過程)
4.ThreadPoolExecutor.CallerRunsPolicy:由調(diào)用線程處理該任務(wù)

9.說說看Java的堆空間是怎么分配的良漱?

答:“分為新生代舞虱,老年代與永久代∧甘校”

10.JVM的那些啟動參數(shù)有了解過嗎矾兜?-Xms是代表什么呢?JVM的最大堆內(nèi)存與最小堆內(nèi)存容量默認(rèn)是一樣的患久,這是為什么呢椅寺?

答:“了解過,但是參數(shù)名稱我都忘了蒋失》蹬粒”

后來去網(wǎng)上查了一查:
-Xms參數(shù)用來配置初始堆,-Xmx用來配置最大堆篙挽,它們的默認(rèn)值都是3550M荆萤,之所以將他們設(shè)置為一樣是為了避免每次垃圾回收完之后JVM都重新分配一次內(nèi)存。

9.新生代內(nèi)部的空間是怎么分配的铣卡?Eden Space占百分之多少链韭?

答:“分為Eden Space與Survivor Space。Eden Space占了百分之八十煮落〕ㄇ停”

11.新生代的垃圾回收和老年代的垃圾回收有什么區(qū)別?

答:“一個叫Minor GC蝉仇,一個叫Major GC旋讹。用的算法不同,一個用的是“復(fù)制算法”轿衔,一個用的是“標(biāo)記整理”算法沉迹。”

12.寫個單例模式給我看看害驹?

然后我就默寫了標(biāo)準(zhǔn)的懶漢模式的單例模式代碼胚股,加了雙重鎖定。

13.說說看你了解哪些git命令裙秋?git rebase了解嗎琅拌?

答:“比如git clone,git pull摘刑,git push进宝。不知道git rebase〖纤。”

后來去網(wǎng)上查了查:git rebase其實就是一個用于分支合并的命令党晋,以前我通常都用git merge來合并分支,其實git rebase相比git merge更能夠保持工作樹的整潔。

14.maven的依賴加載順序是什么未玻?

我說“我只是會用maven灾而,原理不清楚“饨耍”

之后去網(wǎng)上查了一查:
查了之后才突然明白過來旁趟,面試官并沒想刁難我,只是我當(dāng)時沒有弄清題意庇绽,只要像下面那樣簡單地回答就可以了:
1. 先在本地倉庫中搜索;
2. 如果在本地倉庫中沒有搜索到的話锡搜,maven會去中央倉庫中搜索,如果搜索到則將其下載到本地倉庫留以后使用瞧掺;如果沒有搜索到的話耕餐,則maven會看一看在pom中有沒有聲明遠程倉庫(遠程倉庫是指用戶自定義倉庫),如果沒有聲明則報錯辟狈;否則的話進行下一步肠缔;
3. 在遠程倉庫中搜索依賴,如果搜索到的話則下載到本地供以后使用哼转,否則報錯桩砰;

15.寫個sql看看,查詢student表中分?jǐn)?shù)大于80的學(xué)生

見我的另一篇博客:積累一些常見的寫SQL的題释簿,其中的第一題。

16.再寫個sql硼莽,查詢student表中分?jǐn)?shù)排名第二的學(xué)生庶溶,最好能考慮學(xué)生考試成績并列的情況。

見我的另一篇博客:積累一些常見的寫SQL的題懂鸵,其中的第二題偏螺。

17.來寫個linux命令吧,某個文件的內(nèi)容在不停地更新匆光,我要實時查看更新的內(nèi)容中包含"北京"字段的行

答:"tail -F | grep 北京"

18.來寫個算法的代碼套像,就二分查找吧

19.你寫的二分查找代碼是不是沒有考慮重復(fù)的數(shù)字,如果有重復(fù)的數(shù)字怎么辦终息?

答:“沒有考慮夺巩,不知道怎么辦≈苷福”

20.講講看你從瀏覽器中輸入網(wǎng)址到看到網(wǎng)頁之間發(fā)生了什么柳譬?

答:“網(wǎng)址先經(jīng)過DNS解析變成IP地址,然后瀏覽器向服務(wù)器發(fā)起HTTP請求续镇,請求回網(wǎng)頁然后渲染到了瀏覽器上美澳。”

注:感覺我這里答得太粗略了,大家可以去網(wǎng)上看看更詳細的解答制跟。

21.講講你在項目中遇到的困難是怎么解決的舅桩?

這個問題在各種面試中都會經(jīng)常遇到,建議大家好好回顧一下之前做過的項目雨膨,將其中的一些比較上檔次(就是比較不會讓人覺得low)的困難整理出來擂涛,想想看如何能將其描述得繪聲繪色,如果沒有什么比較上檔次的困難的話哥放,可以考慮

22.為什么用Redis而不直接存在java對象中呢歼指?

答:“感覺用數(shù)據(jù)庫更加可靠一點吧∩瘢”

23.你以前實習(xí)的時候有沒有遇到什么困難踩身?你是怎么解決的?

24.看你簡歷里寫Hadoop社露,Mapreduce這些東西實際中有使用過嗎挟阻?還是說只是學(xué)學(xué)了相關(guān)知識

我說“我只是學(xué)了學(xué)相關(guān)知識∏偷埽”

25.Hadoop附鸽,Mapreduce在什么場景下使用呢?

答:“在企業(yè)大數(shù)據(jù)處理的時候使用”

26.假如有一個很大的文件里面全是數(shù)字瞒瘸,你要對其進行排序坷备,你要怎么做呢?提示你可以借鑒mapreduce的思想

當(dāng)時隨口說了一個方案情臭,感覺也不太對:“先分塊快排省撑,然后再進行歸并排序”。

27.Zookeeper有哪些應(yīng)用場景呢俯在?

答:“集中管理配置文件竟秫,或者分布式鎖□卫郑”

28.假如讓你實現(xiàn)一個可以遞增的id肥败,你要怎么實現(xiàn)?

我說“可以使用數(shù)據(jù)庫事先生成好”愕提,然后面試官說如果不用數(shù)據(jù)庫呢馒稍?我回答說“可以用Redis解決”,面試官又問:Zookeeper可以實現(xiàn)嗎浅侨?我說“不知道筷黔,沒有用Zookeeper搞過≌叹保”佛舱,面試官說:可以用Zookeeper實現(xiàn)的(后來我去網(wǎng)上搜了一下椎例,確實是Zookeeper很經(jīng)典的用法)

29.還有什么問題想問我的?

答:“暫時沒有”

這個地方建議大家還是問一下请祖,比如向他請教一下之前他問的問題的答案订歪,可能這樣會給面試官留下更好的印象。

30.你能實習(xí)多久肆捕?一周能來幾天

答:“我能實習(xí)將近一年刷晋,一周能來5天”

31.一周能來五天?你們不用上課嗎慎陵?

答:“有課眼虱,下學(xué)期沒課∠Γ”
面試官說:“那你是到暑假才能來了捏悬?”
我說“是的∪筇荩”

32.等HR給你進一步的通知吧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末过牙,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子纺铭,更是在濱河造成了極大的恐慌寇钉,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舶赔,死亡現(xiàn)場離奇詭異扫倡,居然都是意外死亡,警方通過查閱死者的電腦和手機竟纳,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門撵溃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蚁袭,你說我怎么就攤上這事∈В” “怎么了揩悄?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長鬼悠。 經(jīng)常有香客問我删性,道長,這世上最難降的妖魔是什么焕窝? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任蹬挺,我火速辦了婚禮,結(jié)果婚禮上它掂,老公的妹妹穿的比我還像新娘巴帮。我一直安慰自己溯泣,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布榕茧。 她就那樣靜靜地躺著垃沦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪用押。 梳的紋絲不亂的頭發(fā)上肢簿,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音蜻拨,去河邊找鬼池充。 笑死,一個胖子當(dāng)著我的面吹牛缎讼,可吹牛的內(nèi)容都是我干的收夸。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼休涤,長吁一口氣:“原來是場噩夢啊……” “哼咱圆!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起功氨,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤序苏,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后捷凄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體忱详,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年跺涤,在試婚紗的時候發(fā)現(xiàn)自己被綠了匈睁。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡桶错,死狀恐怖航唆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情院刁,我是刑警寧澤糯钙,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站退腥,受9級特大地震影響任岸,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜狡刘,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一享潜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧嗅蔬,春花似錦剑按、人聲如沸疾就。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽虐译。三九已至,卻和暖如春吴趴,著一層夾襖步出監(jiān)牢的瞬間漆诽,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工锣枝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留厢拭,地道東北人。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓撇叁,卻偏偏與公主長得像供鸠,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子陨闹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 所有知識點已整理成app app下載地址 J2EE 部分: 1.Switch能否用string做參數(shù)楞捂? 在 Jav...
    侯蛋蛋_閱讀 2,434評論 1 4
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,139評論 25 707
  • 昨天看了這個挺勵志的電影,有句話很觸動我:“你沒有真的努力趋厉,你現(xiàn)在只是在抱怨寨闹,不管喜歡與否,選擇了就必須竭盡全力君账。...
    伊未閱讀 616評論 0 0
  • 《正面管教》 作者:(美)簡·尼爾森 001 關(guān)注于解決問題 問題出現(xiàn)時繁堡,不浪費精力、時間去追究去懲罰乡数,把注意力集...
    似水流年_8b7d閱讀 291評論 0 0
  • 前天椭蹄,多年未見的灸友彭姐突然到訪,讓我很驚喜净赴,還是原來的樣子沒多大改變绳矩,還是那樣的開朗,說話那叫一個響亮玖翅、利落翼馆。 ...
    艾_一直在閱讀 164評論 1 1