網易面試回憶流水帳

今年校招已然開始,不過對我來講已經結束了。拿到了還算滿意的offer,終於能夠逃離帝都了。
網易內推開始的時候還在某東實習,筆試那天四點多就偷偷溜回學校,幸虧組裏的氛圍比較寬鬆,老大也沒怎麼管我。。。
而後筆試過了,通知我20號去杭州面試,本來覺得過筆試很正常,但發現認識的同窗竟然好多沒過,我就有點詫異,心存僥倖的同時更有點慌亂和緊張,由於實習快兩月了基本上沒怎麼複習過基礎知識。
獲得面試通知後下定決心要抓緊面試前的一段時間好好複習,可當時正好在作組裏的新項目,有點忙,致使實際上只在週末看了兩天筆記、去杭州的高鐵上看了兩小時書。原本還想晚上在賓館裏複習下項目的,然而躺在賓館柔軟的牀上我仍是忍不住打開電視機看起了林丹和李宗偉的奧運會半決賽。。。比賽確實很精彩啊,雖然林丹輸了。。。
次日,起得比較早,提早趕到網易,雖然通知的11點,但報完到後才十點多就讓我去一面。
一面
上來讓我自我介紹,都是套路了:我叫XX,在XXXX學校讀研二,有兩段實習經歷,簡單說了下都是幹嗎的(一個寫Java,一個寫node.js),固然我面的是Java研發,最重要的是給面試官下套的那幾句:我平時喜歡研究併發和網絡編程,看過Concurrent包和netty源碼,也對大型網站分佈式架構感興趣等等。自我介紹固然要言簡意賅,直達技術點,方便麪試官下一步問問題。
自我介紹完,讓我說個項目,又是套路。因而開始裝逼模式,先是從整體上介紹了下簡歷上的RPC項目,我的感受總會有面試官對你的項目不感興趣的,因此介紹時必定要點出用到的技術點,爲了讓面試官有能夠引伸的問題問你。果不其然,他開始轉而問我netty了。其實不少面試官對netty也不太瞭解,那麼我能扯淡的點更多了,從netty的線程模型扯到職責鏈的處理模式,從nio扯到單線程池減小線程切換的損耗,說得面試官一愣一愣的。
而後開始問下一個我山寨github的項目,貌似也沒啥可問的,看到裏面用到了redis,又開始問redis。問題的核心無非就是怎麼作一個redis的高可用性的集羣。因而我又不得不開始裝逼模式,從一致性hash扯到aof和rdb兩種持久化方式,從主從複製扯到zookeeper作master選舉。
後面又問了點jvm的gc算法之類的常見問題,差很少面了半個小時就讓我去hr那等下一步消息。
回到大廳,找個座位,屁股還沒坐熱,hr又喊我名字讓二面了。間隔時間之短,讓我還特地確認了下是否是二面。
二面
面試官上來就說,那咱們就開始吧,竟然沒讓我自我介紹,這是我碰到的第一次。而後面試官說,根據一面的反饋,java web還沒問,那咱們聊聊這個吧。我說那好吧,我就說說我項目裏用到的spring。仍是那個RPC項目,我仔細說了下如何將netty的網絡鏈接融入Spring的bean加載過程中,無非就是實現initializingBean和各類aware結尾的接口。而後又仔細說了下項目中其餘的技術點,好比說本身實現的註解類、實現異步化、心跳檢測等。
接着聊了下併發,concurrent包裏面的一些東西,cas啊,concurrentHashMap啊,countDownLatch啊這些。
而後問我用沒用過MySQL,我大吃一驚,難道有人沒用過麼?固然用過啊。問的也是常見問題,Innodb特性。因而我將Innodb和MyISAM比較了下,什麼行級鎖啊、事務啊、外鍵啊。
接着問行級鎖的原理。我就按我的思考說了下鎖的本質和b+樹的節點,後面又扯到分佈式鎖,答用zookeeper能夠實現,又問還有其餘的實現方式嗎?答能夠用Redis。我還期待面試官問具體的實現原理呢,畢竟zookeeper或者redis我還能夠聊不少,惋惜並無,讓人有點小失望。。。
最後聊的就是一些輕鬆的話題了,像你通常怎麼學習的,平時看哪些書啊,我就說我在看些中間件有關的書。
hr面
hr竟然是個男的,不過說話也挺溫柔的。。。問了好多我在某東實習的狀況,說他是從某東跳過來的,聊的還挺好。
本來覺得就結束了,可hr讓我再等等,我不解,hr告訴我說還可能有總監面,當時就懵逼了,總監面是個什麼鬼。
總監面
等了十來分鐘,真的叫了個人名字。hr對着我微笑,起身離開座位,說跟我來。搞得我很茫然,這架勢,是要幹嗎呢。而後將我送到了一個女的旁邊,目測是總監祕書之類的,可是總監已經來了。總監和我隨便聊了兩句,帶我進了一個小房間。
總監看了下簡歷,上來就問技術問題,徹底不按套路出牌。先讓我說個項目吧,那我就說那個RPC唄,反正都說了不知道多少遍了,然而剛開始才說到動態代理,他就打斷我,問動態代理是怎麼實現的,答了下jdk裏的動態代理和cglib的動態代理實現,又問cglib動態代理怎麼實現的呢,就說了下字節碼加強和裝飾者模式。
接着回到項目,我繼續說序列化,又打斷我,問都有哪些序列化方式呢,扯了下hessian、msgpack、protocol buffer。問爲何項目中用protocol buffer呢?其實我也不知道爲啥,我就用了啊。。。固然我不會這麼回答的,就說什麼查找的資料,protocol buffer序列號壓縮生成的字節少,佔用網絡帶寬少等。但是總監畢竟是總監,不依不饒的繼續問那這些序列化方式都是具體怎麼實現的啊?實現原理都有什麼區別呢?當時我就不行了,我靠,這我哪知道啊,我以爲也沒幾我的知道吧,畢竟壓縮字節的算法可不是幾句話就能搞定的。僞裝思考半天,總監接着說,那你在紙上寫個壓縮字節的代碼吧,好比int是怎麼壓縮的?瞬間我感受要完蛋,歷來沒思考過這種問題,一點思路都沒有。然而我仍是淡定的拿起紙筆,寫了個函數名和一個括弧。。。
最後我寫了一堆沒用的邊界檢查之類的湊數代碼,總監說,時間有限,寫完了嗎?我裝做一臉無辜,這個題有點難,我一時半會寫不出來,我給你說說思路吧。扯了點移位這類的想法。總監也沒繼續糾纏這個,接着問其餘的。
接着問nio,這個我熟啊,說了半天byteBuffer、channel、selector這些。然而總監依舊不按常理出牌,問爲啥要用byteBuffer啊?最本質的緣由是什麼?爲啥不用byte數組啊?我說了一些本身認爲的緣由,貌似他不是很滿意,最後給我整急了,我說若是須要用直接內存的話,byte數組是不能申請的,只有經過ByteBuffer的allocateDirect()方法才能,總監纔沒繼續這個問題。
後面接着聊中間件,問mq消息隊列的原理。如何持久化,持久化的格式是什麼,爲啥會有重複發送消息,怎麼避免。瞭解哪些網站的架構,說說看。因而我以知乎這個網站從最開始建立到如今比較大的流量怎麼演變的技術架構爲例,扯到口乾舌燥,然而總監盯着電腦,也不看我一眼。還問了一些亂七八糟的像tcp啊,mysql的索引b+樹,爲啥要用b+樹,機械磁盤讀取時間,內存讀取時間等等。
最後問了一個小時左右,感受累到不行,總監點點頭,對我說你去找下hr問問後面流程吧。
就這樣結束了一天的面試。大概在下午四點多的時候。
心情頓時輕鬆了很多,感受仍是有但願拿offer的。而後就去找師兄吃飯去了。
次日,坐上高鐵抵達北京,結束了校招的第一次面試,也是最後一次。java

回憶起從今年三月份開始準備找實習開始,雖然一直各類擔憂和焦慮,一路走來也算是比較順利和幸運了。算是沒有辜負本身這些年的努力吧。
之後路還很長,希望本身能一直保持技術的熱情和好奇心吧。node

相關文章
相關標籤/搜索