微信社招 6 輪面試(已拿 Offer)

歡迎在留言區回覆

前言

前段時間面試微信的服務端開發崗位,拿到了 Offer,分享一下面試經歷。linux

以前發的一篇文章,已拿 Offer!百度、字節跳動等後臺面經提到了大鵬跳槽離職的狀況,微信的面試流程較長,輪數較多,並且和其餘公司面試流程差別較大,因此單獨寫出來。web

其中涉及項目相關的問題由於因人而異,沒有太大的參考價值,因此沒有列出來,但這個一樣是不可或缺的一部分。面試

第一輪面試

這輪面試整體是問基礎知識,保證面試者基礎過關redis

  1. 公鑰和私鑰區別是什麼,能夠把公鑰當作私鑰,私鑰當作公鑰使用麼?
  2. 加密算法都有哪些?
  3. base64 是加密算法麼?
  4. 解釋下什麼是驚羣效應?
  5. 訪問域名以後會通過哪些步驟,尋找子網的協議叫作什麼,找到進程除了端口號還須要什麼?
  6. 在沒有設置主鍵的狀況下,設置了惟一索引會將其做爲主鍵構建索引麼
  7. 進程和線程的區別,chrome 每一個 tab 之間是多進程仍是多線程,爲何?
  8. DOM 頻繁修改會有什麼問題,如何解決,用虛擬 DOM 有什麼壞處
  9. 限流算法都有什麼,大家使用的算法原理是什麼?
  10. 50 億個公衆號閱讀量找到最多的 10 個怎麼找
  11. sku 和 spu 關係是什麼,如何作屬性關聯的?
  12. 如何查看系統的資源使用狀態,top 中 cache 和 buffer 的含義
  13. 進程間通訊方式都有什麼?
  14. RSA 算法是怎麼個實現原理?
  15. 多個進程寫一個文件如何避免衝突,若是加鎖的話會致使等待時間過長有什麼優化方案麼?(說了個消息隊列)
  16. redis 如何解決緩存穿透問題,若是不肯定 key 的狀況下,存在穿透怎麼辦
  17. 軟件中斷和硬件中斷的區別
  18. 如何理解中斷?中斷的實現原理

第二輪面試

筆試 1 小時

  1. 有 64 匹馬,賽場只有 8 條賽道,請問最少須要比賽多少場才能肯定跑得最快的那 4 匹馬,不能夠藉助計時器給每一匹馬一一計時;算法

  2. 一個桶裏面有白球. 黑球各 100 個,如今按下述的規則取球:chrome

  • i . 每次從桶裏面拿出來兩個球;
  • ii. 若是取出的是兩個同色的球,就再放入一個黑球;
  • iii. 若是取出的是兩個異色的球,就再放入一個白球。
  • 問:最後桶裏面只剩下一個黑球的機率是多少?
  1. 給定字符串 str1 和 str2,將 str2 插入 str1 中,問有多少種插入方法使得新串是迴文。例如:
Str1=lol
Str2=o
總共有四種插入方法,分別獲得olol,lool,lool,lolo,其中能到迴文的方法有兩種。
輸入:
lol
o
輸出:
2
  1. 兩個有序(從小到大)單鏈表,合併爲一個有序的單鏈表。
struct LinkNode{
 int value;
 struct LinkNode *next;
};
struct LinkNode *merge(struct LinkNode *firstLink, struct LinkNode *secondLink)
  1. 公司有內部 bbs,員工都會在上面發帖交流。據統計,有三個員工 ID 發帖不少,他們各自的發帖量都超過帖子總數 N 的 1/4。若是給到你全部帖子的發帖人 ID 列表,請寫代碼找出這三個 ID, 要求時間複雜度 O(n),空間複雜度 O(1)

面試 1.5 小時

其中這裏的面試共有 2 位面試官,第一位面試官問基礎知識,第二位面試官問項目數據庫

  1. 進程和線程的區別?
  2. 什麼是虛擬內存?
  3. 1 億個數字中有 2 個相同,怎麼找?
  4. 訪問一個連接的流程
  5. 訪問 http 爲何會跳到 https
  6. linux 經常使用指令都有什麼?
  7. 如何實現序列化和反序列化
  8. 數據庫索引的結構,有什麼特色?
  9. 堆和棧的關係,對象在堆中內存是連續的麼?
  10. 樂觀鎖怎麼理解?
  11. 數據庫上樂觀鎖怎麼應用的?
  12. 負載均衡都有什麼算法?
  13. arp 協議是怎麼理解的?
  14. http 包的結構是什麼樣的?
  15. tcp 和 udp 區別
  16. tcp 怎麼保證穩定傳輸的?
  17. 限流算法怎麼實現的?令牌桶具體是怎麼實現的?
  18. 交換分區作什麼的?

第三輪面試

本輪面試主要考察面試者項目水平和能力編程

缺點:在某些點上更多的挖掘技術深度數組

第四輪面試

這一輪面試屬於交叉面試,由其餘部門的面試官來面試緩存

問題:如今有一個任務,某個公司要經過微信在早上 10 點鐘發紅包,如今有一個數據庫表,裏面存儲了全部員工的 openId,還有一個微信支付的接口,傳入 1 個 openId 以後能夠進行紅包支付,每次調用時間 1 秒鐘,如何才能儘快的將該任務完成,請寫出三種方案

面試官特地提醒能夠不侷限在題目自己上,這道題要按照真實狀況去處理給出方案

下面是我當時給出的方案

1. 第一種方案

  • 方案:多線程提升併發量,先從數據庫獲取到所有的員工列表信息,而後進行分割,好比按照尾號進行分割,同一尾號的由一個線程來去處理。
  • 優勢:開發簡單,只須要啓動多線程或者線程池便可,可以較大可能的利用服務器資源
  • 缺點:

(1)首先員工的數量並不肯定,把員工數據所有拉取出來可能存在數據量過大的狀況。

(2)還有就是要考慮服務器性能,是否可以知足多線程所需的條件,好比說若是隻有一個 cpu,其實並無達到並行的效果

(3)若是服務器不知足資源的話,這樣的話就要考慮多個機器去執行,多線程放到多個機器去執行還須要額外的開發工做量

(4)這裏面沒有考慮發送失敗的狀況,若是發送失敗還須要有從新發送機制

2. 第二種方案

  • 方案:多進程去提升併發量,啓動多個應用,不一樣的應用去讀取不一樣的數據,好比用尾號來區分。
  • 優勢:方便分別部署在不一樣的服務器上去執行,可以儘量的利用更多的服務器資源去解決問題,若是考慮從新發送的話也方便再寫一個應用去部署新的服務器啓動
  • 缺點:

(1)數據庫在多進程讀取時,數據庫表會不會被鎖住,若是鎖住的話性能就會下降,因此要選擇合適的存儲引擎。

(2)有可能須要佔用更多的服務器資源

3. 第三種方案

  • 方案:和微信支付部門同事協調,單個 openid 發送接口其實並不合理,應該提供批量發送接口,容許發送數組,由於目前最大的瓶頸在接口耗時上面。
  • 優勢:從根本上解決瓶頸問題,也能緩解微信支付端的壓力,不會被臨時的批量調用數據量壓垮
  • 缺點:這個存在的問題是將開發工做量交給了微信支付部門,須要與其協調資源,確保可以按時完成工做

第五輪面試

本輪面試屬於 GM 面試,要講 PPT,前面的面試官讓我好好準備一下,挑出一個本身認爲最有價值的項目講清楚

PPT 講完以後,面試官還試用了下我作的 mdnice 等開源工具,一不當心就被發現了 bug,提出了意見

第六輪面試

本輪面試屬於 HR 面試,會問離職緣由、家庭、城市、薪資和績效等問題

總結

1. 多久能將全部面試面完

我本人面試了半個月完成了全部面試,可是這個速度應該是比較快的,慢的可能會長達一個月的時間,因此建議跳槽面試前作好長期準備

2. 面試完成後就發 offer 麼

面試完成後,其實只是完成了整個流程的一半,距離發 offer 和入職還有很長的時間,一般的流程是

內推 -> 多輪面試 -> 郵件反饋當前薪資 -> 口頭 offer 溝通薪資 -> 正式 offer -> 背調 -> 入職指引 -> 肯定入職時間 -> 正式入職

因此面試是一個長期戰鬥,知己知彼,百戰不殆

3. 工做地點在哪裏

我面試的部門在深圳,微信的崗位大部分都在廣州

4. 想交流面試題和技術怎麼辦

大鵬搞了個技術交流羣,將來不按期發麪試題供你們學習討論,歡迎加微信後回覆「技術」拉你入羣

來個直擊靈魂的三連吧


本文分享自微信公衆號 - 編程如畫(drawcode)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索