iOS 秋招總結 = 面經 + 閒言碎語

RickeyBoy發表於2017-10-07

面經包含:攜程、阿里、京東、騰訊

十一假期,秋招基本上已經結束了,剩下少量面試和少量流程中。雖然還沒有最終決定,不過也還是決定來開個帖子,寫一些總結。

樓主是今年春招的時候開始看看面經,真題做的很少,很水=。=,慚愧慚愧。然後秋招的時候由於實習比較忙,所以基本上就只投了秋招正式批,內推要麼沒投,要麼踩線投,直接沒了音信……

樓主iOS開發,主要用的Swift語言。下面上一些面經,希望能夠對大家有那麼一點點幫助。


今日頭條

樓主春招的時候採用的是廣撒網的戰術(因為當時完完全全是個菜雞,iOS大部分都是邊春招邊學的。。)也是僥倖拿到了頭條暑期實習生的offer,然後陰差陽錯的決定到北京來實習,然後暑期結束之後拿到轉正的offer。

當初巧合來的頭條,來了之後覺得特別好,哈哈,趁機推薦一波。實習工資(正式還沒談)、福利、部門、地理位置都還不錯,到現在也還在實習。


攜程

攜程是一家很令人蛋疼的公司。

內推投了攜程,通過了測評。然後進入了漫長的等待,某周打電話跟我說,問我能不能去上海面試,我說我在北京實習,能不能遠端面試。hr倒是很爽快的答應了,並且約定兩天後面試……

然而,就此被鴿,進入了漫長的等待期。後來給攜程校招組發反饋,終於獲得了面試機會,兩輪面試感覺答得還行,題也不是很難,然而就那麼突然有一天gg了。

攜程面試題

一面

  1. 請看下面一段程式碼static int a = 1; int main(){ int m = 2; char *n = NULL; l = (char *)malloc(100 * sizeof(char)); return 0; }請問訪問m,n,l 3種型別變數的效率從高到低依次是()
    A. lnm
    B. mnl
    C. mln
    D. nlm
  2. 請寫出一個單例
  3. 請寫出程式計算結果
    AB兩地相距1000米,小明從A地點以30米/分鐘的速度向B地點走,小白從B地點以20米/分鐘的速度向A地點走,兩人同時出發,用程式碼寫出他們多少分鐘後遇到?
  4. 請寫出程式輸出結果
    對陣列 ["12-12","12-11", "12-11", "12-11", "12-13", "12-14"] 去重同時進行排序
  5. 使用遞迴方法計算99到1相加的計算結果。是否瞭解無尾隨遞迴?
  6. 請看下面一段程式碼
- (void)viewDidLoad
{
    [super viewDidLoad];
    dispatch_queue_t queue1 = dispatch_get_main_queue();
    dispatch_async(queue1, ^{NSLog(@"222 Hello?");});
    NSLog(@"aaaaaaa");
}複製程式碼

程式結果將輸出
A. 死鎖
B. 列印“aaaaaaa
222 Hello?”
C. 列印“222 Hello?
aaaaaaa”
D. 列印“”

二面

  1. 請說一說UITableView的重用機制
  2. 請說一說你對Objective-C中property欄位的瞭解
  3. 請說一說你對iOS中記憶體管理的瞭解。ARC底層時如何實現的?
  4. 你是如何進行網路層的封裝的?
  5. 你是如何學習iOS開發的?

阿里巴巴

我對阿里整體印象還是不錯的。春招的時候動作特別慢,基本隔兩週面試一次,最後發offer都等了快一個月。不過這次秋招動作很快,兩天就搞完了三面,兩面技術都是很快,而且也都是問問專案,感覺加起來還沒hr面時間長。

阿里面試題

一面

  1. 為什麼要用Alamofire而不用原生的NSURLSession,Alamofire的優勢是什麼?
  2. 如果讓你來封裝一個網路庫,類似於Alamofire或者SDWebImage,你會如何實現?
  3. 在網路庫中,如何針對TableView快速滾動過程中的圖片額外渲染進行優化(網路庫不能持有TableView)?

二面

  1. iOS的系統架構是怎麼樣的?常用SDK有哪些?
  2. 瞭解HTTP協議嗎?GET和POST的區別是什麼?
  3. 對安全方面有何瞭解?如何應對web頁面被劫持?瞭解HTTPS加密解密的過程嗎

京東

京東總體來說還是體驗不錯的,和前兩面的面試官相談甚歡。整體感覺一面面官很注重基礎,二面面官更看重專案一些,基本上都是根據簡歷和專案來問的。然而就在我志得意滿之時突然接到了三面的電話(說好的只有兩面技術面呢),然後各種懟我……

京東面試題

一面

  1. 講一講你對iOS記憶體分配的理解?值型別和引用型別?
  2. 假設ViewController中需要用一個Blcok來改變ViewController中的一個屬性,需要怎麼實現?
  3. 這樣實現之後,這個Block在記憶體中被存在何處?引用關係又是怎麼樣的?
  4. 函式中的閉包,如果要求閉包執行完後立刻改變函式中某個變數的值,應該如何實現?
  5. 如何實現一個類似於微信聊天介面的佈局?
  6. 如何用Auto Layout實現一個如下要求的佈局: %^&@$^@(#!...... (說了一大堆 =。= 反正就是使用優先順序就解決了)

二面

  1. 說一說 MVC 和 MVVM 的區別,以及各自的優缺點。
  2. 如何將 MVC 改造成 MVVM ?在MVVM中,網路請求、快取處理的部分應該放在哪個模組?
  3. 為什麼說Swift是面向協議的語言?使用 Protocol 有什麼好處?
  4. 比較一下 Swift 和 Objective-C 在語言層面上的安全性?
  5. 如果ViewController中使用閉包時,用weak避免迴圈引用,會有什麼問題?
  6. 當點選一個View時,發生了什麼?如何擴大點選區域?
  7. 如何對TableView進行優化?
  8. 能講一講你對光柵化的理解嗎?

三面

  1. 對Swift和OC有什麼看法?
  2. 能對Swift中的可選型別談下你的理解嗎?
  3. 說一下快排的虛擬碼和時間複雜度?
  4. 怎麼判斷兩個連結串列是否相交?
  5. 怎麼反轉二叉樹?
  6. 瞭解元組嗎?
  7. 瞭解多執行緒嗎?
  8. 什麼是並行?
  9. 現在有ABC三個任務,如何實現AB完成後再執行C?
  10. 對 Runtime 有什麼瞭解?
  11. HTTP 和 HTTPS 有什麼區別?
  12. 知道 HTTPS 通訊過程嗎?
  13. Struct 和 Class 有什麼區別?

騰訊

騰訊的面試真的非常的注重基礎,兩個面官都對iOS不是很懂,而且對專案也沒有太深入的探討,只是讓說了一下專案的架構,感覺就是想確認一下這個東西是不是你自己做的。第一面面完之後完全沒涉及到iOS相關的知識,導致我面完之後問面試官是不是我當時投錯了崗=。=!另外,騰訊HR態度是真的很好,贊一個。

一面

  1. 為什麼要設計Cache?Cache分級有什麼好處?
  2. 如何保證多核資料的一致性?
  3. c++ new 和 malloc 有什麼區別?
  4. c++ 可不可以多繼承?
  5. c++ 引用和指標的區別?
  6. 如何判斷兩個連結串列是否有交點?
  7. 堆區和棧區有什麼區別?為什麼要這麼設計?
  8. 給棧增加一個Max函式介面,返回當前棧的最大值,應該如何設計?
  9. 給定排好序的整數陣列array[]以及整數n,如何找出和為n的兩個數?
  10. 如果沒排好序呢?
  11. 一個字串,如何找出只出現一次並且最先出現的字元?

二面

  1. 反轉字串
  2. 判斷整數是否為$2^n$
  3. 一個m*n的棋盤,有些格子不能走,如何找到左上角到右下角的最短路徑?
  4. iOS 按下 Home 鍵之後會發生什麼?
  5. c++中記憶體分配是怎樣的?
  6. c++中常用的容器有哪些?
  7. queue和vector有什麼區別?
  8. vector底層是怎麼實現的?
  9. TCP三次握手?為什麼兩次不行?
  10. 專案中有沒有伺服器push機制?

結語

秋招投的簡歷不多,面試也就這幾家,還有幾家在安排面試,之後有更新再繼續更新。如果有想看答案的,或者覺得在這裡格式不是很清晰的,我自己也總結了大部分題的答案放在Github

相關文章