微軟 ios工程師 社招 面經

微軟中國(Microsoft)面試

1天以內完成,一共5輪,5個工程師,職級不一樣,順序不定,全程英語。算法

一輪:架構

1. 先讓我自我介紹。異步

2. 第一個問題:怎麼優化應用啓動時間。oop

3. whiteboard,給了第一個情景:一個email應用,簡化版的outlook,只有message和contacts兩個tab,須要設計一個架構,讓API讀的數據,能及時給到tabs裏。學習

4. 要作啓動速度的優化,要作下載的優化便於用戶能夠及時看到contacts的內容。優化

5. 給了第二個個情景:有個處理數據的for loop,當數據量在5000如下時,能夠正常運行,可是一旦超過這個量,程序會crash。他給了幾回提示:和對string的操做有關,和autorelease有關。spa

二輪:線程

1. 自我介紹設計

2. 在Xcode上運行了一個contacts頁面:上方一個左右滾動的collectionView,下方一個上下滾動的tableView,這倆東西是聯動的。他在代碼裏設置了不少能夠改善的地方,都和TableView,CollectionView,ScrollView的操做相關。

3. 所有處理完後,時間也差很少了,他回答了我幾個問題,結束。

三輪:

1. 互相作了自我介紹。

2. 而後whiteboard,給了一個情景:一個email應用,就是一個tableView,而後每一個cell是一個messages。他就不停的加follow up:怎麼給cell添加數據;怎麼下載數據;怎麼異步下載,而後回主線程;怎麼作caching;由於我用了一個dictionary,他問我怎麼加快讀寫速度而且防止線程衝突;而後問我若是在第一次的API call裏拿到一堆數據,怎麼把這堆數據以array的形式加到第二個API call,而後把第二個API call回覆的數據加到cells裏。以後靦腆哥帶我去了一個conference room,而後吃了個free lunch。以後開始下一輪。

四輪:

出了道算法:N * M的matrix,裏面有爲1的slot,有爲0的slot。找出全部爲1的slot,而且把相鄰的slots記爲1塊計算size(slots的數量)。輸出:給出array形式的slots sizes,由於會有不少塊,塊於塊之間不相連,要分別計算他們的size。因爲是whiteboard,只寫了pseudo code,15分鐘不到,邊說邊寫弄好了。而後又follow up了一個改進算法space complexity的方法,最後用了25分鐘。

五輪:

給了一道celecrity in the party的算法題:一個party,可能有celeb,可能沒有,全部人都認識celeb,celeb一我的都不認識。全部人以一個array來表示,每一個人是一個Person class,這個class有一個方法,know(person: Person) -> Bool。經過這個方法,來找出celeb。

推薦👇:

若是你想一塊兒進階,不妨添加一下交流羣1012951431

面試題資料或者相關學習資料都在羣文件中 進羣便可下載!

相關文章
相關標籤/搜索