不好快跑 發表於 2020-6-17 15:40:00

整理:iOS开发知识点

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