iOS面试题整理
在线查看地址:https://ios.nobady.cn
iOS面试相关问题整理,做这个的初心是希望能巩固自己的基础知识,当然也希望能帮助更多的开发者,如发现答案不准确或者不完整的可前往 Github 提交完善。
主要从以下方面做了整理:
数据结构- 1.数据结构的存储一般常用的有几种?各有什么特点?
- 2.集合结构 线性结构 树形结构 图形结构
- 3.单向链表 双向链表 循环链表
- 4.数组和链表区别
- 5.堆、栈和队列
- 6.输入一棵二叉树的根结点,求该树的深度?
- 7.输入一课二叉树的根结点,判断该树是不是平衡二叉树?
- 1.时间复杂度
- 2.空间复杂度
- 3.常用的排序算法
- 4.字符串反转
- 5.链表反转(头差法)
- 6.有序数组合并
- 7.查找第一个只出现一次的字符(Hash查找)
- 8.查找两个子视图的共同父视图
- 9.无序数组中的中位数(快排思想)
- 10.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
- 1.nil、NIL、NSNULL 有什么区别?
- 2.如何实现一个线程安全的 NSMutableArray?
- 3.atomic 修饰的属性是绝对安全的吗?为什么?
- 4.实现 isEqual 和 hash 方法时要注意什么?
- 5.id 和 instanceType 有什么区别?
- 6.self和super的区别
- 7.@synthesize和@dynamic分别有什么作用?
- 8.typeof 和 typeof,typeof 的区别?
- 9.类族
- 10.struct和class的区别
- 1.UIView 和 CALayer 是什么关系?
- 2.Bounds 和 Frame 的区别?
- 3.setNeedsDisplay 和 layoutIfNeeded 两者是什么关系?
- 4.谈谈对UIResponder的理解
- 5.loadView的作用?
- 6.使用 drawRect有什么影响?
- 7.keyWindow 和 delegate的window有何区别
- 1.说一下 JS 和 OC 互相调用的几种方式?
- 2.在使用 WKWedView 时遇到过哪些问题?
- 1.什么情况使用 weak 关键字,相比 assign 有什么不同?
- 2.如何让自己的类用 copy 修饰符?如何重写带 copy 关键字的 setter?
- 3.@property 的本质是什么?ivar、getter、setter 是如何生成并添加到这个类中的
- 4.@protocol 和 category 中如何使用 @property
- 5.简要说一下 @autoreleasePool 的数据结构??
- 6.BAD_ACCESS在什么情况下出现?
- 7.使用CADisplayLink、NSTimer有什么注意点?
- 8.iOS内存分区情况
- 9.iOS内存管理方式
- 1.KVC实现原理
- 2.KVO的实现原理
- 3.如何手动触发KVO方法
- 4.通知和代理有什么区别
- 5.block和delegate的区别
- 6.为什么Block用copy关键字
- 1.网络七层协议
- 2.Http 和 Https 的区别?Https为什么更加安全?
- 3.HTTPS的连接建立流程
- 4.解释一下 三次握手 和 四次挥手
- 5.TCP 和 UDP的区别
- 6.Cookie和Session
- 7.DNS是什么
- 8.DNS解析过程
- 1.iOS 开发中数据持久性有哪几种?
- 2.FMDB数据结构变化升级
- 1.进程与线程
- 2.什么是多线程?
- 3.多线程的优点和缺点
- 4.多线程的 并行 和 并发 有什么区别?
- 5.iOS中实现多线程的几种方案,各自有什么特点?
- 6.多个网络请求完成后执行下一步
- 7.多个网络请求顺序执行后执行下一步
- 8.异步操作两组数据时, 执行完第一组之后, 才能执行第二组
- 9.多线程中的死锁?
- 10.GCD执行原理?
- 1.UIView动画与核心动画的区别?
- 2.当我们要做一些基于 CALayer 的动画时,有时需要设置 layer 的锚点来配合动画,这时候我们需要注意什么?
- 1.图像的压缩方式
- 2.如何计算图片加载内存中所占的大小
- 1.对称加密和非对称加密的区别?
- 2.简述 SSL 加密的过程用了哪些加密方法,为何这么作?
- 3.iOS的签名机制是怎么样的
- 1.Category 的实现原理?
- 2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?
- 3.Objective-C 如何实现多重继承?
- 4.runtime 如何实现 weak 属性?
- 5.讲一下 OC 的消息机制
- 6.runtime具体应用
- 7.runtime如何通过selector找到对应的IMP地址?
- 8.简述下Objective-C中调用方法的过程
- 9.load和initialize的区别
- 10.怎么理解Objective-C是动态运行时语言。
- 1.Runloop 和线程的关系?
- 2.RunLoop的运行模式
- 3.runloop内部逻辑?
- 4.autoreleasePool 在何时被释放?
- 5.GCD 在Runloop中的使用?
- 6.AFNetworking 中如何运用 Runloop?
- 7.PerformSelector 的实现原理?
- 8.PerformSelector:afterDelay:这个方法在子线程中是否起作用?
- 9.事件响应的过程?
- 10.手势识别的过程?
- 11.CADispalyTimer和Timer哪个更精确
- 1.MVC、MVP、MVVM模式
- 2.关于RAC你有怎样运用到解决不同API依赖关系
- 3.@weakify和我们宏定义的WeakSelf有什么区别?
- 4.微服务架构设想。
- 1.iOS有哪些常见的设计模式?
- 2.单例会有什么弊端?
- 3.编程中的六大设计原则?
- 1.组件化有什么好处?
- 2.你是如何组件化解耦的?
- 3.为什么CTMediator方案优于基于Router的方案?
- 4.基于CTMediator的组件化方案,有哪些核心组成?
- 1.LLDB常用的调试命令?
- 2.断点调试
- 3.iOS 常见的崩溃类型有哪些?
- 1.造成tableView卡顿的原因有哪些?
- 2.如何提升 tableview 的流畅度?
- 3.APP启动时间应从哪些方面优化?
- 4.如何降低APP包的大小
- 5.如何检测离屏渲染与优化
- 6.日常如何检查内存泄露?
- 1.YYKit
- 2.SDWebImage加载图片过程
- 3.YYWebImage和SDWebImage对比
- 4.AFNetworking 底层原理分析
- 1.SVN与Git优缺点比较
- 2.Git与SVN的区别
- 1.你在项目中使用过什么持续集成方式?
- 2.jenkins怎么备份恢复
- 3.jenkins你都用了哪些插件?