因爲一些緣由,最近打算換一份工做,主要目標是大型的互聯網公司。在經歷了上週三天小公司試水後,昨天終於開始正式的面試之旅了(其實接到面試通知的就幾家公司😰)。ios
試水結果:問的問題都不深,收穫了幾個本身沒準備到的問題,以及面試的狀態。感受本身把本身坑了,不該該去面創業公司的,而後就獲得2家創業公司offer,出師不利😪。git
這是一次面基之旅。github
這是微博好友 移動開發小冉 他們公司。收穫不少,小冉問的問題也很深刻,而後我就被虐了- -。一些知識點沒有準備到:好比 「運行時改變方法實現的方法名」😂,沒記住- -。面試
而後中午吃飯的時候又趕忙看了一遍(方法名),還有上午沒準備到的點。objective-c
附一張小冉公司等電梯圖算法
好多人啊😂😂😂設計模式
16號中午被HR通知 晚上7-7.30 二面,說是CEO面試。數組
到了以後跟CEO聊了互聯網金融,我問了下公司產品方向,風控等一些問題。聊得很愉快,而後CEO說給offer😁😁😁瀏覽器
百度是咱們老大內推的,上週約的面試。緩存
大部分是基礎,並且問的比較細,Runtime也問到一些,最後問到一個設計問題,一個算法問題😂。
問題大概有這些:
1.static關鍵字做用
2.ARC下 NSString 屬性用 copy 和 strong 修飾的區別
3.對上面字符串的追問,問直接定義一個字符串的變量的,會有默認的修飾符,問是什麼? 這,表示沒有想過😭。而後說本身不知道,說了一個
4.手寫MRC下一個NSString *a 的setter 方法
5.+load 和 +initialize 兩個方法的用法
6.loadView方法的做用
7.通知,代理,KVO的區別,以及通知的多線程問題。通知的多線程問題,以前微博引發過討論,而後 南峯子_老驢 大神寫過一篇博客Notification與多線程, 本身印象比較深入。
8.怎麼調試EXC_BAD_ACCESS錯誤
9.block的用法,以及怎麼防止循環引用
10.Runtime 項目用到沒。說用到了,把上午沒說出來的三個方法名說了一遍😁
11.SEL 和 IMP 的區別,SEL沒記清…😭
12.JSON 轉對象的時候,一個NSString的屬性,若是後臺返回對應這個屬性的類型不是NSString,而是其餘的數據類型,怎麼辦。回答說加判斷,隨即又被追問到,若是全部的字符串均可能會出現這個問題,怎麼辦。PS:(怎麼辦?若是真是這樣,就把後臺打一頓,問他還能不能愉快的玩耍了啊!!!😂,開玩笑~(≧▽≦)/~啦啦啦)。
13.設計一個圖片緩存機制。具體問到怎麼存儲,用什麼當key值,回答說用圖片的url,而後追問若是會有cookie,怎麼辦,表示回答的很瞎…😢。而後又問一個展現圖片的tableView,若是其中一個cell對應的圖片下載很慢,這時對cell是刪除操做,怎麼處理。
14.算法題:仿照瀏覽器的收藏網頁功能(一個書籤可能對應一個文件夾,子文件夾中書籤可能也是對應一個文件夾)。用OC在手機上實現:收藏、快速查找、移動功能(移動前順序是1,2,3,4,5,6 。移動 6 到2 ,順序變成 1,6,2,3,4,5)。
大多數是項目問題,還有一個網絡問題,一個算法問題😂。
網絡問題:在網絡差的狀況下,特定的一個網絡請求可能會耗時2-4秒,此時怎麼作提升用戶體驗。
算法題:說 預定會議室,會有n個團隊預定當天會議室,時間各不相同,求最少須要幾個會議室。好比:1預定的時間是[9-11], 2預定的時間是[10-12], 3預定的時間是[12-14], 此時會議最小個數是2個。
二面面完以後,說讓回去等通知。
總結:面試官很nice,會引導你去回答問題。而後就是本身一些深層的理解仍是不夠,算法題答得很瞎…😭😭😭,本身準備的也沒用上…😭😭😭
附三張圖記念
百度大廈
百度科技園1號樓 Hello World IT咖啡
百度科技園1號樓(面完走時拍的)
惋惜沒有拍到百度的辦公室,表示很喜歡一我的一個桌子的佈局😍😍😍
騰訊是微博上 FreeSelfishSoul 童鞋幫忙內推的😘😘,是地圖事業部。這裏打個小廣告,想去騰訊工做的小夥伴均可以找 FreeSelfishSoul 內推,各個城市各個崗位均可以,詳情請查看 「她」 的置頂微博。
大部分是基礎以及項目問題,還有一些引伸出來的比較有意思的點,最後是2個算法題😭😭😭。
例舉一些比較好的問題
1.frame 與 center bounds的關係,frame 和 bounds 的寬高一直相等嗎?
2.數據持有化的方法,以及它們的使用場景(結合項目)。而後說到對象歸檔的時候,被問到若是被歸檔的對象所在的類在以後的版本添加了新的屬性,版本更新時,怎麼作處理。當時項目用到對象歸檔的時候沒有考慮過這個問題,由於咱們項目是每次版本更新時,主動把歸檔所存儲的對象置爲nil,而後讓用戶從新登陸,再從新歸檔對象。面試完又思考了下這個問題,感受仍是很好作的,我的感受若是在這種狀況下,App主動發一次請求而後更新歸檔的對象 或者 從新建立一個新對象而後把歸檔的老對象的屬性賦值給新對象,再歸檔新對象。不知道對不對,歡迎你們指正。
3.App的內存和性能優化。說到了tableView的卡幀,而後被問到遇到的和了解的卡幀的緣由以及解決的辦法。
4.MVC 和 MVVM 的區別
5.問到項目中的動畫效果實現,而後追問到怎麼中途中止動畫?表示答錯了,我回答用- (void)removeAllAnimations; 和 - (void)removeAnimationForKey:(NSString *)key;方法😭😭😭
6.算法題:都是用C和OC手寫代碼的。1.反轉鏈表 2.二分查找法。😭😭😭2個很基礎的算法題,反轉鏈表不會寫= =,二分查找法沒寫完。這2個算法題答完以後,本身就知道結果了,應該是沒戲了,感受好惋惜。
被通知沒有2面後,和麪試官在門口交流了一會,大致聊的是我司,以及互聯網金融,最後說有事再電話聯繫。
基礎算法題沒有準備,掛的很惋惜。而後內推的童鞋告訴我面試官的評價:代碼實現能力比較差,二分查找和反轉鏈表基本數據結構都寫不出來。
我想畢竟不問算法的可能只有 我就叫Sunny怎麼了 了把——招聘一個靠譜的 iOS。表示開始刷算法題。。。😭😭😭
還有就是感受此次百度和騰訊的面試題都不是太難,對比 不會開機的男孩 的百度面試,感受不是一個級別的。
附一張圖記念
由於上午騰訊的面試經歷,中午在麥當勞吃完午餐後直奔車庫咖啡去刷算法題(由於麥當勞的wifi實在是太慢了)。刷了的算法題有:各類排序、二分查找法、由數組建立一個鏈表、反轉鏈表、鏈表排序、求兩個集合的交際、給定n個整數(可能爲負數)組成的序列a[1],a[2],…,a[n],求該序列某個字段a[i]+a[i+1]+…+a[j]的和的最大值。但願本身運氣好,下午面36氪時能碰到一個😂😂😂
車庫咖啡會有一個午間半小時的分享活動,今天是第一次聽到(由於以前就去過一次車庫咖啡),而後其中有一我的上去講他的項目,他首先問你們有木有信仰😂,等一系列精神的話題,而後主持人就打斷他說「打斷一下,我們這個午間分享是的項目,經歷等」,而後他說「這就是個人項目」,主持人說「您的項目是作關於精神方面的啊。。。」(估計主持人也頭一次見),那我的就開始介紹他的項目,說是一個關於精神的遊戲,在遊戲裏面能夠提高人物的精神。。。 我的感受頗有意思(其實我沒聽懂- -😂)。還有一個在校大學生的分享= = ,說是作學校跟企業對接招聘的項目,如今每月營業額有3w,感受好厲害。
附圖
中關村創業大街
車庫咖啡
回到正題上來。
36氪不是內推的,是HR在智聯上篩選到個人簡歷,而後先打電話跟我溝通是否有意願去36氪,再說把簡歷給技術過,以後再打電話約我面試。
一面的時候,來了三我的,尼瑪,當時我就有點嚇尿了😨,這是幹啥的節奏。後來那個主面介紹說其餘兩人是過來跟「高手」交流一下的,表示不是「高手」啊😭😭😭。而後他們拿出手機打開我司的App(很贊- -),問我一些App裏面的動畫實現,以及還談到個人Github上面的庫,以及我對 iOS-Core-Animation-Advanced-Techniques 翻譯 的貢獻等。感受能來36氪面試,Github啓到了必定做用。
問的問題也是基礎的,以及項目的,不過也有本身沒有準備到的問題。
列舉一些問題:
1.通知中心的實現原理(或者問 本身建立一個通知中心)
2.Size Classes 具體使用(沒有深刻準備)
3.SDWebImage 下載圖片的邏輯
4.問我算法和數據結構都還記得嗎?我說不記得了。。。你們就隨便扯了會面試時考算法到底有木有用,我談到了對 BAT爲何面試都會問到算法 的理解。雖然本身感受有些算法題並無什麼卵用😂😂,不問算法和數據結構,什麼都好說😭😭
二面的面試官是團隊的技術負責人,聊的技術點仍是蠻多的,有一些問題仍是很不錯的。
問到的一些知識點:
1.項目架構
2.@property 後面跟的修飾符。nonatomic 和 atomic 的區別,這個憑記憶回答的,答的很差。weak的做用說完以後,問到蘋果是怎麼作的,讓weak修飾的變量在釋放時置爲nil,大概猜了一下實現原理。最後幸虧沒有被追問到 爲何對一個nil 對象發消息 不會 crash?😂😂 。表示本身才知道這篇文章 Objective-C: Logging Messages to Nil ,尚未看。
3.數據持有化的幾種方式。其中說到對象歸檔時被問到 若是歸檔的類 會頻繁的增長屬性,這時怎麼作。由於以前用到過,回答說用Runtime 獲取類的屬性列表,而後for循環進行歸檔和解檔。而後問到爲何能夠這樣作,談到了OC的Class類機制,隨後又談到Category爲何能夠添加方法,不能夠添加實例變量。
4.blcok 怎麼修改 block外的變量。追問到static 修飾的變量 和 全局變量 的區別。又問到 __block 修飾的變量 block 爲何能夠修改。隨後談到了block的底層實現,說到MRC 和ARC 下block的類型。最後問到MRC下 怎麼主動建立_NSConcreteGlobalBlock,_NSConcreteStackBlock,_NSConcreteMallocBlock 三個類型的block。
5.問用到的設計模式。回答:單例,觀察者,工廠,享元。而後就開始問工廠模式在項目中用到的具體地方。而後在紙上畫了一個大概,相似於網易新聞的新聞界面,被問到若是有不少元素時怎麼辦?回答說用相似tablViewCell的重用機制來解決。具體能夠參考 Glow 技術團隊博客 的第一篇文章 UIScrollView 實踐經驗
6.問到 iOS項目的持續集成 ,說項目沒有用到過,可是看到過有關持續集成的文章Sam_Lau_Dev 簡書中的 iOS項目的持續集成與管理[譯]
7.提問階段,我問了他爲何從騰訊離職以後選擇了36氪,以及36氪iOS團隊的狀況和業務發展等
三面的CTO出去了,不知道何時回來,因此沒有三面了😂😂😂。
告訴我等通知。
感受一面和二面都很愉快,多是面試官跟我年紀相仿的緣由把,還有一個更重要的緣由是沒有問到算法和數據結構 😂😂😂。我的感受36氪的辦公環境和技術氛圍很好,是一個很互聯網的公司。
附圖兩張
今天(7.17)HR發郵件說,有些方面跟公司需求不太匹配。掛了。
知乎經過朋友的朋友內推的。
當時還在36氪面試收到知乎HR的電話和郵件。郵件中附帶筆試題,後來HR又打電話過來講,筆試題三天時間能夠嗎?我算了下時間,日後推了下,說週一給她回郵件。
筆試題
每道題都不簡單啊😭😭😭,準備週末試着寫寫。
最後若是您以爲我分享的面試題、回答有問題或者個人回答不是最優解,歡迎你們評論,一塊兒討論哈~😄😄😄