天天看點

微軟 ios工程師 社招 面經

微軟中國(Microsoft)

1天之内完成,一共5輪,5個工程師,職級不同,順序不定,全程英語。

一輪:

1. 先讓我自我介紹。

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

3. whiteboard,給了第一個情景:一個email應用,簡化版的outlook,隻有message和contacts兩個tab,需要設計一個架構,讓API讀的資料,能及時給到tabs裡。

4. 要做啟動速度的優化,要做下載下傳的優化便于使用者可以及時看到contacts的内容。

5. 給了第二個個情景:有個處理資料的for loop,當資料量在5000以下時,可以正常運作,但是一旦超過這個量,程式會crash。他給了幾次提示:和對string的操作有關,和autorelease有關。

二輪:

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

面試題資料或者相關學習資料都在群檔案中 進群即可下載下傳!

0人點贊

日記本