iOS 常见面试题总结
IM
- socket是什么?
- socket原理是什么?
- socket的作用是什么?
- 如何保证udp协议下的消息发送成功?
- 即时通讯中使用UDP 与TCP 的区别以及优缺点?
- TCP协议原理?
- TCP 协议是什么?
- HTTP原理?
- HTTP 是什么?
- 即时通讯中如何处理丢包的问题?
- 如何保证断线重连?
- 断线重连的几种不同机制以及其优缺点???
- 如何保证消息的及时到达?
- 如何保证消息不重复发送???
- 如何保证离线消息准时并及时不丢失的送达??
block
- block的原理是什么??
- block在Objective-c中的内部是什么组成样式???
- block的两种使用形式??
- block与delegate的优缺点???
- 在什么情况下使用代理好以及在什么情况下使用block更优???
- block的实质是什么?一共有几种block?都是什么情况下生成的?
- 为什么在默认情况下无法修改被block捕获的变量? block,weak、__strong都做了什么?
- 模拟一下循环引用的一个情况?block实现界面反向传值如何实现?
多线程
- GCD 是什么???
- GCD 原理是什么??
- GCD 主要是为了解决什么问题???
- GCD 都有哪些特点???
- GCD 一般的几种典型的用途??
- iOS中多线程的几种解决方案??
- 在进行多线程资源抢夺时,如果两个线程同事访问一个可变变量,加1 ,访问10000此,最后结果是多少??
- 原子性与非原子性的区别?
- iOS中如何保证线程安全以及线程安全的几种解决方案???
- 如何解决在字典等对象中插入nil的解决方案??
- iOS 中如何保证程序的数据安全????
- 多线程中同步方式有哪些?
- 如何实现多任务的统一下载并合并处理???
- 进程和线程的区别?同步异步的区别?并行和并发的区别?
- 线程间通信?
- GCD的一些常用的函数?(group,barrier,信号量,线程同步)
- 如何使用队列来避免资源抢夺?
Objective-C
- 为什么说Objective-C是一门动态的语言?
- KVO 的原理是什么??如何自己动手实现KVO??
- 如何解决iOS中的事件冲突问题???
- strong、weak、unsafe_unretained 这三个修饰符分别是什么?
- performSelector为什么会内存泄漏?
- 如何对真机的crash日志进行分析?
- 对象回收时Weak指针自动被置为nil的实现原理?
- 常见的持久化实现方法?
- KVO的使用?实现原理?(为什么要创建子类来实现)
- KVC的使用?实现原理?(KVC拿到key以后,是如何赋值的?知不知道集合操作符,能不能访问私有属性,能不能直接访问_ivar)
- KVO 与 Notification的区别???
- 为什么代理要用weak?代理的delegate和dataSource有什么区别?block和代理的区别?
- 属性的实质是什么?包括哪几个部分?属性默认的关键字都有哪些?@dynamic关键字和@synthesize关键字是用来做什么的?
- 属性的默认关键字是什么?
- NSString为什么要用copy关键字,如果用strong会有什么问题?
- NSMutableArray 可不可以使用 copy 关键字修饰??
- 如何令自己所写的对象具有拷贝功能?
- 可变集合类 和 不可变集合类的 copy 和 mutablecopy有什么区别?如果是集合是内容复制的话,集合里面的元素也是内容复制么?
- 为什么IBOutlet修饰的UIView也适用weak关键字?
- nonatomic和atomic的区别?atomic是绝对的线程安全么?为什么?如果不是,那应该如何实现?
- 分类和扩展的区别?有什么区别?
内存管理
- objc使用什么机制管理对象内存?
swift
- swift 与oc 的区别? 为什么说swift 更安全
- swift 实现 方法交换的方式?
图像以及动画
- 动画中的图层树、逻辑树、动画树、显示树分别是什么?
- GPUImage的滤镜链优化
架构
- iOS开发中典型的几种架构是什么???以及其优缺点???
- iOS开发中如何实现组件化开发???
- APP的生命周期(应用程序的状态)有哪些?
- 讲一下MVC和MVVM,MVP?
- NSCache优于NSDictionary的几点?
UI
- UICollectionView自定义layout如何实现?
- 用StoryBoard开发界面有什么弊端?如何避免?
- 数据持久化的几个方案(fmdb用没用过)
- 说一下AppDelegate的几个方法?从后台到前台调用了哪些方法?第一次启动调用了哪些方法?从前台到后台调用了哪些方法?
- 知不知道Designated Initializer?使用它的时候有什么需要注意的问题?
- 实现description方法能取到什么效果?
Runtime
- iOS中的Method Swizzling 和 AOP ???
- iOS runtime的一些典型应用是什么??
- objc在向一个对象发送消息时,发生了什么?
- 什么时候会报unrecognized selector错误?iOS有哪些机制来避免走到这一步?
- 能否向编译后得到的类中增加实例变量?能否向运行时创建的类中添加实例变量?为什么?
- runtime如何实现weak变量的自动置nil?
- 给类添加一个属性后,在类结构体里哪些元素会发生变化?
RunLoop
- 对RunLoop的理解?
- runloop和线程有什么关系?主线程默认开启了runloop么?子线程呢?
- runloop在开发中的使用?如何开启一个runloop?
- runloop实现原理是什么?? 源码解析实现原理是什么???
- runloop的mode是用来做什么的?有几种mode?
- 为什么把NSTimer对象以NSDefaultRunLoopMode(kCFRunLoopDefaultMode)添加到主运行循环以后,滑动scrollview的时候NSTimer却不动了?
- 苹果是如何实现Autorelease Pool的?
类结构
- isa指针?(对象的isa,类对象的isa,元类的isa都要说)
- 类方法和实例方法有什么区别?
- 介绍一下分类,能用分类做什么?内部是如何实现的?它为什么会覆盖掉原来的方法?
- 运行时能增加成员变量么?能增加属性么?如果能,如何增加?如果不能,为什么?
- objc中向一个nil对象发送消息将会发生什么?(返回值是对象,是标量,结构体)
性能优化
- UITableview的优化方法(缓存高度,异步绘制,减少层级,hide,避免离屏渲染)
- 有没有用过运行时,用它都能做什么?(交换方法,创建类,给新创建的类增加方法,改变isa指针)
- 看过哪些第三方框架的源码?都是如何实现的?(如果没有,问一下多图下载的设计)
- SDWebImage的缓存策略?
- AFN为什么添加一条常驻线程?
- 如何对程序进行优化???
- 解决离屏渲染的几种方式 ???
- 如何统计线上的卡顿问题??
- 如何捕捉崩溃信息???
代码质量以及内存泄露排查
UITableView性能优化几种方式以及其优缺点和实现原理??
性能优化单独模块
- 如何检测内存泄漏??
- 如何检测循环引用???
- 如何监测动画执行效率???
- 如何检测内存使用情况???
- 如何检测网络环境,以及在若网络下的使用???
- 如何检测代码执行效率???
单独模块
- iOS的runtime
- 性能优化
- 动画树
- 图形学
- 算法
- OpenGL ES
- GPUImage
- leetcode算法题目
- 网络原理
- 多线程
免责声明
以上部分问题及答案来自网络,因长期收集, 先整理时已无法找到原作者, 此处如有侵权,望告知