面經包含:攜程、阿里、京東、騰訊
十一假期,秋招基本上已經結束了,剩下少量面試和少量流程中。雖然還沒有最終決定,不過也還是決定來開個帖子,寫一些總結。
樓主是今年春招的時候開始看看面經,真題做的很少,很水=。=,慚愧慚愧。然後秋招的時候由於實習比較忙,所以基本上就只投了秋招正式批,內推要麼沒投,要麼踩線投,直接沒了音信……
樓主iOS開發,主要用的Swift語言。下面上一些面經,希望能夠對大家有那麼一點點幫助。
今日頭條
樓主春招的時候採用的是廣撒網的戰術(因為當時完完全全是個菜雞,iOS大部分都是邊春招邊學的。。)也是僥倖拿到了頭條暑期實習生的offer,然後陰差陽錯的決定到北京來實習,然後暑期結束之後拿到轉正的offer。
當初巧合來的頭條,來了之後覺得特別好,哈哈,趁機推薦一波。實習工資(正式還沒談)、福利、部門、地理位置都還不錯,到現在也還在實習。
攜程
攜程是一家很令人蛋疼的公司。
內推投了攜程,通過了測評。然後進入了漫長的等待,某周打電話跟我說,問我能不能去上海面試,我說我在北京實習,能不能遠端面試。hr倒是很爽快的答應了,並且約定兩天後面試……
然而,就此被鴿,進入了漫長的等待期。後來給攜程校招組發反饋,終於獲得了面試機會,兩輪面試感覺答得還行,題也不是很難,然而就那麼突然有一天gg了。
攜程面試題
一面
- 請看下面一段程式碼
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 - 請寫出一個單例
- 請寫出程式計算結果
AB兩地相距1000米,小明從A地點以30米/分鐘的速度向B地點走,小白從B地點以20米/分鐘的速度向A地點走,兩人同時出發,用程式碼寫出他們多少分鐘後遇到? - 請寫出程式輸出結果
對陣列 ["12-12","12-11", "12-11", "12-11", "12-13", "12-14"] 去重同時進行排序 - 使用遞迴方法計算99到1相加的計算結果。是否瞭解無尾隨遞迴?
- 請看下面一段程式碼
- (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. 列印“”
二面
- 請說一說UITableView的重用機制
- 請說一說你對Objective-C中property欄位的瞭解
- 請說一說你對iOS中記憶體管理的瞭解。ARC底層時如何實現的?
- 你是如何進行網路層的封裝的?
- 你是如何學習iOS開發的?
阿里巴巴
我對阿里整體印象還是不錯的。春招的時候動作特別慢,基本隔兩週面試一次,最後發offer都等了快一個月。不過這次秋招動作很快,兩天就搞完了三面,兩面技術都是很快,而且也都是問問專案,感覺加起來還沒hr面時間長。
阿里面試題
一面
- 為什麼要用Alamofire而不用原生的NSURLSession,Alamofire的優勢是什麼?
- 如果讓你來封裝一個網路庫,類似於Alamofire或者SDWebImage,你會如何實現?
- 在網路庫中,如何針對TableView快速滾動過程中的圖片額外渲染進行優化(網路庫不能持有TableView)?
二面
- iOS的系統架構是怎麼樣的?常用SDK有哪些?
- 瞭解HTTP協議嗎?GET和POST的區別是什麼?
- 對安全方面有何瞭解?如何應對web頁面被劫持?瞭解HTTPS加密解密的過程嗎
京東
京東總體來說還是體驗不錯的,和前兩面的面試官相談甚歡。整體感覺一面面官很注重基礎,二面面官更看重專案一些,基本上都是根據簡歷和專案來問的。然而就在我志得意滿之時突然接到了三面的電話(說好的只有兩面技術面呢),然後各種懟我……
京東面試題
一面
- 講一講你對iOS記憶體分配的理解?值型別和引用型別?
- 假設ViewController中需要用一個Blcok來改變ViewController中的一個屬性,需要怎麼實現?
- 這樣實現之後,這個Block在記憶體中被存在何處?引用關係又是怎麼樣的?
- 函式中的閉包,如果要求閉包執行完後立刻改變函式中某個變數的值,應該如何實現?
- 如何實現一個類似於微信聊天介面的佈局?
- 如何用Auto Layout實現一個如下要求的佈局: %^&@$^@(#!...... (說了一大堆 =。= 反正就是使用優先順序就解決了)
二面
- 說一說 MVC 和 MVVM 的區別,以及各自的優缺點。
- 如何將 MVC 改造成 MVVM ?在MVVM中,網路請求、快取處理的部分應該放在哪個模組?
- 為什麼說Swift是面向協議的語言?使用 Protocol 有什麼好處?
- 比較一下 Swift 和 Objective-C 在語言層面上的安全性?
- 如果ViewController中使用閉包時,用weak避免迴圈引用,會有什麼問題?
- 當點選一個View時,發生了什麼?如何擴大點選區域?
- 如何對TableView進行優化?
- 能講一講你對光柵化的理解嗎?
三面
- 對Swift和OC有什麼看法?
- 能對Swift中的可選型別談下你的理解嗎?
- 說一下快排的虛擬碼和時間複雜度?
- 怎麼判斷兩個連結串列是否相交?
- 怎麼反轉二叉樹?
- 瞭解元組嗎?
- 瞭解多執行緒嗎?
- 什麼是並行?
- 現在有ABC三個任務,如何實現AB完成後再執行C?
- 對 Runtime 有什麼瞭解?
- HTTP 和 HTTPS 有什麼區別?
- 知道 HTTPS 通訊過程嗎?
- Struct 和 Class 有什麼區別?
騰訊
騰訊的面試真的非常的注重基礎,兩個面官都對iOS不是很懂,而且對專案也沒有太深入的探討,只是讓說了一下專案的架構,感覺就是想確認一下這個東西是不是你自己做的。第一面面完之後完全沒涉及到iOS相關的知識,導致我面完之後問面試官是不是我當時投錯了崗=。=!另外,騰訊HR態度是真的很好,贊一個。
一面
- 為什麼要設計Cache?Cache分級有什麼好處?
- 如何保證多核資料的一致性?
- c++ new 和 malloc 有什麼區別?
- c++ 可不可以多繼承?
- c++ 引用和指標的區別?
- 如何判斷兩個連結串列是否有交點?
- 堆區和棧區有什麼區別?為什麼要這麼設計?
- 給棧增加一個Max函式介面,返回當前棧的最大值,應該如何設計?
- 給定排好序的整數陣列array[]以及整數n,如何找出和為n的兩個數?
- 如果沒排好序呢?
- 一個字串,如何找出只出現一次並且最先出現的字元?
二面
- 反轉字串
- 判斷整數是否為$2^n$
- 一個m*n的棋盤,有些格子不能走,如何找到左上角到右下角的最短路徑?
- iOS 按下 Home 鍵之後會發生什麼?
- c++中記憶體分配是怎樣的?
- c++中常用的容器有哪些?
- queue和vector有什麼區別?
- vector底層是怎麼實現的?
- TCP三次握手?為什麼兩次不行?
- 專案中有沒有伺服器push機制?
結語
秋招投的簡歷不多,面試也就這幾家,還有幾家在安排面試,之後有更新再繼續更新。如果有想看答案的,或者覺得在這裡格式不是很清晰的,我自己也總結了大部分題的答案放在Github