記錄騰訊 2018 春季實習生校招面試經歷(Offer)

本人系雙非渣本軟件工程的大三學生,春季校招季投了一大波簡歷,本文先記錄一下騰訊的面試經歷。前端

從 3 月初開始網申到 3 月 15 號接到面試通知。我投的是 iOS 移動開發崗位,沒有部門要求。此次接到的面試邀請是騰訊北京 OMG 事業部的。面試

一面

面試地點就在騰訊北京的辦公樓(海淀區知春路希格瑪大廈),一面的內容大體以下:算法

  1. 對什麼語言比較熟悉?Objective-C(面試過程當中簡稱 OC)或 Swift?
    我平時寫 OC 會多一些,Swift 也在研究。
  2. 簡述一下 OC 與 Java 以及 JavaScript 之間的區別,從性能、執行方式上談。
    這裏我簡單說了一下個人理解,主要圍繞着 Runtime、VM 以及類型系統說的。
  3. OC 與 Java 在內存管理上有什麼區別?
    典型考察 GC 與引用計數的區別,很簡單。
  4. 瞭解 OC 的 GC 機制嗎?
    OC 實際上曾經在 macOS 中支持 GC 機制,不事後來被廢除了,NSZone 其實就是爲了 GC 而產生的。這裏也只是簡單提了一下。
  5. 談印象深入的項目,主要的技術難點。
    這裏我談了談我本身上架過的 app —— PicSaver,主要技術難點在於如何獲取用戶在網頁上點擊的圖片(使用 JavaScript 腳本注入,JS Bridge 通信)。
  6. 圍繞上一個話題,談一談你對 JavaScriptCore 的理解,JS Bridge 的工做原理(JS 如何調 native code)以及 UIWebView 和 WKWebView 的區別。
    圍繞 OC Runtime 分析了一波,又談了談 WKWebView 的多進程渲染。
  7. 看過開源框架的源碼嗎?
    我簡單說了說 AFNetworking 和 ReactiveCocoa。
  8. AFNetworking 的設計思路。NSURLSession 和 NSURLConnection 的區別。
  9. 簡述一下 OC 中對象的內存佈局。
  10. OC 中 KVO 的實現原理。
    isa Swizzling
  11. 手寫算法題,判斷 x 是否爲 2 的乘方。
    很簡單,我先寫了一種遞歸的方法,而後面試官暗示我不要用四則運算和取模,我又寫了一種位運算的方法(Bit Counting 的一種高效實現)。
  12. 簡述算法題,字符串最長無重複子串。分析一下時間複雜度和空間複雜度。
    Two Pointer + 哈希表便可。最差狀況下時空複雜度均爲 O(n)。

一面就這麼了結了,當時感受很簡單,面試官看起來也很滿意,而後讓我稍等一會,立刻就安排了二面。設計模式

二面

  1. 談談 Swift 中的 nil,與 OC 中 nil 的區別。
    我本覺得是考察 Optional 類型,實際上面試官想考察 OC 的 nil 是指針類型的一個取值,而 Swift 中的 nil 在類型層面能夠賦給值類型和引用類型。
  2. Swift 中 struct 與 OC 中 class 的區別。
    也是考察值類型與引用類型的區別的。
  3. 值類型在函數間傳值時的性能問題。簡述 COW(Copy-on-Write)。
  4. 簡述一個 HTTP 請求的總體過程。若是有 HTTPS 呢?HTTP/2(及 SPDY 這種實現)瞭解嗎?
  5. 算法題,填充矩陣:
    1  2  3  4
    10 11 12 5
    9 8 7 6
    考慮邊界狀況,大體思路就是用方向向量來控制 x, y 座標,按方向一直填充便可,使用合理方法來處理碰撞檢測便可。能夠寫僞代碼。
  6. 網絡通訊時一般採用什麼格式?除 JSON 之外的?
    這裏我簡單談了談 Protobuf,面試官繼續問 Protobuf 二進制的好處,我簡單說了下其結構上帶來的帶寬優化(體積更小),以及 Parser 解析的大體過程。
  7. 據說你對前端有所瞭解?能否給我這個「外行」講一講 Vue.js?
  8. (面試官明顯不是外行)簡述 Vue.js 與 Angular 的類似之處,它們與 React 又有什麼區別?簡單談談 Virtual DOM、MVVM 設計模式。
  9. C++ 瞭解嗎!!
    我擦,套路題?趕忙回答只是略微瞭解而已。能夠看懂代碼,能寫簡單程序。
  10. 平常 ending,你還有什麼想問的嗎?
    簡單問了下實習生的工做,騰訊這邊更但願實習生作一些研究性質的工做,探索一些技術新方向,固然你也能夠選擇寫業務。

大體就記住了這些問題,面試過程當中還有更多瑣碎的小問題,就不一一贅述了,兩面總共面試了 1 個多小時,總體的過程仍是很輕鬆的,問題回答得基本都讓面試官比較滿意。性能優化

HR 面

二面結束後大約一個小時,簡歷狀態變爲 HR 面,若是不出意外,接下來一個周左右的時間我將會迎來所謂的 HR 面,技術面應該告一段落了。markdown


說一下我如今的情況吧,3 月 19 日入職石墨文檔,前端開發實習生(我技術方向太雜了 😂),主要負責石墨桌面客戶端(Electron + React)的開發與性能優化。接下來的職業規劃就要根據其它公司的面試進展來決定了,目前待面的還有螞蟻金服支付寶團隊。嗯,先寫到這~網絡

相關文章
相關標籤/搜索