前兩天去搜狗面試,雖然榮幸的過了一面,但是二面還是很擔心的😟
總結一下 一面的題 把 沒有一家公司會面時一個人二個多小時吧 有點坑
不過大公司面試 牽扯到很多 底層 算法的問題,還有一些智商的問題。總之、各自安好吧
1, aoturelsepoll 什么時候用?
2, 自動釋放時系統都做了那些功能
3, 第一次加載 緩存了 返回再進入時 為什么重復加載了
4, 都用過哪些 運行時 改變了什么 ?
5, block 使用時 要注意什么
6, 修飾詞 有哪些 什么時候用
7, GPUimage的使用
8,在copy時 NSarraycopy 和 nsmutarblearraycopy 的區別
9,觀察者模式 的分類?
[※]@property中有哪些屬性關鍵字?
[※]weak屬性需要在dealloc中置nil么?
[※※]@synthesize和@dynamic分別有什么作用?
[※※※]ARC下,不顯式指定任何屬性關鍵字時,默認的關鍵字都有哪些?
[※※※]用@property聲明的NSString(或NSArray,NSDictionary)經常使用copy關鍵字,為什么?如果改用strong關鍵字,可能造成什么問題?
[※※※]@synthesize合成實例變量的規則是什么?假如property名為foo,存在一個名為_foo的實例變量,那么還會自動合成新變量么?
[※※※※※]在有了自動合成屬性實例變量之后,@synthesize還有哪些使用場景?
[※※]objc中向一個nil對象發送消息將會發生什么?
[※※※]objc中向一個對象發送消息[obj foo]和objc_msgSend()函數之間有什么關系?
[※※※]什么時候會報unrecognized selector的異常?
[※※※※]一個objc對象如何進行內存布局?(考慮有父類的情況)
[※※※※]一個objc對象的isa的指針指向什么?有什么作用?
[※※※※]下面的代碼輸出什么?
Objective-C
1234567891011 @implementation Son : Father- (id)init{self= [superinit];if(self){NSLog(@"%@",NSStringFromClass([selfclass]));NSLog(@"%@",NSStringFromClass([superclass]));}returnself;}@end
[※※※※]runtime如何通過selector找到對應的IMP地址?(分別考慮類方法和實例方法)
[※※※※]使用runtime Associate方法關聯的對象,需要在主對象dealloc的時候釋放么?
[※※※※※]objc中的類方法和實例方法有什么本質區別和聯系?
[※※※※※]_objc_msgForward函數是做什么的,直接調用它將會發生什么?
[※※※※※]runtime如何實現weak變量的自動置nil?
[※※※※※]能否向編譯后得到的類中增加實例變量?能否向運行時創建的類中添加實例變量?為什么?
[※※※]runloop和線程有什么關系?
[※※※]runloop的mode作用是什么?
[※※※※]以+ scheduledTimerWithTimeInterval...的方式觸發的timer,在滑動頁面上的列表時,timer會暫定回調,為什么?如何解決?
[※※※※※]猜想runloop內部是如何實現的?
[※]objc使用什么機制管理對象內存?
[※※※※]ARC通過什么方式幫助開發者管理內存?
[※※※※]不手動指定autoreleasepool的前提下,一個autorealese對象在什么時刻釋放?(比如在一個vc的viewDidLoad中創建)
[※※※※]BAD_ACCESS在什么情況下出現?
[※※※※※]蘋果是如何實現autoreleasepool的?
[※※]使用block時什么情況會發生引用循環,如何解決?
[※※]在block內如何修改block外部變量?
[※※※]使用系統的某些block api(如UIView的block版本寫動畫時),是否也考慮引用循環問題?
[※※]GCD的隊列(dispatch_queue_t)分哪兩種類型?
[※※※※]如何用GCD同步若干個異步調用?(如根據若干個url異步加載多張圖片,然后在都下載完成后合成一張整圖)
[※※※※]dispatch_barrier_async的作用是什么?
[※※※※※]蘋果為什么要廢棄dispatch_get_current_queue?
[※※※※※]以下代碼運行結果如何?
Objective-C
123456789 - (void)viewDidLoad{[superviewDidLoad];NSLog(@"1");dispatch_sync(dispatch_get_main_queue(),^{NSLog(@"2");});NSLog(@"3");}
[※※]addObserver:forKeyPath:options:context:各個參數的作用分別是什么,observer中需要實現哪個方法才能獲得KVO回調?
[※※※]如何手動觸發一個value的KVO
[※※※]若一個類有實例變量NSString *_foo,調用setValue:forKey:時,可以以foo還是_foo作為key?
[※※※※]KVC的keyPath中的集合運算符如何使用?
[※※※※]KVC和KVO的keyPath一定是屬性么?
[※※※※※]如何關閉默認的KVO的默認實現,並進入自定義的KVO實現?
[※※※※※]apple用什么方式實現對一個對象的KVO?
[※※]IBOutlet連出來的視圖屬性為什么可以被設置成weak?
[※※※※※]IB中User Defined Runtime Attributes如何使用?
[※※※]如何調試BAD_ACCESS錯誤
[※※※]lldb(gdb)常用的調試命令?
其實大公司面試 還是不錯的,有咖啡,有飲料 有茶水間,氣氛向咖啡廳談事情 二輪是筆試 加油!!!