2019 iOS面試題總結(題目及答案已上傳Githup)

Objective_C語言特性

一、分類
二、擴展
三、代理(Delegate)
四、通知(NSNotification)
五、KVO (Key-value observing)
六、KVC(Key-value coding)
七、屬性關鍵字

runloop

一、RunLoop概念
二、RunLoop的數據結構
三、RunLoop的Mode
四、RunLoop的實現機制
五、RunLoop與NSTimer
六、RunLoop和線程

runtime

  • objc在向一個對象發送消息時,發生了什麼?
  • objc中向一個nil對象發送消息將會發生什麼?
  • objc中向一個對象發送消息[obj foo]和objc_msgSend()函數之間有什麼關係?
  • 什麼時候會報unrecognized selector的異常?
  • 能否向編譯後得到的類中增加實例變量?能否向運行時創建的類中添加實例變量?爲什麼?
  • 給類添加一個屬性後,在類結構體裏哪些元素會發生變化?
  • 一個objc對象的isa的指針指向什麼?有什麼作用?
  • [self class] 與 [super class]
  • runtime如何通過selector找到對應的IMP地址?
  • _objc_msgForward函數是做什麼的,直接調用它將會發生什麼?
  • runtime如何實現weak變量的自動置nil?知道SideTable嗎?
  • isKindOfClass 與 isMemberOfClass
  • 使用runtime Associate方法關聯的對象,需要在主對象dealloc的時候釋放麼?
  • 什麼是method swizzling(俗稱黑魔法)
  • Compile Error / Runtime Crash / NSLog…?
  • 代碼題(一)
  • 代碼題(二)

####UI相關

一、UIView與CALayer
二、事件傳遞與視圖響應鏈
三、圖像顯示原理
四、UI卡頓掉幀原因
五、滑動優化方案
六、UI繪製原理
七、離屏渲染

Block相關面試題

一、什麼是Block?
二、Block變量截獲
三、Block的幾種形式

多線程

一、 進程
二、 線程
三、 進程和線程的關係
四、 多進程
五、 多線程
六、任務
七、隊列
八、iOS中的多線程
九、GCD---隊列
十、死鎖
十一、GCD任務執行順序
十二、dispatch_barrier_async
十三、dispatch_group_async
十四、Dispatch Semaphore
十五、延時函數(dispatch_after)
十六、使用dispatch_once實現單例
十七、NSOperationQueue的優點
十八、NSOperation和NSOperationQueue
十九、NSThread+runloop實現常駐線程
二十、自旋鎖與互斥鎖

內存管理

一、內存佈局
二、內存管理方案
三、MRC(手動引用計數)和ARC(自動引用計數)
四、循環引用

算法面試題

1、不用中間變量,用兩種方法交換A和B的值
2、求最大公約數
3、模擬棧操作
4、排序算法
5、折半查找(二分查找)
6、集合結構 線性結構 樹形結構 圖形結構
7、數據結構的存儲
8、單向鏈表\雙向鏈表\循環鏈表
9、二叉樹/平衡二叉樹
10、過河經典問題,超詳細解析
11、字符串反轉
12、有序數組合並
13、HASH算法
14、查找兩個子視圖的共同父視圖
15、求無序數組中的中位數

網絡相關

一、請求報文和響應報文
二、HTTP的請求方式
三、HTTP的特點
四、HTTPS和HTTP的區別
五、HTTPS的連接建立流程
六、對稱加密和非對稱加密
七、分別用C語言、python、GCDAsyncUdpSocket來實現UDP通信
八、利用python實現Udp通信demo
九、iOS端基於UDP的簡易聊天demo

性能優化

1.基本概念
2.怎麼檢測離屏渲染:
3.怎麼檢測圖層混合:
4.光柵化
5.入門級
6.中級
7.高級

75道程序員邏輯思維面試題

持續更新中,記得收藏關注哦!.....

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章