iOS开发常见面试题
相信很多新手小白对iOS开发常见面试题的了解处于懵懂状态,通过这篇文章的总结,希望你能有所收获。如下资料是关于iOS开发常见面试题的内容。
岳阳楼网站建设公司创新互联建站,岳阳楼网站设计制作,有大型网站制作公司丰富经验。已为岳阳楼1000多家提供企业网站建设服务。企业网站搭建\外贸网站建设要多少钱,请找那个售后服务好的岳阳楼做网站的公司定做!
一、Runtime
- 一个objc对象的isa的指针指向什么?有什么作用?
- 一个 NSObject 对象占用多少内存空间?
- 说一下对 class_rw_t 的理解?
- 说一下对 class_ro_t 的理解?
- 说一下对 isa 指针的理解
- 说一下 Runtime 的方法缓存?存储的形式、数据结构以及查找的过程?
- 使用runtime Associate方法关联的对象,需要在主对象dealloc的时候释放么?
- 实例对象的数据结构?
- 什么是method swizzling(俗称黑魔法)
- 什么时候会报unrecognized selector的异常?
- 如何给 Category 添加属性?关联对象以什么形式进行存储?
- 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
- 类对象的数据结构?
- runtime如何通过selector找到对应的IMP地址?
- runtime如何实现weak变量的自动置nil?知道SideTable吗?
- objc中向一个nil对象发送消息将会发生什么?
- objc在向一个对象发送消息时,发生了什么?
- isKindOfClass 与 isMemberOfClass
- Category 在编译过后,是在什么时机与原有的类合并到一起的?
- Category 有哪些用途?
- Category 的实现原理?
- _objc_msgForward函数是做什么的
- [self class] 与 [super class]
- 代码题 一
- 代码题 二
二、Runloop
- 为什么 NSTimer 有时候不好使?
- AFNetworking 中如何运用 Runloop?
- autoreleasePool 在何时被释放?
- PerformSelector 的实现原理?
- PerformSelector:afterDelay:这个方法在子线程中是否起作用?为什么?怎么解决?
- RunLoop的Mode
- RunLoop的实现机制
- RunLoop和线程
- RunLoop的数据结构
- RunLoop概念
- RunLoop与NSTimer
- 讲一下 Observer ?
- 解释一下 NSTimer
- 解释一下
事件响应
的过程? - 解释一下 手势识别 的过程?
- 什么是异步绘制?
- 利用 runloop 解释一下页面的渲染的过程?
三、Objective_C语言特性
- KVC(Key-value coding)
- KVO (Key-value observing)
- 分类、扩展、代理(Delegate)
- 属性关键字
- 通知(NSNotification)
四、Animation
- 请说一下对 CALayer 的认识。
CALayer
的Contents
有几下几个主要的属性:
五、Block
- Block的几种形式
- Block变量截获
- 什么是Block?
六、UI相关
七、多线程
- 进程、线程
- 多进程、多线程
- 任务、队列
- iOS中的多线程
- GCD---队列
- 死锁
- GCD任务执行顺序
- dispatch_barrier_async
- dispatch_group_async
- Dispatch Semaphore
- 延时函数(dispatch_after)
- 使用dispatch_once实现单例
- NSOperationQueue的优点
- NSOperation和NSOperationQueue
- NSThread+runloop实现常驻线程
- 自旋锁与互斥锁
八、内存管理
- 在 Obj-C 中,如何检测内存泄漏?你知道哪些方式?
- 在 MRC 下如何重写属性的 Setter 和 Getter_
- 循环引用
- 说一下什么是
悬垂指针
?什么是野指针
? - 说一下对 retain,copy,assign,weak,_Unsafe_Unretain 关键字的理解
- 是否了解 深拷贝 和 浅拷贝 的概念,集合类深拷贝如何实现
- 使用自动引用计数应遵循的原则
- 能不能简述一下 Dealloc 的实现机制
- 内存中的5大区分别是什么?
- 内存管理默认的关键字是什么?
- 内存管理方案
- 内存布局
- 讲一下
iOS
内存管理的理解 - 讲一下
@dynamic
关键字? - 简要说一下
@autoreleasePool
的数据结构? - 访问
__weak
修饰的变量,是否已经被注册在了@autoreleasePool
中?为什么? retain
、release
的实现机制?- MRC(手动引用计数)和ARC(自动引用计数)
BAD_ACCESS
在什么情况下出现?autoReleasePool
什么时候释放?- ARC自动内存管理的原则
ARC
在运行时做了哪些工作?ARC
在编译时做了哪些工作ARC
的retainCount
怎么存储的?__weak
属性修饰的变量,如何实现在变量没有强引用后自动置为nil
?__weak
和_Unsafe_Unretain
的区别?
九、设计模式
- 如何设计一个时长统计框架?
- 如何设计一个图片缓存框架?
- 编程中的六大设计原则?
十、数据安全及加密
- RSA非对称加密
- 简述
SSL
加密的过程用了哪些加密方法,为何这么作?
十一、数据结构与算法
- iOS开发 数据结构
- iOS 算法面试题(一)
- iOS 算法面试题(二)
十二、网络相关
- HTTP协议
- HTTPS、对称加密、非对称加密
- 一个基于UDP的简单的聊天Demo
- UDP的特点、UDP的报文结构及差错检测
- TCP、三次握手、四次挥手、代码实现
- 可靠数据传输、流量控制(滑动窗口)、拥塞控制
- DNS
- Cookie和Session
- IP协议、IP数据报分片、IPv4编址、网络地址转换(NAT)
- IPv6、从IPv4到IPv6的迁移
十三、性能优化
- iOS 性能优化面试题
- 光栅化
- 日常如何检查内存泄露?
- 如何高性能的画一个圆角?
- 如何提升
tableview
的流畅度? - 如何优化
APP
的电量? - 如何有效降低 APP 包的大小?
- 什么是 离屏渲染?什么情况下会触发?该如何应对?
- 如何检测离屏渲染?
- 怎么检测图层混合?
关于iOS开发常见面试题就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果喜欢这篇文章,不如把它分享出去让更多的人看到。
文章题目:iOS开发常见面试题
文章出自:http://scyanting.com/article/gdsdps.html