本人系雙非渣本軟體工程的大三學生,春季校招季投了一大波簡歷,本文先記錄一下騰訊的面試經歷。
從 3 月初開始網申到 3 月 15 號接到面試通知。我投的是 iOS 移動開發崗位,沒有部門要求。這次接到的面試邀請是騰訊北京 OMG 事業部的。
一面
面試地點就在騰訊北京的辦公樓(海淀區知春路希格瑪大廈),一面的內容大致如下:
- 對什麼語言比較熟悉?Objective-C(面試過程中簡稱 OC)或 Swift?
我平時寫 OC 會多一些,Swift 也在研究。 - 簡述一下 OC 與 Java 以及 JavaScript 之間的區別,從效能、執行方式上談。
這裡我簡單說了一下我的理解,主要圍繞著 Runtime、VM 以及型別系統說的。 - OC 與 Java 在記憶體管理上有什麼區別?
典型考察 GC 與引用計數的區別,很簡單。 - 瞭解 OC 的 GC 機制嗎?
OC 實際上曾經在 macOS 中支援 GC 機制,不過後來被廢除了,NSZone
其實就是為了 GC 而產生的。這裡也只是簡單提了一下。 - 談印象深刻的專案,主要的技術難點。
這裡我談了談我自己上架過的 app —— PicSaver,主要技術難點在於如何獲取使用者在網頁上點選的圖片(使用 JavaScript 指令碼注入,JS Bridge 通訊)。 - 圍繞上一個話題,談一談你對 JavaScriptCore 的理解,JS Bridge 的工作原理(JS 如何調 native code)以及 UIWebView 和 WKWebView 的區別。
圍繞 OC Runtime 分析了一波,又談了談WKWebView
的多程式渲染。 - 看過開源框架的原始碼嗎?
我簡單說了說 AFNetworking 和 ReactiveCocoa。 - AFNetworking 的設計思路。NSURLSession 和 NSURLConnection 的區別。
- 簡述一下 OC 中物件的記憶體佈局。
- OC 中 KVO 的實現原理。
isa Swizzling - 手寫演算法題,判斷 x 是否為 2 的乘方。
很簡單,我先寫了一種遞迴的方法,然後面試官暗示我不要用四則運算和取模,我又寫了一種位運算的方法(Bit Counting 的一種高效實現)。 - 簡述演算法題,字串最長無重複子串。分析一下時間複雜度和空間複雜度。
Two Pointer + 雜湊表即可。最差情況下時空複雜度均為 O(n)。
一面就這麼告終了,當時感覺很簡單,面試官看起來也很滿意,然後讓我稍等一會,馬上就安排了二面。
二面
- 談談 Swift 中的 nil,與 OC 中 nil 的區別。
我本以為是考察Optional
型別,實際上面試官想考察 OC 的nil
是指標型別的一個取值,而 Swift 中的nil
在型別層面可以賦給值型別和引用型別。 - Swift 中 struct 與 OC 中 class 的區別。
也是考察值型別與引用型別的區別的。 - 值型別在函式間傳值時的效能問題。簡述 COW(Copy-on-Write)。
- 簡述一個 HTTP 請求的整體過程。如果有 HTTPS 呢?HTTP/2(及 SPDY 這種實現)瞭解嗎?
- 演算法題,填充矩陣:
1 2 3 4
考慮邊界情況,大致思路就是用方向向量來控制 x, y 座標,按方向一直填充即可,使用合理方法來處理碰撞檢測即可。可以寫虛擬碼。
10 11 12 5
9 8 7 6 - 網路通訊時通常採用什麼格式?除 JSON 以外的?
這裡我簡單談了談 Protobuf,面試官繼續問 Protobuf 二進位制的好處,我簡單說了下其結構上帶來的頻寬優化(體積更小),以及 Parser 解析的大致過程。 - 聽說你對前端有所瞭解?可否給我這個“外行”講一講 Vue.js?
- (面試官明顯不是外行)簡述 Vue.js 與 Angular 的相似之處,它們與 React 又有什麼區別?簡單談談 Virtual DOM、MVVM 設計模式。
- C++ 瞭解嗎!!
我擦,套路題?趕緊回答只是略微瞭解而已。可以看懂程式碼,能寫簡單程式。 - 日常 ending,你還有什麼想問的嗎?
簡單問了下實習生的工作,騰訊這邊更希望實習生做一些研究性質的工作,探索一些技術新方向,當然你也可以選擇寫業務。
大致就記住了這些問題,面試過程中還有更多瑣碎的小問題,就不一一贅述了,兩面總共面試了 1 個多小時,整體的過程還是很輕鬆的,問題回答得基本都讓面試官比較滿意。
HR 面
二面結束後大約一個小時,簡歷狀態變為 HR 面,如果不出意外,接下來一個周左右的時間我將會迎來所謂的 HR 面,技術面應該告一段落了。
說一下我現在的狀況吧,3 月 19 日入職石墨文件,前端開發實習生(我技術方向太雜了 ?),主要負責石墨桌面客戶端(Electron + React)的開發與效能優化。接下來的職業規劃就要根據其它公司的面試進展來決定了,目前待面的還有螞蟻金服支付寶團隊。嗯,先寫到這~