微軟 O365 蘇州
一面
- 算法題:給你一個字符串,輸出所有字符能組成的不同的字符串的個數
- 如:AAB,輸出:8(A, AA, AAB, AB, BA, ABA, BAA, ABA)
- 代碼(暴力)
- 有什么想問的問題?
- 小組負責的事情:中國美國雙線匯報、Office 技術上 Azure、Azure 技術引入、老應用服務&容器化
一面補充面
- 中文自我介紹
- 介紹一個在阿里的項目、遇到了哪些難點以及怎么解決的
- 為什么想換工作(答:WLB & 技術挑戰)
- 有什么想問我的(具有什么特質的人更能在微軟發展的更好?)
- 英文問答:解釋序列化和反序列化是什么
- 在記事本上共享屏幕寫題(英文):
- 給一棵樹,實現序列化和反序列化函數,在Windows記事本上手寫,並英文解釋問答
- 面試官說最好用 non-recursive,然后我懵了不會寫最后用的 recursive,代碼
- 問我今天的安排,請假了還是?
Coupang - 上海
一面
基本沒有印象了... 應該是基礎知識面(好像有問 JDK 8 新特征)
二面 - 項目面
- 自我介紹
- 介紹考核項目、遇到的問題、難點、指標介紹等
- 介紹分層項目,遇到的難點,穩定性怎么優化的
- 介紹數據化項目,數據來源等
- 有什么想問的:負責的事情、技術挑戰
三面 - 基礎算法面
- 算法題1:鏈表形式給定2個數求和,LeetCode 原題,現場代碼
- 算法題2:給定一個樹,求樹上的每一個節點,到其他所有節點的距離之和 ,LeetCode 原題,現場代碼
四面 - 進階算法面
- 算法題1:給一個表達式如 1+2*4-5/2,只有加減乘除,問最后結果是多少
- 算法題2:給幾種金額的硬幣,和物品總價值,問有幾種組合法,LeetCode 原題,現場代碼
- 如果有特殊輸入,比如金額或價值為 0 或負數怎么處理(考察邊界、拋異常等)
- 做完還沒結束,問了其他:如何保證消息隊列的 消息不重復、消息不丟失
五面 - 系統設計/架構面
- 設計一個分布式任務調度系統:產品功能、整體架構設計、細節設計
- 設計一個分布式爬蟲系統:Master / Slave 設計、任務調度&優先級、去重、一致性 Hash、存儲 等
- 有什么想問的:日常工作模式和強度(貌似不應該在終面問這個...)
CoinMarketCap - 上海
一面
- Java 中 HashMap 和 ConcurrentHashMap 原理
- 類加載過程、垃圾收集器、Java 內存區域划分、OOM
- 線程狀態、線程池
- 項目開發模式、為什么想換工作
- 有什么想問的:公司狀況、加班情況(據說到 9 點,去了主要做項目遷移)
微軟 Intune 蘇州
一面
- 面試官自我介紹,對方是前端,目前前后端分工比例大概是3:7
- 簡單介紹目前所做的一個項目,技術棧、項目中的角色等
- Java 中 HashMap 的原理,復雜度等
- HTTPS、HTTP 的區別,SSL 加密過程,對稱加密還是非對稱
- 數據庫使用哪些?是否用過 MongoDB,與 MySQL 這類數據庫的區別
- 算法題,可以用 IDE
- 基礎:給二維數組,1 代表有路,0 反之,點可以走向上下左右;給兩個坐標,問是否連通(BFS)
- 進階1:給出兩個點之間的距離,求兩個坐標的最短距離(單源最短路)
- 進階2:給任意兩個坐標,連續查詢是否連通,優化復雜度(並查集)
- 時間剩不多了,想再做題還是問面試官問題?
- 我選擇問面試官問題:組里做的事情、跟美國合作情況、加班情況
二面
- 自我介紹
- 項目中遇到的難點是什么,怎么解決的
- 常用什么設計模式?單例模式在序列化場景會多個,如何解決
- 項目是什么架構?微服務還是單體?互相之間怎么聯動?
- 用的緩存在高可用方面有什么考慮?緩存穿透和雪崩是什么,怎么解決?
- Java 中的 HashMap、HashTable、ConcurrentHashMap,及 1.8 優化
- 算法題1:給一個只有 0 1 2 的數組進行排序;代碼
- 算法題2:實現 LRU:代碼;進階:實現 LFU
三面
- 介紹最拿得出手的項目、具體怎么解決的
- 做題:給一些課程及依賴的前導課程、一個同學想上的所有課程(不想上這之外的課程),輸出上課順序,如果不能上完,返回空
- 進階:這個同學可以上這些課的前導課程了,輸出上課順序;代碼
四面
- 自我介紹,最有亮點的項目介紹
- 短網址服務設計、進階設計(高 QPS)、代碼實現 long2short、short2long;現場代碼
- 如果需要去支持前端的項目,是否願意
- 英語怎么樣(時間不夠沒有問題英語的問題)
- 有什么想問我的,項目的前景、目前的業務開發節奏怎樣
五面
- 這輪是全英文面,附上大佬 LinkedIn:https://www.linkedin.com/in/nathansgreen/
- 面試官介紹整個面試流程、面試官自我介紹
- 英文自我介紹;介紹做過的項目、難點、解決;在項目中的角色,其他人的角色
- 算法題:字符串壓縮,aaaaccdddggg 壓縮成 a{4}c{2}d{3}g{3}
- 用啥語言寫?思路是什么、編碼
- 異常輸入如何解決思路,考慮字符非常多的情況,用 int 是否合適
- 如果使用 bigInteger 用 cplusplus 如何實現?
- 如果使用 bigInteger 在 decompress 時候會不會有問題,如果數據太大會不會爆掉內存,如何解決
- 設計題:一個數據,來自於多個數據源,如果在查詢、排序、過濾的時候都有比較好的體驗?(崩了,本來思路就不是很好,解釋起來還比較麻煩... 面試官怕我聽力有毛病直接手打字了)
- 有什么想問面試官的:What kind of people do well in your team or company?
六面
- 這輪是中文面,附上大佬 LinkedIn:https://www.linkedin.com/in/jeff-liu-82a651107/
- 面試官介紹整個面試流程
- 自我介紹、最優難點的項目
- 日常需求如何管理
- 算法題:給一個數組,數字是有序的,其中缺失1個數,輸出這個數,如 1,2,3,5 輸出 4。思路和code,單步樣例跟蹤講解:現場代碼
- 進階1:如果缺失了多個數,輸出所有缺失的數字,怎么解決?
- 進階2:如果只需要求缺失了多少個數字呢?
- 對於整個面試有什么問題?面試感受怎么樣?有什么想問我的?
心得體會
- 記得幾年前有個阿里同事說,每年都要去外面面試看看,看看自己的水平怎么樣了,也看看外面的行情
- 面試不僅僅是面試官對候選人的選拔,也是候選人對於各公司的很好的了解的途徑。面試官的考察方式、技術水平、是否尊重人、甚至面試邀約安排方式 都很重要
- 好的面試不應該是考察八股文(如紅黑樹旋轉原理),而是引導候選人不斷深入思考,最大程度挖掘候選人的橫向和縱向潛力,再看是否符合公司對人的要求