從業4年網際網路寒潮下我的面試總結(美團\陌陌\百度\阿里\京東)

忙碌的程式設計師發表於2019-05-21

已經凌晨2點多了 ,看來今天是失眠了,反正睡不著,寫篇日記總結一下我最近面試經歷吧。

2019年5月1日辦理了離職手續,離開了萬通中心,也算是和我的第二個東家正式說了再見,其實還是很喜歡國貿的,

這是個美妙的地方,容納著很多金融界人才們的夢想,每每晚上走到這裡你會感嘆帝都的夜景好美,只可惜這裡的多數人都顧不上欣賞這裡的風景,

每個人都生活在壓力下,成為了金錢的奴隸,但這並不是什麼壞事,因為他們上有老下有小,身上揹負著責任,也正是他們的身體力行才造就了CBD的繁華,

而我最終選擇了離開這個地方。

我從不否認我的離開和錢有關,這確實是其中一個因素,我也像所有人一樣揹負著責任,所以我需要錢,但我更想說這次的離開是為了尋求一個對我而言更大的舞臺,

讓自己更加快速的沉澱和成長。我曾經試圖向我的領導們陳述我的價值觀,我並不認為錢和理想是互斥的,難道賺的越少你的工作就越有價值麼,很明顯不是的。

美團網

美團
美團

第一個投的是美團網,去年剛上市的,發展比較迅速、美團的技術在國內也是數一數二的。

先填了一份資料,然後是就是面談了

演算法和資料結構以及架構設計方面,答的很不好,好多都忘了。

一 、自己實現一個hashMap,這個難不倒我,jdk的原始碼中最熟悉的就是Collection包了,使用陣列和內部類完成雜湊表的資料結構,

再透過hash演算法和連結串列操作完成雜湊表的插入查詢等操作;

二 、併發程式設計中的生產者消費者模式程式碼,沒寫出來,忘記了,真是不應該哦,最簡單的方式就是使用wait和notify去阻塞喚醒(這麼基礎的東東我都能忘),

當然還有很多優雅的寫法,比如使用可重入鎖(ReentrantLock),使用鎖計數器(CountdownLatch)等,當時一種都沒想到,自責中;

三 、字串的一道演算法題,這類小case,就是點陣圖法,毫無壓力的寫出;

四.、寫一個自己熟悉的架構圖,於是我把我的老東家的系統架構搬了上去,簡單來說就是透過hessian將前臺呼叫邏輯與後臺業務邏輯解耦,

實體可以透過序列化和反序列化傳遞(這是hessian最擅長乾的事情),最終提高後臺業務邏輯介面的可重用性以及系統的可維護性。

還有兩三道題目忘記是什麼了。時間還是很緊的,只有一個小時時間。交卷之後開始面試,一面繼續聊了聊jdk的Collection包,

還有就是之前在公司所做專案的部署思想。二面就是聊聊java併發鎖機制,為什麼要用讀寫鎖而不用synchronized這種同步鎖,事務隔離性的理解,

為什麼會有髒讀,可重複讀,提交讀等,spring的事務管理是如何實現的,程式設計式如何實現,aop式如何實現,動態代理的原理是什麼,

事務的傳播性的理解。總之都是這類比較重視原理的問題,答的還可以吧,最後就是部門負責人來直接面試,談談為啥離職,期望薪資什麼的,也聊了下技術。

問我會不會來,最後我回答我考慮一下,下週三給回覆,然後就離開了。感覺公司環境很好,飲料零食什麼的都是免費吃。

360

360
360

第二個去的是360,沒有筆試,直接面試,一面主要問基礎,String內容存放在哪兒,答執行時常量池,然後我把jvm的記憶體結構講了一下,

堆、棧、程式計數器、方法區等,每塊區域的作用之類的,那麼問題就來了,jvm的回收機制是什麼,感覺問的有點大,不知道從哪兒說起,

只好從分代回收演算法說起了,從GC ROOTS的引用鏈機制到新生代的小空間複製演算法再到老生代的標記清除演算法,最後就是新生代和老生代

之間的關係以及躍遷等,隨後面試官點了點頭說那你再講講jvm的類載入機制吧,委託雙親機制吧,正準備講,那小哥問反射機制是如何

利用類載入機制的呢,只好把反射的實現原理也balalala。。。繼續發問,懂哪些設計模式,答:單例,建造者,觀察者,模板方法模式,

迭代器模式balala,你在專案中用到過觀察者模式嗎,怎麼用的。答:做統一配置元件的時候使用到了zookeeper的釋出訂閱,建立了監聽連結串列,

完成應用系統的註冊和同步,balalala,邊寫程式碼邊講細節,正講的起勁,被打斷,你寫個單例模式吧,把你認為效率最高的單例實現寫出來,

當然是透過jvm的內部類機制實現單例了,又快又安全,看完面試官點點頭,說再寫一個雙檢查的懶漢單例模式吧,好的遵命,寫完後小哥發問,

為什麼要用volatile關鍵字,答:在高併發時會出現併發模式異常,volatile可以防止指令重排,建立物件操作並不是一個原子操作,

分為三個步驟,balala,講了一通,面試官被說服,隨後面試官發問,能不能講講執行緒的記憶體模型,哈哈,幸好以前研究執行緒可見性的時候研究過這個,

講完面試官很滿意,感覺他已經hold不住我了(暗自自喜),談談你對cas的理解,答:是指樂觀鎖嗎,還沒等我說,面試官說好,你等一下,

二面面試官走了進來,開始發問,假設有一個場景,系統需要某個特定時間內響應使用者請求,比如說100ms內完成使用者請求,

但是在最高峰的時候每單位時間幾百萬的使用者請求,也就是高併發,但我必須要實現系統響應及時,而且高可用(不當機),假如你是架構師,

你該如何架構這個系統,聊聊你的方案,當時聽完腦子就蒙了,恨自己當初沒去看那本《大型分散式網站架構》書,於是就開始憑感覺說,

首先肯定需要做快取叢集,防止資料庫雪崩,資料庫如果請求量很大也需要分庫分表,各種亂說,說得自己都暈乎乎的,最後面試官說有的對有的不對,

而且沒說到點子上,不過可以理解,你工作經驗才4年。然後向我介紹了一下他們部門是做什麼業務的,隨後問我為什麼離職等,到飯點了,

我就被拉走了。第二天hr打電話給了offer,聊了聊薪資待遇,360待遇不錯,吃飯還免費,挺好的。

陌陌

陌陌
陌陌

第三個是陌陌,聽說是個xx 的,哈哈哈,只是對社交軟體充滿了好奇,去看看,一面先寫程式碼,寫一個二叉樹的深度遍歷,小case,遞迴搞定,

隨後發問memcache的記憶體管理機制,答:slab分塊管理,最終以chunk分配,維護了一個LRU的雙向列表,balabala。。。然後又問了問zookeeper的一些東東;

二面問的比較雜,大部分不記得了,竟然還問vi命令,我也是跪了。

百度

百度
百度

第四個百度,百度今年是停止社招的,大部分部門都不社招只有校招,但也有少數部門有特批名額,於是就去試了一把,一面剛來就是寫程式碼,

一個單連結串列的演算法題目,寫完,面試官很滿意點點頭,隨後面試官發問在你的專案中spring是如何管理zookeeper的,答:balabala,

瞭解zookeeper的leader選取演算法嗎,講一下他的流程,知道zab演算法嗎,講一下他的流程,汗,問的問題都太變態,沒想到會問的這麼深,

zab演算法太複雜了,zab是基於paxos的,而paxos可是獲得圖靈獎的演算法,勉強說了一下,說的很心虛,有好多盲點自己也沒搞清楚,

不過好在面試官也不往下問了,其實我估計他也不見得會(竊喜),隨後讓我稍等一下;一會兒過後二面面試官過來了,是個成熟的大叔,

二面只問了兩個東西,一個jvm,一個併發程式設計,jvm主要是效能調優,jstack的使用,full GC和minor GC的分析等,併發程式設計問的很細,

發問多個執行緒達到同一個狀態然後再一起執行,達到某一個狀態之後再繼續併發執行,這種怎麼實現,答:jdk5之後有一個CyclicBarrir,

透過這個來實現,它可以重用等balabala說了一些,再發問讀寫鎖中加讀鎖後如何避免寫執行緒餓死,答:加策略balabala,發問如何實

現控制執行緒在某段時間內完成,不完成就撤銷,答:實現Callable介面,返回FutureTask類或者Future介面,然後去觸發撤銷操作。

開始問專案,描述一下對賬系統,balabala…資料量大嗎,併發量高嗎,資料庫怎麼設計的等,隨後讓我等一會,又過來一個面試官,

問我業務,你在第三方支付公司,能不能講一下支付的技術流程,balabala…把自己理解的支付流程講了一下,最後補了一句,

支付的細節業務很複雜,我也沒完全明白呢,汗,讓我等了一會,隨後面試官說你回去等訊息吧,我想完蛋了吧,難道因為業務不熟被刷,

真不甘心;心涼了一個星期,結果hr在星期一打電話說讓星期四去最後一面,是技術總監的面試,星期四屁顛屁顛的去了

(話說百度大廈離國貿太遠了,地鐵每次要坐一個半小時,我也是跪了),四面開始,發問非同步處理的冪等性,不是很難,

唯一性索引或者開發分散式鎖唄,隨後風格立馬就轉了,不問技術了,發問你覺得你來百度能給百度帶來什麼樣的價值,

你希望你加入的百度的團隊是一個什麼樣的團隊,你如何和產品經理溝通,假如你和其他研發介面制定無法統一你該如何解決等,

一點準備都沒有,回答的結結巴巴很是不好,哎,聽天由命吧!

阿里

阿里巴巴
阿里巴巴

第五個面的是阿里,百度面完等訊息,閒來無事檢視公司招聘資訊,看到阿里招聘薪資很誘人。

哈哈,我就是這樣一個無節操的人,開始是電話面試,然後是面試,二面和三面,主要面試技術點有

JVM相關:

  1. jvm中一次完整的GC流程(從ygc到fgc)是怎樣的,重點講講物件如何晉升到老年代,幾種主要的jvm引數等
  2. 你知道哪幾種垃圾收集器,各自的優缺點,重點講下cms
  3. 當出現了記憶體溢位,你怎麼排錯
  4. JVM記憶體模型的相關知識瞭解多少
  5. 簡單說說你瞭解的類載入器
  6. JAVA的反射機制

網路:

  1. http1.0和http1.1有什麼區別
  2. TCP三次握手和四次揮手的流程,為什麼斷開連線要4次,如果握手只有兩次,會出現什麼
  3. TIME_WAIT和CLOSE_WAIT的區別
  4. 說說你知道的幾種HTTP響應碼
  5. 架構設計與分散式
  6. tomcat如何調優,各種引數的意義
  7. 常見的快取策略有哪些,你們專案中用到了什麼快取系統,如何設計的,Redis的使用要注意什麼,持久化方式,記憶體設定,叢集,淘汰策略等
  8. 如何防止快取雪崩
  9. 分散式叢集下如何做到唯一序列號
  10. 設計一個秒殺系統,30分鐘沒付款就自動關閉交易
  11. 如何做一個分散式鎖
  12. 用過哪些MQ,怎麼用的,和其他mq比較有什麼優缺點,MQ的連線是執行緒安全的嗎
  13. MQ系統的資料如何保證不丟失
  14. 分散式事務的原理,如何使用分散式事務
  15. 什麼是一致性hash
  16. 說說你知道的幾種HASH演算法,簡單的也可以
  17. 什麼是paxos演算法
  18. redis和memcached 的記憶體管理的區別等等

後面給了我offer。但是最近996不知道如何選擇。

總結

就寫到這了,寫的有點多了,也算是給這兩個星期面試做一個總結,查漏補缺,祝自己好運吧,也希望正在求職或者打算跳槽的 程式設計師看到這個文章能有一點點幫助或收穫,我就心滿意足了。

作者福利

最近自己也準備了很多的資料面試題也看了很多研究了大半個月,詳細整理了下列的面試真題以及技術知識點剖析的教程,現在我已經基本看完了,現分享給大家一起來提升。

資料獲取:加入學習資料進階QQJava進階之路:908-676-731,透過後方可獲取資源

從業4年網際網路寒潮下我的面試總結(美團\陌陌\百度\阿里\京東)
從業4年網際網路寒潮下我的面試總結(美團\陌陌\百度\阿里\京東)

資料獲取:加入學習資料進階QQ社群Java進階之路:908-676-731,透過後方可獲取資源


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31555445/viewspace-2645104/,如需轉載,請註明出處,否則將追究法律責任。

相關文章