基本信息
事業群:PCG
崗位:移動客戶端開發(iOS、Objective-C語言開發)
實習時間:6月份之后的暑期實習
面試日期:3月30日 - 3月31日
offer call:4月10日(看到很多小伙伴都接到offer call了,內心有一些着急,9號換了ycy頭像)
一面
面試時間一共為:28min,3月30日
問題涉及:iOS項目、操作系統
問題未涉及:計算機網絡、數據結構、算法、場景
項目介紹及相關問題:
APP
1.獲取當前天氣功能為什么要使用協議代理?過程如何?
表述還需加強。
2.是否接觸TableView渲染性能相關的東西?
-
cell的數目,配置tableview數據
重用單元格的形式,數據成千上萬行,最終渲染個數為屏幕上顯示的數目。
往下拉的時候,最上面的cell到最下面來,放置重復渲染,提高手機性能。
-
刷新頁面的兩種方法
-
無動畫效果:tableView.reloadData(),就是相當於執行 cell for row的方法,將結果取出來,再更新視圖
-
將刷新語句放在View.beginUpdates()、tableView.endUpdates()中間,可以提高app的性能
-
基礎問題
iOS相關問題
3.MVC模式,有什么缺點?
介紹了概念和優點。
缺點猜測作答。
4.RunLoop是什么?
-
概念:事件循環對象,在循環過程中處理各種事件(點擊、刷新等),從而保持程序持續運行;在沒有事件處理的時候,會進入睡眠模式,從而節省CPU資源,提高程序性能。
-
為什么需要:一個線程只能執行一個任務,執行完就會退出,如果我們需要一種機制,讓線程能隨時處理時間但並不退出,那么 RunLoop 就是這樣的一個機制。Runloop是事件接收和分發機制的一個實現。
-
Runloop 和線程是綁定在一起的。每個線程(包括主線程)都有一個對應的 Runloop 對象。我們並不能自己創建 Runloop 對象,但是可以獲取到系統提供的 Runloop 對象。
5.點擊事件之后發生什么?
這里沒准備過,跟面試官說是否可以根據已有知識猜測一下流程,面試官說可以。
大概從獲取事件源,執行事件內容方面作答。
操作系統問題
6.進程和線程的區別?
操作系統的概念;異同點;iOS上的進程和線程,多線程。
7.多線程共享資源,如何防止資源問題?
-
資源是否是獨占(獨占鎖 - 共享鎖)
-
搶占不到資源怎么辦(互斥鎖 - 自旋鎖)
-
自己能不能重復搶(重入鎖 - 不可重入鎖)
-
競爭讀的情況比較多,讀可不可以不加鎖(讀寫鎖)
提問環節
我:為什么面試時間較短?
有人面試一個小時,被舉報了。
面試官:是否介意轉正率低?
不介意,先努力轉正,不行可以秋招再投遞。
二面
面試時間一共為:28min,3月30日
問題涉及:iOS項目、網絡、排序算法
項目介紹及相關問題
自由探索科研項目
1.高維數據降維
2.數據稀疏如何處理
3.梯度下降過程
APP
4.網絡請求的第三方庫是什么?
基礎問題
網絡
5.HTTP狀態碼
6.HTTP和HTTPS的區別
算法
7.穩定的排序有哪些?
三面
面試時間一共為:23min,3月31日
項目介紹及相關問題
1.遇到的困難?
反向傳值delegate+protocal;
GCD主線程控制UI刷新。
2.是否了解性能相關的東西?
渲染和多線程
3.是否了解跨平台開發?
不了解,聊了一些前端的東西。
https://juejin.im/post/5b076e3af265da0dce48fe95
social環節
4.為什么想做iOS開發?
5.未來移動端開發的趨勢是什么?
可能以后 Web 和 Native 的邊界會越來越模糊。偏向於Hybrid APP開發。
(我是果粉,面試的時候表現的是熱愛iOS開發。然而說到最后,面試官老師說未來的趨勢是安卓,感覺就有點崩了。最后建議我了解跨平台開發。)
HR面
時間:9min,3月31日下午4點半
自我介紹+哪里人+是否願意來深圳之類的問題。
offer call
時間:2min,4月10日上午11點
確認個人信息、部門、崗位、工作地點。
通知今日之內會發放offer到郵箱。