大咖面試-第二期
一、上海青客
1、UIView 於 CALayer 的區別
2、頁面佈局的方式
3、如何優化TableView的流暢性
4、OC與JS互動所用的方式,並簡述一下
5、列舉常用的設計模式,並說明使用場景
6、列舉資料持久化的幾種方式,及優缺點
7、資料庫讀寫中用到的多執行緒是什麼?多執行緒如何同時操作一個數據庫
8、多個執行緒讀取資料如何保證不出錯
9、2個app間通訊(呼叫)方式,及兩個app間如何進行資料傳輸?
10、block與函式有什麼區別,block的優點有哪些?宣告一個block及實現
11、使用swift3.0寫一個單例
二、易車網(2017)
1、講一下你們的專案結構
- 使用的設計模式
- 對比其他專案有什麼新的技術
- 非功能性模組有哪些
2、MVC設計模式中C層需要做哪些工作,對MVVM的理解以及對比MVC中C層中功能拆解位置劃分
例如:對於MVC中C層中資料處理轉為MVVM是所處的位置VM層還是M層(胖瘦Model的問題)
3、view的frame和bounds.當對view進行旋轉之後frame以及bounds有什麼變化
4、UIView和CALayer的關係以及各自的繼承關係.
5、iOS中的事件響應機制(response Chain)
6、TCP,UDP有什麼區別,講解一些對於Socket的理解
7、Decorator模式與Category,給類新增方法(繼承,Category和Runtime新增)
8、動畫的種類和實現過程(basic動畫,keyFrame動畫,Spring動畫)
9、Block
- 根據在記憶體中所處的位置有哪幾種(global,stack,heap)
- global和stack型別的區別
- 能不能將block新增到陣列或者字典中,會有什麼問題
10、RunLoop
- 解釋一下RunLoop
- RunLoop有幾種狀態
- RunLoop的mode有什麼作用
- RunLoop與執行緒之間的關係
- 系統是怎麼實現RunLoop的mode切換
- NSTimer與RunLoop的經典問題 怎麼解決
- RunLoop的mode切換需要做什麼(自定義的非同步執行緒)PS 可能跟source1和source0有關
三、(滴滴架構師:孫源sunny)DynamicCocoa專案招聘
WechatIMG1408.jpeg

WechatIMG1408.jpeg
四、廣州某公司面試題(2018.07)
簡答
1、使用NSLog函式輸入一個浮點型別,結果四捨五入,並保留一位小數
2、在一個物件的方法裡面:self.name = “object”, 和 name = “object”有什麼不同
3、定義屬性時,什麼情況下使用copy, assign, 和 retain
4、簡述object-c記憶體管理機制,並簡述什麼時候由你負責釋放物件,什麼時候不由你釋放
5、Object-c的類可以多重繼承麼?可以實現多個介面麼?
程式設計
1、求n個數的和 1/2 + 1/3 + 1/4 + … + 1/n
2、求第N個數是多少 1,1, 2, 3, 5, 8, 13, 21
(a)可用一個數組,把n個數都儲存在資料中從而求第n個數
(b)用多個變數迴圈求第n個數
(c)用遞迴求第n個數
3、請走完程式,求出陣列中,連續幾個數字相加和最大
int num[12] = {2, 7, -10, 8, 22, -2, 13, -9, 5, 3, -8, 7}; int sum = 0; for (int i = 0; i < 12; i ++) { int temp = 0; for (int j = i; j < 12; j ++) { ____________ ____________ ____________ } } printf(sum);
演算法題
1、一個農夫,買了一頭小牛,這頭小牛成長到第四年開始,會每年生一頭小牛,所出生的小牛成長到第四年開始,也會每年生一頭小牛,請問N年後,農夫共有多少頭牛。(請寫出程式碼實現)。
2、一個檔案中有40億個 不重複的 unsigned int 整數,沒有排過序的,如何快速判斷某個數是否在那40億個數當中?描述關鍵程式碼或者主要思路即可。
3、有一個玻璃瓶,裡面裝了若干糖果。兩個人輪流拿,每次只能拿1-3顆。如果讓你先拿,你有什麼策略保證,每次都能拿到最後一顆。
五、一個不知名的公司面試題
基礎題
1、二選一(20%)
- 利用rand5 生成 rand7(randN等概率隨機輸入1、2、…、N)
- 單次批量生成100個不重複的 0—200的隨機數(即不可逐個記錄已選出的數)
2、二選一(20%)
- 判斷一個連結串列是否有環,並定位環的位置
- 單鏈表原地逆制,不使用遞迴,複雜度O(n)
程式設計題(60%)
快速、歸併、堆排序(三選一)
六、某公司二面
1、寫二叉樹的先序遍歷,然後用非遞迴寫
2、寫快排,並分析原理
3、http協議
4、http為什麼底層是tcp不是udp ?
5、tcp是基於流式傳輸的,怎麼設計協議,進行協議的解析?
6、tcp為什麼要進行三次握手?不是2次,4次?
7、抓包工具的原理是啥?
8、socket異常斷開時,設計一個合理的重連機
七、
1、說下執行緒和程序的區別
2、如何保證執行緒安全
3、寫個演算法,輸出2~100的素數(然後問你怎麼優化,還可以怎麼優化,然後還可以怎樣優化.....)
4、瞭解哪些設計模式
5、MVC設計模式的思想是什麼?在專案中的運用,然後對比MVVM設計模式
6、堆和棧的區別,工程專案中的哪些資料是儲存在堆哪些在棧中
7、iOS中的NSCopying協議,copy,MutableCopy的區別
8、解釋屬性修飾關鍵詞的作用(weak,strong,copy,readOnly,assgin,nonatomic等)
9、最近看過哪些書?目錄結構是怎樣的?哪部分內容印象最深?瞭解過作者嗎?
10、你還有什麼問題問我?
八、
1、解釋一下keywords的區別:assign weak __block, __weak
2、__block在arc和非arc下含義相同麼
3、使用atomic一定是執行緒安全嗎
4、描述一個你遇到過的retain cycle
5、+(void)load; +(void)initalize有什麼用處.
6、為什麼其他語言裡叫函式呼叫,oc裡則是給物件發訊息(或者談一下對runtime理解)
7、什麼是method swizzling
8、UIView 和 CALayer的關係
9、如何高效能的給UIImageView加圓角
10、講講你用Instrument優化動畫效能的經歷
11、loadView是幹什麼用的。
九、一個2015年的老篇面試題
1、什麼是arc?(arc是為了解決什麼問題誕生的?)
2、請解釋以下keywords的區別: assign vs weak, __block vs __weak
3、__block在arc和非arc下含義一樣嗎?
4、使用atomic一定是執行緒安全的嗎?
5、描述一個你遇到過的retain cycle例子。(別撒謊,你肯定遇到過)
6、+(void)load; +(void)initialize;有什麼用處?
7、為什麼其他語言裡叫函式呼叫, objective c裡則是給物件發訊息(或者談下對runtime的理解)
8、什麼是method swizzling?
9、UIView和CALayer是啥關係?
10、如何高效能的給UIImageView加個圓角?(不準說layer.cornerRadius!)
12、使用drawRect有什麼影響?(這個可深可淺,你至少得用過。。)
13、ASIHttpRequest或者SDWebImage裡面給UIImageView載入圖片的邏輯是什麼樣的?(把UIImageView放到UITableViewCell裡面問更贊)
14、麻煩你設計個簡單的圖片記憶體快取器(移除策略是一定要說的)
講講你用Instrument優化動畫效能的經歷吧(別問我什麼是Instrument)
15、loadView是幹嘛用的?
16、viewWillLayoutSubView你總是知道的。。
17、GCD裡面有哪幾種Queue?你自己建立過序列queue嗎?背後的執行緒模型是什麼樣的?
18、用過coredata或者sqlite嗎?讀寫是分執行緒的嗎?遇到過死鎖沒?咋解決的?
19、http的post和get啥區別?(區別挺多的,麻煩多說點)
20、我知道你大學畢業過後就沒接觸過演算法資料結構了,但是請你一定告訴我什麼是Binary search tree? search的時間複雜度是多少?我很想知道!