各種原因之下,最近兩週一直處於面試狀態,這裡整理了最近出鏡率略高的面試題。以及個人的一些面試心得。
開始面試之前一直聽大家在說iOS行業不景氣、面試機會少、待遇差等等等等各種抱怨。聽完後確實擔憂過一段時間,怕辭職之後找不到工作,畢竟我的學歷是個硬傷。大家學歷背景都比我強,我估計會更不好找工作了。
然而實際過程還算順利。正式離職之前陸陸續續投遞過幾次簡歷,但是反向平平。17年12月8日(週五)辦理離職手續,週一正式開始在各大招聘平臺(主要是BOSS、拉鉤)投遞簡歷。週二晚上停止投遞簡歷,因為每天兩家面試的安排已經安排到週五。週三的面試結束後,很幸運的拿到三家Offer。為趕在15號之前入職,將週四週五四家公司推了兩家(對不起貴司),將剩下兩家合併到週四面試,很幸運的又拿到一家Offer,也就是我將要入職公司的Offer。
總投遞簡歷時間兩週,面試11家公司,拿到4家Offer(本來應該是5家,有一家過了四面,最後一面因為學歷問題被pass了,必須吐槽一下)。期間沒有安排BAT級別的公司。為了這次面試,做了很多的準備,在這裡總結一下。
- 完善簡歷(用時兩天,以下內容無優先順序區分)
- 簡歷細節
- 簡歷合理性
- 簡歷模組分佈
- 簡歷乾淨、整潔程度
- 模組內容
- 模組優先順序
- 模組內容優先順序
- 模組內容可閱讀性
- 簡歷亮點(我覺得這個很重要)
我用了兩天時間完善簡歷。期間在簡書、知乎、百度等各種地方找簡歷模板、模範簡歷。知乎上有各種資深HR回答的“一份優秀簡歷需要注意的內容”。找工作第一關就是HR,所以我覺得簡歷是最重要的,需要好好準備一下。
- 技術儲備(以下內容無優先順序區分)
- 刷歷年面試題
- 重新整理知識新內容
- 刷基礎知識書籍、文件
- 刷各位大神部落格
- 刷各大iOS論壇
技術儲備這部分我覺得是最辛苦的部分,腦海裡每天要被一大堆新技術舊技術各種衝擊,精神一直處於緊繃狀態。晚上睡覺都是各種面試題、技術原理、技術實現細節等等。 技術儲備我覺得不一定需要把所有內容都背到腦子裡,只要在腦海裡形成一個大體的邏輯就可以。當面試官問到的時候把知道的說出來就好(切記不要猜)。 講真直播方面的內容我到現在都是一知半解的,以前工作一直沒有涉及到直播方面。而且直播相關知識實在是太多了!
- 面試準備(以下內容無優先順序區分)
- 公司簡介
- 公司專案
- 公司創立時間
- 公司發展歷程
- 公司處於什麼階段
面試準備是很重要的,這部分的準備決定了面試時候的主導權在誰手裡! 每個公司都有對應的發展歷程,不同的歷程決定了技術架構的不同,不同的技術架構決定了面試官的問題的技術深度。你去和做直播公司的面試官聊直播就是找虐(如果你想入職!你要記住即使面試官錯了!那也是對的!)。這邊有個小技巧,如果你的回答和麵試官給你解釋的內容不一樣,而且你也不覺得他說的是對的,請記住!少說一點!不要長篇大論的給面試官解釋,在他解釋的時候切其中的某個知識點一下就行。總之就是請不要把你的位置放到面試官之上,哪怕你倆其實是對等的。 如果在你檢視公司專案的時候發現,專案的知識點剛好是你完全不瞭解的,請直接說我不會!不要給面試官在你面前秀知識的機會!不然他會面完你轉身和HR說:“這個人啊,呵呵,就那樣吧”! 最最重要的一點!!!去面試之前千萬記得在拉鉤上看一下公司的面試評論!!!例如:XX善康XXXX公司,我要點你!我要曝光你!太生氣了!我用了一個半小時跑過去,面試我5分鐘。而且面試官嘴裡居然會說出:“就這些?”,“還有嗎?”,“完了吧?”等引人深思的句子。全程玩手機什麼的我就不說了,嘁,為了它我推掉一個BAT的公司呢~
以下為出鏡率較高的面試題,暫時列出一個大概,後續有時間會補上衍生問題和答案。
原理類
- 響應者機制
- 訊息傳遞機制
- 介紹一下catagory
- block的本質是什麼
- JSON解析快慢原因
- __bridge 是什麼意思
- assign和weak的區別
- runtime是如何工作的
- runloop和執行緒的關係
- 長連線在TCP的哪一層
- 使用drawRect有什麼影響
- nonatomic和atomic的區別
- oc中new和alloc/init的區別
- nonatomic和atomic的區別
- NSDictionary的本質是什麼
- UIView和CALayer是啥關係
- ARC和MRC的區別,ARC的實現
- unrecognized selector是如何出現的
- JSON和NSArray/NSDictionary和互轉
- 簡述UIButton和UITableView的繼承關係
- @dynamic和@synthesize關鍵字是用來幹什麼的
- 堆疊的區別、日常的開發中哪些地方會涉及到堆疊
- presentView 的釋放時機 rootVC切換的時候釋放嗎
- __strong和__weak修飾詞的作用是什麼__autoreleasing修飾詞是幹什麼的
- __weak 所屬的hash表裡 存的鍵值都是什麼,被修飾的屬性會在什麼時候釋放
- 能否向編譯後得到的類中增加例項變數?能否向執行時建立的類中新增例項變數?為什麼?
實戰類
- 螢幕適配
- 實現一個單例
- 實現retain和copy
- 清空NSArray中的元素
- 舉幾個造成死鎖的例子
- 執行緒通訊和執行緒安全問題
- 資料持久化的幾種方案及優缺點
- 微信支付流程、支付寶支付流程
- 迴圈引用 什麼時候用到strongSelf 舉例
- 講講你用Instrument優化動畫效能的經歷吧
- 實現一個六邊形Button,要求邊框之外區域不可點
- storyBoard名為Personal中多個頁面,初始化其中名為MyCtrl的頁面如何實現
架構類
- 介紹一下RN
- 介紹一下元件化
- 介紹一下響應式程式設計
- 做過哪些方面的效能優化
- 做過哪些方面的記憶體優化
- 如何設計一個AFNetWoring
- 如何考慮一個APP框架的搭建
- APP個人資訊保安性如何保證
- MVC/MVVM/MVP區別及優缺點
- 如何設計一個存有公司內部員工資訊的APP(假設公司有10萬以上員工)
- 如何看待storyBoard、xib和純程式碼開發,說一下優缺點,你負責專案開發會採用哪種形式
音視訊類
- 流媒體
- 視訊播放
- 邊下邊播
- 直播相關知識
即時通訊類
- socket、XMPP是如何實現IM的,具體流程
- JSON串的儲存模式是什麼
- XML和JSON的優缺點
- 除了socket和XMPP還有其他實現IM的方式嗎
JS與原生互動類
- JS互動使用過哪種方式
- WKWebImage和UIWebImage的卻別及優缺點
- AFNetWorking和SDWebImage實現原理,SDWebImage核心快取理念
演算法類
- 隨便寫一個排序演算法
- 寫一個取10000以內質數演算法
- 實現找到兩個向教練表的倒數第n個節點(可以用虛擬碼)
- 字串按照單詞反轉,例“Objective-C Hello Word!”,結果“word! Hello Objective-C”
功能類
- 藍芽有幾種通訊協議
- 說一下藍芽的實現
其他類
- 職業規劃
- 展示專案,介紹專案難點,亮點,專案哪些模組是你負責的
- 工作期間遇到有意思的問題或者比較難的問題
- 工作期間有沒有讓你覺得很有成就感的事情
- 做過的最有技術含量的東西
- 有沒有做過看起來特別炫的東西
神經病類
這個問題不是我遇到的,是我一個朋友去面試被問到,歡迎各路大神討論。
- 你有朋友嗎?
- 如果你和你朋友一起去犯罪,很不幸你被抓住了,你會把你的朋友供出來嗎?
程式碼類
void tet1(){
int a = 10;
void (^block) = ^{
NSLog(@“a is %d”, a);
}
a = 20;
block();
}
輸出結果:
複製程式碼
main() {
int a[5] = {1,2,3,4,5};
int *ptr = (int *)(&a+1);
printf(“%d, %d”,*(a+1),*(ptr+1));
}
輸出結果:
複製程式碼
NSLog(@"1");
dispatch_sync(dispatch_get_main_queue(), ^{
NSLog(@"2");
});
NSLog(@"3");
輸出順序:
複製程式碼
結束,預祝各位找工作順序~
有志者、事竟成,破釜沉舟,百二秦關終屬楚;
苦心人、天不負,臥薪嚐膽,三千越甲可吞吳.