可貴的一次技術面——終得小米offer

前言

從面試到如今已有一個多月了,面試的問題還記得八九成。端午節前剛從上家離職趁着假期有空把面試問題總結一下。主要是記錄一下問題,答案三言兩語寫不完,網上有蠻多文章講的挺好因此本文再也不展開。java

技術棧

java, golang, js, python 主要是前面兩個。python

面試總結

  1. 其餘Java團隊leader面
  2. 其餘Golang團隊leader面
  3. 本團隊leader面
  4. 總監面

之因此把面試總結放前面是由於頭一次寫文章沒經驗下面排版太樸素了,怕你們看不下去因此先簡單幾句話概況。面試總共4小時,4輪。回憶了一下大概回答了90~95%左右,整體感受還能夠。給個人印象這幾個面試官都很專業,問題質量也挺高,人也很nice。mysql

此次面試像是照鏡子知道了自身的不足,接下來還需紮實沉澱技術。增強算法能力。理解源碼。努力不負每次機會c++

2年前從sz回到wh 而後才感覺到sz的好。屬於後知後覺類型。看着之前用友的同事們一個個跳的都挺棒(阿里、騰訊、阿里、百度、京東、美團、網易等等)本身再看下本身感受在荒野求生git

沒啥愛好這幾年除了玩玩遊戲就是看看技術,也沒考慮過人生追求,可是最近半年思考了一下人生忽然知道了本身想要什麼(都二十八九歲立刻奔三了這也太后知後覺了)github

統計下數據算個賬golang

19年wh 投了50+ 面了4個 拿到2個。。大部分是不回覆。面試

17年wh 投了10多個 面了7個 拿到4個。(後來某種緣由拒絕了訊飛的offer、選擇了某公司)redis

12~16年sz 數據不記得了。雖然本身是個弱雞可是感受工做挺好找。(16年用友)算法

因此19年wh真是神奇,我一度懷疑是簡歷太水了,發給sz、hz朋友看他們說還好啊沒問題。難道是特朗普貿易戰搞的招聘困難?【微笑】

本文標題怎講

講個真實的笑話,前一陣子在wh面一家小公司架構師職位 場景:4我的同時面我,一個大桌子,總經理辦公室

總經理:你要不要作銷售啊 之前作過銷售嗎?

我:尷尬的說作銷售太難了我沒這個能力。(【黑人問號】爲啥一開始就跟我聊這個,難道我看起來這麼沒有技術含量?我投了幾十個簡歷了興奮的來這裏你跟我說這?這對的起我認真的態度嗎?)

總經理:哦!你公司作硬件產品的啊!(我簡歷裏有寫NLP機器人項目)

我:「這是個軟件產品」(what the f**k,大哥哥你對我有嚴重的誤解。)

總經理:那就讓技術總監來面一下吧(估計是讓他沒面子了)

開始技術面

他: 介紹一下你作的項目

我: 介紹某個項目的背景,說了下項目是幹啥用的,簡單提了一下技術棧 大概5~6分鐘 由於要互動因此不能一我的說過久

他:GRPC是幹什麼用的,大家爲何不用http restful來作呢

我:遠程調用 基於http2 有4中調用方式 序列化協議採用protobuf(內心想這麼多內容了你一個個的問吧)

他:好的,我技術面完了

總經理補了幾句總結性的客套話 面試結束

【WTF 這就結束了?】這才15分鐘不到?我就這樣被淘汰了?嗯是的【微笑】

ok 綜上所述 抱着終於獲得了一次技術面的心情寫下這個題目。

一面 Java

主要是Java基礎 框架原理

  1. 詳述線程池構造方法有哪些各有什麼用、ctlallowCoreThreadTimeOut變量的做用,初始化階段、大量提交任務階段、執行完全部任務階段這寫過程。(addWorker過程和其它部分回答得不錯 runWorker getTask的一些細節回答的很差。線程池是Java躲不開的問題 網上有不少答案再也不細說。)
  2. HashMap數據結構,resize過程,若是多線程去操做會出現哪些問題,1.7和1.8有什麼變化,既然提到了紅黑樹那麼來聊聊它和BSTAVL各自有啥特色有啥區別,說一下平衡過程(ok。這個是基礎內容網上一大把答案再也不細說)
  3. 接下來聊聊concurrenthashmap怎樣保證線程安全的1.7和1.8區別(ok)
  4. 線程有幾種狀態,sleep wait 區別(ok)
  5. synchronized Lock區別,synchronized工做原理對象頭、JVM中鎖的優化,再聊聊併發包的AQS、公平鎖非公平鎖 讀寫鎖、CAS和底層的unsafe(ok)
  6. JVM內存結構,堆的內存結構哪些是線程共享的呢,使用過javap命令嗎結合這個命令你個談談對JVM內存各個區的理解。調優相關。(ok)
  7. 聊一下GC可達性分析算法、哪些對象能夠做爲GC ROOT,根據新生代老年代特色的不一樣來講一下他們適合使用哪些垃圾回收算法。對比一下標記清除標記整理。(ok)
  8. 類加載器雙親委派安全沙箱機制(ok)
  9. 聊聊IO吧,BIONIOIO模型,jvm怎樣實現NIO的呢(ok。還好以前略看了一下JVM這一塊的c c++代碼。多路複用 非阻塞之類的就不細說了。說幾個關鍵點,IO模型參照《unix網絡編程》。selectpollepollfcntl
  10. 巴拉巴拉聊項目牽扯出一堆問題 一致性hash算法、分佈式事物、Service Mesh實踐、rabbitmq(基本ok)
  11. TCP滑動窗口 ACK機制。(ok)
  12. zuul、hystrix、feign工做原理,springmvc工做原理(ok)
  13. 舉例說明spring中使用到的設計模式(ok,掘金有這個文章)
  14. git使用規範、gitflow(ok)
  15. dubbo 相關問題(ok)

二面 golang

  1. Golang 的併發模型(回答的通常 M、P、G)
  2. 聊聊gin源碼 路由、group、middleware &設計模式(路由的實現用到了前綴樹這個回答得很差 ,其它ok)
  3. grpc4種調用方式,你看過grpc golang版源碼 client --> server這個過程你講一下。protobuf協議 GRPC 性能優化,http2 (ok,這個印象深入在上家公司時候還作過度享)
  4. cap原理,註冊中心選型AP or CP。
  5. etcd是CAP的哪一種?etcd數據一致性算法是?詳述raft協議,發生分區隔離以後會怎樣,隔離恢復以後怎樣保證數據一致性?(ok,說raft以前先說了一下Paxos 後來引出了Raft 對比一下,而後開始講raft各類狀況 極力推薦去這裏看看 raft.github.io/)
  6. 你說看過源碼那聊一下gomicro吧(說了一下各類組件每種適合作什麼事,講了一下咱們的項目中微服務用到了哪些,上家公司gomicro技術棧是我推進的因此這裏回答得還能夠。)
  7. 聊一下大家沒有采用gomicro的時候大家的微服務是怎樣實踐的(註冊中心發現用的etcd,lease續期、服務降級、限流、熔斷、緩存、一致性hash等負載均衡策略實現,GRPC,golang版rabbitmq客戶端&斷網重連。不像spring cloud或gomicro不少現成的能夠用這些都是手擼 固然這是個人團隊共同完成的,這過程當中收穫蠻多因此不要排斥學習另外一門語言或者技術棧 每每會對本身打開一扇窗)
  8. golang壓測pprof,火焰圖,結合項目講一下架構推演 性能提高點(OK)
  9. 大家項目結構和依賴管理(OK,這裏不得不吐槽一下 godep、glide真的不如maven好用)
  10. 遇到過哪些坑(使用etcd過程當中遇到的坑,使用不當形成的協程泄露以及如何避免的,watch、lease、空間壓縮、等)
  11. 使用golang你印象深入的是啥(協程,chan、select這是絕壁是巨好用的,defer,panic&reverse)
  12. golang編碼規範、日誌規範(這裏要提一句規範很重要,架構演進的時候作重構深有體會,然而並無很統一的規範像Java阿里規範那種,對於分包官方並無給出一個推薦的目錄劃分方式 因此google而後根據自身體會制定了一個團隊內部規範 後來發現掘金有一篇文章有所共鳴並嚴重贊同 draveness.me/golang-101 日誌框架並無Java直接採用slf4j 下面用 log4j2或logback那麼果斷,選之又選決定用logrus,團隊的QL同窗根據需求定製了)

三面 綜合

  1. kafka工做原理、零拷貝、分組協調器工做原理、offset相關問題
  2. 鏈路追蹤 SkyWalking、zipkin 各自特色和實現原理,Java探針
  3. mysql 鎖、索引、事務,大數據量優化 分表分庫方案
  4. redis線程模型 skiplist ziplist數據結構,持久化方案 rdb快照備份的過程(copy-on-write這個回答的很差 我只知道Java的copyonwrite ,Linux fork進程具體操做不清楚)。淘汰策略,緩存穿透 大規模失效解決方案
  5. 手寫代碼算法題 假設有兩種操做符*和- *表明×2 -表明減一,給你兩個數 a,b 要求計算出從a通過這兩種運算獲得b最少多少步 (ok,算法不是我強項,這題刷算法的時候也沒作過還好給的比較簡單,大概10多秒有思路 幾分鐘寫了一下不太完整 讓我講了講思路 使用二叉樹去作)
  6. 聊一聊感興趣的技術 將來發展方向(技術方面)

四面 總監

不詳述了 就是如下這些問題

職業規劃、爲何跳槽、興趣愛好、瞭解一下性格、自我評價上一份工做經歷等,我也問了一些問題互動了一下。

面試結束,回去等HR通知。

最終拿到offer

這兩年的經歷一句話歸納。

對就是這樣,不要看輕一我的。

最後祝團隊剩下的小夥伴猥瑣發育。

相關文章
相關標籤/搜索