萌新iOS面試官迷你廠第一視角
- 2020 年 1 月 2 日
- 筆記
image
今年的環境很差,很多大廠繼去年的寒冬之後,今年又裁了一波(本地就有兩個大廠上了新聞-。-),我有兩個哥們也是最近進入了找工作的狀態。由於我之前做過一段時間的面試官,負責了一段時間iOS端的技術招聘,他們也諮詢了我不少關於這方面的細節,借著這個機會,以一個初級面試官第一視角介紹下招聘方的想法。
其實距離現在已經有段時間了,大幾個月前吧,那是在我還在前東家的時候,前東家是一家規模不大的公司,兩層的寫字樓,百來號人,環境算偏一線吧,但是名氣不大,不算好招人。然後有一天,老大突然和我說,再招兩個人吧,我們要擴一條產品線,做一個類似迷你版滴滴的新產品。(這是背景)
那時候其實我們組就我一個 iOS 開發,當時已經有一個 App 上架了, 突然擴招兩個人其實對我們當時的項目來說,其實算比較大的人力擴充了。沒辦法,大佬都發話了,硬著頭皮上了,擴招的兩個人,想招一個高級的比較有經驗的,35年的,另一個13年的就行,如果有比較好的應屆生其實也可以,這樣,我一個才剛畢業2年的小菜雞,大概率要遇到一堆經驗遠比我豐富的人的毒打,壓力不可謂不大。
小公司的面試流程一般比較簡單,第一輪技術面(就是本弟弟), 第二輪我們老大面進行 (大佬後來去了阿里,所以他這輪也不算很好過),第三輪就是和HR談錢了,基本上半天搞定。當然,怕有的大佬看到要做筆試題扭頭就跑,所以一般是沒有筆試題。演算法的話一般也不怎麼考,一般是確定他淘汰了,才會出一題來勸退。
從我們發出招聘之後,第二天就開始陸續有簡歷收到了。第一個哥們就是來面高級崗的,接近四年經驗,當時拿到簡歷其實心裡有點虛,怕hold不住,所以那天拿到他簡歷之後,認真地過了一下他寫的技術點(>.<)因為一般招人,是面試者寫什麼我們問什麼,我們是要發現面試者會什麼,而不是出一些只有我們自己會的很冷門的東西去刁難面試者,那樣對面試者其實有點不友好。(招人,不就是想招一個能展示)
第二天那個小哥就來了,我先給他倒了一杯水,其實第一次有點緊張,所以我先讓他做一下自我介紹,小哥介紹得特別的簡短,三句話概括完。然後我事先有先去看了一下他項目,讓他展示一下他做的 App,讓他從最擅長的地方上手,問一些比較有技術難度的。老實說,那哥們的項目還可以,但是我問到項目中技術點的實現的時候,他的回答都是使用XXX第三方庫,但是並不知道具體實現原理,他的回答都是 「這個很簡單,用XXX,一行程式碼集成搞定「 之類的,以我當時的面試官視角,感覺他是個比較熟悉API調用的,其他技術細節也不夠深入,最後遺憾道別。
以一個普通開發者視角來看,我們平時遇到的需求,也不一定說全部的第三方庫都能完美解決,所以我們有時候一些功能不得不自己實現,而如果招一個基本只會用第三方庫的同事,想必他很難 hold 得住一個全新的項目。
第一次面試之後,面試起來比較得心應手了,但是這裡還是要友情提示一下,HR和面試者約的是幾點,面試者在那個時間點提前10分鐘到就行,太早到。那時候有個哥們,約的下午1點30面試,11點多就來了,我們是12點到1點30休息,一般我中午是有午休的,那哥們這一來,雖然最後還是1:30面試,但是我一中午沒睡,有點傷。還有那哥們的一個操作,也是差點把老夫秀翻,那時候正在面試ing…, 突然他電話響了,他說他接個電話,然後走開離我差不多三米的地方,和對方約第二天下午的面試。。。?
其實面了三四個的時候,就有一個哥們,很合適了,我使勁渾身解數盡量往深度問,發現他都能答上來,反正技術肯定甩我好幾個身位的,然後我也如實和我們老大說了,由他進行二面,但是最終這哥們還是理智地選擇了大廠?~
小廠招聘有一個劣勢,就是比如你錢和大廠一樣,甚至稍高一點,別人也大概率會選擇大廠,光環在那,但是小廠畢竟資金有限,所以其實有時候就陷入一種境地,要的人他不來,想來的又達不到要求。陸陸續續面了可能半個多月吧,發現如果不降低面試要求,就我們廠應該很難搶到別人要的人了,最後把目標鎖定在 => 經驗豐富,能幹活的就行。
最終有兩個哥們入圍了決賽圈,如果僅從短暫的面試來看,實力應該差不多,期望薪資有點差距,最終 HR 從經濟的角度出發,選擇了那個性價比較高的,(當然那哥們那時候的工資也遠超過我?)但是這裡確實有一個很血粼粼的現實問題出現了,當兩個人水平相當的時候,確實招聘方從成本角度出發,可能會優先考慮要價低的,所以有時候你面試的時候,對方說幾天內給你消息,這時候可能就是在權衡性價比?
理想目標
面試官招人要說合格的話,最理想的目標應該是符合以下幾個標準:
- 要基礎紮實,頭腦靈活聰明的
- 思維清晰,善於溝通的
- 和團隊風格匹配的
- 喜歡鑽研,對技術有追求的
敲黑板!重點來了
這段時間,看了不下一百分簡歷,面了也有一二十個人,簡歷合格的其實不多,這裡有幾個小小的建議:
- 簡歷可以直接用 markdown 格式的
- 接到過好多word格式的,打開排版全亂了
- 簡歷不要寫太多,一般 2 頁夠了,不要從網上抄一大堆 JD,不要有錯別字
- 簡歷實事求是,別太浮誇
- 收到過好幾個哥們簡歷 5 年經驗,面試表現不如實習生的,感覺水分可能還是有一點
- 寫進簡歷的,都要對他負責任,做好準備
- 完全不懂的就不要寫
- 慎用精通!
- 用技術亮點吸引面試官
- 要有亮點
- 大廠背景
- 名校背景
- 都沒有的話,GitHub && 技術部落格很重要
- (如果想進大廠的話,這個很重要!)
- 面試前,準備工作要先準備好
- 把要演示的 App 先安裝好,面試官如果要看能直接演示的
- 遇到過不止一個被問到能否演示的時候,才去 App Store 下載的
- 如果你是iOS開發,盡量用 iPhone 手機演示
- 遇到過用Android手機演示的,說iOS的和這個都一樣,有點醉
- 來之前檢查下手機電量
- 遇到過3%電的,我首頁點了沒兩分鐘,直接沒電了?
- 注意App的版本是否正確
- 遇到過一個 App 一划就crash的,最後得出的結論,是版本裝錯了,其實這個bug修復了~ ?
- 把要演示的 App 先安裝好,面試官如果要看能直接演示的
- 回答問題簡明扼要,挑重點回答
- 不要問你 who,你回答 how。 問你 where,你回答 when (英語老師饒命?)
- 不要回答一大堆毫不相干的,一句話能表述的,說一兩百字,但是回答不到重點的
- 要掌握主動權
- 從自我介紹開始,挑一些自己比較擅長的領域,引導面試官來問你
- 如果面試官進入到自己熟悉的領域,由淺入深慢慢引導其繼續發問
- ?: KVO -> isa混寫 -> 底層原理 ->。。。
- 如果正好問到知識盲區,虛心請教,讓面試官給點提示引導下~
- 其實面試過沒過,面試結束的時候,憑自己的感覺,也能猜到個八分了,如果全程無障礙溝通,對方問的問題也都能答得上七七八八,準備接offer吧兄弟~
面試考點(根據簡歷由淺入深提問)
初級
- copy 和 mutablecopy 的區別
- NSarry 用 copy 和 mutablecopy 修飾的不同
- NSMutableArry 用 copy 和 mutablecopy 修飾的不同
- 介紹一下 TableView 的代理和數據源方法
- 講一下他們的調用順序
- 介紹控制器的聲明周期
- 介紹下通知,代理 和 block,使用的場景分別是什麼
- 代理修飾為什麼用weak,
- 擴展:知道什麼是循環引用嗎
- 屬性的關鍵字都有哪些,默認的是哪些
- 使用 #import 跟 #include 、@class 的區別是什麼,分別在什麼情況下使用
- 擴展:在.h 文件中一般使用哪個,為什麼
- 原子(atomic)跟非原子(non-atomic)屬性有什麼區別?
- atomic一定是執行緒安全的嗎?
- 淺複製和深複製的區別? 可以舉個?嗎
- category 和 extensions 的區別,在項目中使用過嗎
- category 可以添加屬性嗎
- 了解KVO 和 KVC 嗎?
- 對於單例的理解
- frame和bounds有什麼不同
- iOS 中的多執行緒有哪些
- GCD的一些常用的函數(group,barrier,訊號量,執行緒同步)
- 實現數據持久化的幾個方案
- 介紹一下沙盒模型,存儲的位置
- 用過 UICollectionView 嗎?如何實現一個流水布局
- 一般是根據項目問
- 了解 svn, git 等版本控制工具么
- 如果有寫git,可以拓展一下 git 的一些指令問題(merge 和 rebase 區別等等)
- 分支管理
- 一次發版的流程
- 簡述記憶體分區情況
- 隊列和棧有什麼區別
- Http請求了解嗎
- 知道什麼是Restful API 嗎
- GET 和 POST 請求的區別
- 特殊的狀態碼,比如401、503,201的意義
- 或者直接問 4XX 是哪端的錯誤
中級
- 講述類和結構體的區別,了解什麼是 isa指針嗎
- 消息查找的順序
- 子類調用父類的對象方法,執行的流程是如何的?
- 如何實現消息轉發
- 給一個nil對象發消息會crash嗎
- 有使用過分類嗎
- 分類會"覆蓋" 原來的方法嗎
- 分類可以添加屬性嗎,了解關聯對象嗎
- 分類的內部結構是什麼
- 各種Block
- 有遇到過記憶體泄漏嗎
- Block的幾種類型
- Block的變數捕捉
- __block中的 _ forwarding 指針
- ARC下和MRC下,__block的區別
- KVO & KVC 細問
- 什麼是 isa 混寫
- 如何手動觸發一個 value 的 KVO
- KVC修改屬性是否會觸發KVO
- 為什麼 delegate 設置為 weak 就不會有循環引用
- 了解什麼是哈希表嗎
- 弱引用表做了什麼
- 對UITableView有做過什麼優化嗎
- UITableView 為什麼會卡頓
- 如何避免卡頓
- 最熟悉的第三方庫是什麼
- 99.9%是回答 SDWebImage
- 問一下 SDWebImage 的快取機制
- 如果設計一個圖片下載框架
- 引導對方說出 LRU 演算法
- 萬一回答 AFNetworking
- 問下 AFNetworing 有遇到記憶體泄漏嗎
- 有沒有對 AFNetworing 進行二次封裝過
- 有沒有對 AFNetworing 中的常駐現場有了解
- 有辦法自己寫一個常駐執行緒嗎
- 如果回答 Masonry
- 問一些自動布局相關的
- 兩個label相互擠壓拉伸的
- 讓幾個控制項平等均勻分布的
- 原生的autolayout了解嗎
- 99.9%是回答 SDWebImage
- RunLoop (除非對方有寫,不然不建議問!!)
- 介紹下主執行緒的 RunLoop
- RunLoop有幾種mode
- 為什麼 ScrollView 滾動的時候圖片輪播器會停止
- 如果面試者項目中有這個情況
- 記憶體管理可以問一問(如果他有寫)
- 定時器target的記憶體泄漏
- autorelease的原理
- weak 和 assign 的原理
- 引用計數器的存儲
高級
沒有?(本人水平有限,距離高級距離太遠,就不嫌丑了)
閑聊
溝通能力,理解能力其實都算軟實力,在面試過程中如果對面試官的問題理解不過來的,可以多和面試官多溝通,一定要等真正get到考點的時候再答,不要亂答一氣。(其實很多題目就是讓你回答不上來的,面試官有時候並不是真的要考你某個很深的知識點,是想看你思維能力,能否在他引導之下給出他想要的答案,哪怕是錯的,有很多時候其實也過了~)
有沒有開源精神其實在面試中也是很加分的。不過確實很多面試者沒有寫部落格的習慣,也不少人不了解 GitHub 是啥。如果是大廠,對這方面要求會比較高,然後問下
當然和team風格是否合拍也特別重要,如果你在面試過程中覺得特別不舒服,一般這個團隊就不適合你,畢竟面試也算雙向選擇(雖然企業相對來說處於領先的位置)。
老實說,一個人面試者過來合不合適,聊個510分鐘其實在面試官心裡就能看個七七八八了。一個人還沒來面試前,從他的簡歷上其實也很多時候能看個五五六六了?,所以簡歷和第一印象真的非常重要哈
總的來說,今年的大環境確實不太好,但是還是希望大家可以找到一個心儀的工作~
打個廣告,如果是廈門地區的,有打算換工作的,Ringcentral了解一下,955榜上有名的,簡歷可以發我內推,成功之後請你吃大餐? (2020年Q1前能入職的,送air pod pro!!)