iOS 基础面试题汇总

系统学习推荐一些经典书籍:
《Effective Objective-C 2.0》
《Objective-C 高级编程》
《剑指Offer》
《程序员的自我修养》


本文收录了一些 iOS 常见的面试题目,重点是要理解其背后原理实现,知道其具体应用场景。

1.Runloop 的实现原理和数据结构,及其应用?html

包括 Runloop 与线程的关系,Runloop 的 Mode 等ios

参考:git

深刻理解 Runloop程序员

iOS Runloop 详解github

iOS 刨根问底--深刻理解 Runloop面试


2.谈谈对 runtime 的理解,及其应用, 为何称 OC 为动态语言?编程

包括 isa 指针, SEL,  IMP,MetaClass,objec_msgSend, Method Swizzling,Objective-C Associated Objects 等设计模式

参考:数据结构

Objective-C Runtime多线程

iOS运行时(Runtime)详解+Demo

iOS 消息发送与转发详解

[iOS] runtime 的使用场景--实战篇


runtime 应用:

Method Swizzling OC 实现:

iOS runtime实战应用:Method Swizzling

Method Swizzling Swift 实现:

如何优雅地在Swift4中实现Method-Swizzling

遍历对象的属性:

iOS runtime实战应用:成员变量和属性

class_copyPropertyList与class_copyIvarList区别,获取属性,使用runtime方法的注意事项

ios开发 @property 和 Ivar 的区别


3.内存管理 ARC, MRC

包括内存泄露,野指针,循环引用,内存泄露调试工具,堆,栈等

参考:

iOS 内存管理详解


4.iOS 消息传递机制

参考:

iOS 消息传递机制


5.多线程,哪些场景须要开辟线程?

包括 NSTread, NSOperationQueue,CGD,同步锁,主线程刷新 UI,

同步,异步,并行,串行

参考:

iOS 中的多线程技术

iOS 并行开发系列--并行开发其实很容易


6.Autoreleasepool 原理和使用场景

参考:

黑幕背后的 Autoreleasepool


7.App 的启动过程

参考:

深刻理解 iOS App 的启动过程


8.UIViewController 生命周期

参考:

探究 UIViewController 生命周期


9.UIView 的绘制流程

包括 init, initwithcode, awake, layoutsubviews, drawrect 等方法的调用顺序,使用xib, storyboard 的调用顺序

setNeedsDisplay, layoutIfNeeded,hittest, pointinside

参考:

谈谈 layoutSubviews 和 drawrect

UIView 的 hitTest 和pointInside 方法


10.UIView 的 layer

包括 anchorPoint,position,动画

参考:

iOS 开发系列--让你的应用动起来


11.Block 本质

包括 __weak 和 __block,循环引用问题

参考:

iOS Block 用法和实现原理


12.property 和 ivar 的区别

包括属性关键字 strong,weak,assign, retain, copy, atomic, nonatomic,readonly, readwrite

参考:

iOS 开发 @property 和 ivar 的区别

OC MRC 成员变量, property, synthesize, dynamic

iOS 面试之@property


13.KVO 和 KVC,Delegate,单例, Notification等设计模式

14.static, const, extern 关键字的做用

参考:

OC 中的 static,const,extern 的理解


15.Category 和 Extension, Protocol

16.iOS中经常使用的数据存储方式有哪些?

包括 NSUserDefault,KeyChainplist,Archive(归档),SQLite,CoreData

17.iOS的沙盒目录结构是怎样的?



面试题参考:

  1. 2018 iOS 面试题及答案
相关文章
相关标签/搜索