iOS学习面试相关问题整理,希望能巩固自己的基础知识,当然也希望能帮助更多的开发者。
数据结构
1.数据结构的存储一般常用的有几种?各有什么特点?
2.集合结构 线性结构 树形结构 图形结构
3.单向链表 双向链表 循环链表
4.数组和链表区别
5.堆、栈和队列
6.输入一棵二叉树的根结点,求该树的深度?
7.输入一课二叉树的根结点,判断该树是不是平衡二叉树?
算法
1.时间复杂度
2.空间复杂度
3.常用的排序算法
4.字符串反转
5.链表反转(头差法)
6.有序数组合并
7.查找第一个只出现一次的字符(Hash查找)
8.查找两个子视图的共同父视图
9.无序数组中的中位数(快排思想)
10.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。
Foundation
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的区别
UIKit
1.UIView 和 CALayer 是什么关系?
2.Bounds 和 Frame 的区别?
3.setNeedsDisplay 和 layoutIfNeeded 两者是什么关系?
4.谈谈对UIResponder的理解
5.loadView的作用?
6.使用 drawRect有什么影响?
7.keyWindow 和 delegate的window有何区别
WebView
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执行原理?
作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:519832104 不管你是小白还是大牛欢迎入驻,分享经验,讨论技术,大家一起交流学习成长!
另附上一份各好友收集的大厂面试题,需要iOS开发学习资料、面试真题,可以添加iOS开发进阶交流群,进群可自行下载!
动画
1.UIView动画与核心动画的区别?
2.当我们要做一些基于 CALayer的动画时,有时需要设置layer的锚点来配合动画,这时候我们需要注意什么?
图像处理
1.图像的压缩方式
2.如何计算图片加载内存中所占的大小
数据安全及加密
1.对称加密和非对称加密的区别?
2.简述 SSL 加密的过程用了哪些加密方法,为何这么作?
3.iOS的签名机制是怎么样的
Runtime
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是动态运行时语言。
Runloop
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你都用了哪些插件?