2019年,iOS大厂面试题持续更新(附答案)

96
iOS猿_员
34.2 2019.01.26 15:50* 字数 3289

这个栏目将持续更新--请iOS的小伙伴关注!

(答案不唯一,欢迎留言,文章最后有福利)

1、多线程的应用
2、GCD实现多个请求都完成之后返回结果
3、A、B两个int数组,得到A数组中B数组不包含的元素
4、事件传递链,页面上一个按钮,按钮和它的superView有一样的action,为什么只执行button的action?
5、runtime的应用
6、array中加入对象,对象的retainCount会加1 如何是的对象自己管理自己的生命周期
7、bugly的卡顿监控原理
8、如何架构一个app
9、c中,malloc对象,传入了size,free只需要指针,这是为什么?
10、数据库选择原因(realm 、coreData、FMDB、Sqlite)
11、数据库做过哪些优化
12、脚本打包原理
13、app运行过程中,同时最多有几个线程,怎么实现的高并发
14、iOS应用导航模式有哪些?
15、iOS中持久化方式有哪些?
16、iOS单元测试框架有哪些?
17、iOS atomatic nonatomic区别和理解
18、#import 跟 #include 有 什 么 区 别 , @class 呢 , #import<> 跟 #import” ”有什么区别?
19、Object-c 的类可以多重继承么?可以实现多个接口么?Category 是什 么?重写一个类的方式用继承好还是分类好?为什么?
20、属性 readwrite,readonly,assign,retain,copy,nonatomic 各是 什么作用,在那种情况下用?
21、对于语句 NSString*obj=[[NSDataalloc]init];obj 在编译时和运行时 分别时什么类型的对象?
22、常见的 objective-c 的数据类型有那些, 和 C 的基本数据类型有什 么区别?如:NSInteger 和 int
23、Objective-C 如何对内存管理的,说说你的看法和解决方法?
24、原子(atomic)跟非原子(non-atomic)属性有什么区别?
25、ObjectC 中创建线程的方法是什么?如果在主线程中执行代码,方 法是什么?如果想延时执行代码、方法又是什么?
26、浅复制和深复制的区别?
27、类别的作用?继承和类别在实现中有何区别?
28、类别和类扩展的区别
29、我们说的 OC 是动态运行时语言是什么意思?
30、类变量的@protected,@private,@public,@package,声明各有什么 含义?
31、简述 OC 中内存管理机制。与 retain 配对使用的方法是 dealloc 还 是 release,为什么?需要与 alloc 配对使用的方法是 dealloc 还是 release,为什么...
32、说说响应链
33、线程是什么?进程是什么?二者有什么区别和联系?
34、RunLoop 是什么?
35、简述你对 UIView、UIWindow 和 CALayer 的理解
36、iOS 的动态性
37、谈谈对性能优化的看法,如何做?
38、NSAutoreleasePool 是怎么工作的?
39、什么情况使用 weak 关键字,相比 assign 有什么不同?
40、runtime 如何实现 weak 属性?
41、怎么用 copy 关键字?
42、用 @property 声明的 NSString(或 NSArray,NSDictionary)经常使用 copy 关键字,为什么?如果改用 strong 关键字,可能造成什么问题?
43、怎么理解浅拷贝与深拷贝?
44、如何让自己的类用 copy 修饰符?
45、@property 的本质是什么?
46、@protocol 和 category 中如何使用 @property?
47、category 和 extension 有什么区别?category 是如何加载的?category 的方法覆盖是怎么处理的?
48、@synthesize 和 @dynamic 分别有什么作用?
49、ARC 下,不显式指定任何属性关键字时,默认的关键字都有哪些?
50、在有了自动合成属性实例变量之后,@synthesize 还有哪些使用场景?
51、一个 objc 对象如何进行内存布局(考虑有父类的情况)?
52、runtime 如何通过 selector 找到对应的 IMP 地址(分别考虑实例方法和类方法)?Selector、Method 和 IMP 的有什么区别与联系?
53、objc 中的类方法和实例方法有什么本质区别和联系?
54、objc_msgSend、_objc_msgForward 都是做什么的?OC 中的消息调用流程是怎样的?
55、能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
56、runloop 和线程有什么关系?
57、runloop 的 mode 作用是什么?
58、以 + scheduledTimerInterval... 的方式触发的 timer,在滑动页面上的列表时,timer 会暂定回调,为什么?如何解决?WithTime
59、猜想 runloop 内部是如何实现的?
60、聊一聊iOS 中的离屏渲染?
61、objc 使用什么机制管理对象内存?
62、ARC 通过什么方式帮助开发者管理内存?
63、iOS 开发中常见的内存问题有哪些?
64、一个 autorealese 对象在什么时刻释放?
65、如何实现 autoreleasepool 的?
66、如何用 GCD 同步若干个异步调用?
67、dispatch_barrier_async 的作用是什么?
68、如何手动触发一个 value 的 KVO?
69、BAD_ACCESS 在什么情况下出现?
70、动态计算文本高度的时候需要注意什么?
71、如何优化 App 的启动耗时?
72、什么是事件响应链?
73、当我们要做一些基于 CALayer 的动画时,有时需要设置 layer 的锚点来配合动画,这时候我们需要注意什么?
74、聊一聊 TCP 的滑动窗口协议?
75、聊一聊 TCP 的拥塞控制相关过程?
76、聊一聊你知道的几种查找树?
77、load 和 initialize 方法的区别?
78、如何优化 App 的的包大小?
79、struct和class的区别
80、介绍一下观察者模式
81、在一个HTTPS连接的网站里,输入账号密码点击登录后,到服务器返回这个请求前,中间经历了什么
82、在一个app中间有一个button,在你手触摸屏幕点击后,到这个button收到点击事件,中间发生了什么
83、循环引用的产生原因,以及解决方法
84、键路径(keyPath)、键值编码(KVC)、键值观察(KVO)
85、NSNotification、Block、Delegate和KVO的区别
86、static、self、super关键字的作用
87、iOS开发中数据持久性有哪几种?
88、Core Data的6成员对象
89、Core Data的功能
90、堆和栈的区别
91、线程与进程的区别和联系?
92、多线程编程
93、NSString 如何计算字符的个数?
94、PKI体系中加密和签名的区别?
95、如何自己高效实现NSUserdefault?
96、解析TCP慢启动特性?
97、如何用HTTP实现长连接?
98、数据库建表的时候索引有什么用?
99、iOS下如何实现指定线程数目的线程池?
100、谈下Objective C都有哪些锁机制,你一般用哪个?
101、聊下HTTP post的body体使用form-urlencoded和multipart/form-data的区别。
102、让你设计一种机制检测UIViewController的内存泄漏,你会怎么做?
103、通过[UIImage imageNamed:]生成的对象什么时候被释放?
104、applicationWillEnterForeground和applicationDidBecomeActive都会在哪些场景下被调用?举例越多越好。
105、dSYM你是如何分析的
106、多线程有哪几种?你更倾向于哪一种?
107、单例的弊端
108、App启动过慢,你可能想到的因素有哪些?
109、怎么防止反编译?
110、TCP和UDP的区别于联系
111、TCP连接的三次握手
112、Scoket连接和HTTP连接的区别:
113、HTTP协议的特点,关于HTTP请求GET和POST的区别
114、ASIHttpRequest、AFNetWorking之间的区别
115、XML数据解析方式各有什么不同,JSON解析有哪些框架?
116、SVN的使用
117、如何进行网络消息推送
118、网络七层协议
119、关键字volatile有什么含意?并给出三个不同的例子:
120、property属性的修饰符的作用
121、XIB与Storyboards的优缺点
122、内存的使用和优化的注意事项
123、基于CTMediator的组件化方案,有哪些核心组成?
124、为什么CTMediator方案优于基于Router的方案?
125、MVVM设计模式
126、weak修饰的释放则自动被置为nil的实现原理
127、HTTPS的加密原理
128、你认为开发中那些导致crash?
129、分析下SDWebImage
130、SEL和Method和IMP分别说下再谈下对IMP的理解?
131、Autorelease的原理 ?
132、ARC的工作原理
133、用户需要上传和下载一个重要的资料文件,应该如何判断用户本次是否上传成功和下载成功了?
134、isa指针的作用
135、与 NSURLConnection 相比,NSURLsession 改进哪些?
136、使用drawRect有什么影响?
137、什么时候会报unrecognized selector的异常?如何避免?
138、iOS中常用的数据存储方式有哪些?
139、描述一个ViewController的生命周期
140、Block中可以修改全局变量,全局静态变量,局部静态变量吗?
141、SDWebImage实现原理是什么? 它是如何解决tableView的复用时出现图片错乱问题的呢?
142、AFNetworking 底层原理分析
143、描述下SDWebImage里面给UIImageView加载图片的逻辑
144、分析json、xml 的区别? json、xml 解析 式的底层是如何让处理的
145、对程序性能的优化你有什么建议?
146、讲讲iOS事件响应链的原理
147、假如Controller太臃肿,如何优化?
148、介绍下App启动的完成过程?
149、哈希原理
150、哈希存储过程
151、NSDate\CFAbsoluteTimeGetCurrent\CACurrentMediaTime的区别
152、讲一下MVC和MVVM,MVP?
153、为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
154、进程和线程的区别?同步异步的区别?并行和并发的区别?
155、如何提升 tableview 的流畅度?
156、编程中的六大设计原则?
157、NSOperation 与 GCD 的主要区别?
158、请说明并比较以下关键词:strong, weak, assign, copy
159、Socket原理
160、请说明并比较以下关键词:__weak,__block
161、什么是ARC?
162、ARC的底层原理,怎么实现自动释放的,和MRC的区别是什么?
163、苹果为什么推出ARC?
164、有了线程,你觉得为什么还要有runloop?,runloop和线程有什么关系?
165、objc中向一个nil对象发送消息将会发生什么?
166、常用的设计模式
167、单例会有什么弊端?
168、你会如何存储用户的一些敏感信息,如登录的token
169、UIScrollView大概是如何实现的,它是如何捕捉、响应手势的?
170、如何实现夜间模式?
171、如何捕获异常?
172、frame与center bounds的关系
173、通知中心的实现原理?
174、断点续传如何实现的?
175、通知,代理,KVO的区别,以及通知的多线程问题
176、你一般是如何优化你的APP的?
177、push Notification原理
178、iOS 中内省的几个方法?
179、class方法和objc_getClass方法有什么区别?
180、一个int变量被__block修饰与否的区别?
181、什么是离屏渲染?什么情况下会触发?该如何应对?
182、反射是什么?可以举出几个应用场景么?
183、关联对象有什么应用,系统如何管理关联对象?其被释放的时候需要手动将其指针置空么?
184、Autoreleasepool所使用的数据结构是什么?AutoreleasePoolPage结构体了解么?

持续更新,多多关注


另外附上一份pdf的面试题大全,以及收集的各大厂面试题 ! 要的加iOS高级技术群:624212887,群文件直接获取

如下图所示:

iOS面试题大全
iOS面试题大全
iOS面试题合集
iOS面试文集
Web note ad 1