2020年面向iOS开发人员的知识点总结(更新中)
<h4 id="前言">前言:</h4><p>最近在整理自己的技术栈,收集了一些自己认为比较重要的知识点分享给大家。</p>
<h4 id="runloop">Runloop</h4>
<p>1.iOS中触摸事件传递和响应原理</p>
<p>2.为什么只有主线程的runloop是开启的</p>
<p>3.为什么只在主线程刷新UI</p>
<p>4.PerformSelector和runloop的关系</p>
<p>5.GCD 在Runloop中的使用?</p>
<p>6.AFNetworking 中如何运用 Runloop?</p>
<h4 id="runtime">Runtime</h4>
<p>1.Category 的实现原理?</p>
<p>2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?</p>
<p>3.Objective-C 如何实现多重继承?</p>
<p>4.runtime 如何实现 weak 属性?</p>
<p>5.Objective-C 的消息机制如何理解?</p>
<p>6.runtime具体应用</p>
<p>7.runtime如何通过selector找到对应的IMP地址?</p>
<p>8.简述下Objective-C中调用方法的过程</p>
<p>9.怎么理解Objective-C是动态运行时语言。</p>
<h4 id="kvo">KVO</h4>
<p>1.实现原理</p>
<p>2.通过KVC修改属性会触发KVO么?KVC的赋值和取值过程是怎样的?原理是什么?</p>
<p>3. 哪些情况下使用kvo会崩溃,怎么防护崩溃</p>
<p>4. kvo的优缺点 </p>
<h4 id="block">Block</h4>
<p>1.block的内部实现,结构体是什么样的</p>
<p>2. 一个int变量被__block修饰与否的区别?</p>
<p>3. block在修改NSMutableArray,需不需要添加__block</p>
<p>4. block怎么进行内存管理的</p>
<p>5. Block怎么被copy到堆上</p>
<p>6._block 在 ARC 和 MRC 下含义一样吗?</p>
<h4 id="多线程">多线程</h4>
<p>1.iOS开发中有多少类型的线程?分别举例</p>
<p>2. GCD 队列类型</p>
<p>3.如何实现线程同步,有多少方式就说多少</p>
<p>4.dispatch_once实现原理</p>
<p>5.什么情况下会死锁</p>
<blockquote>
<p>这是我的iOS开发交流群: 519832104不管你是小白还是大牛欢迎入驻,可以一起分享经验,讨论技术,共同学习成长!<br>
另附上一份各好友收集的大厂面试题,需要iOS开发学习资料、面试真题,进群即可领取!<br>
<img src="https://upload-images.jianshu.io/upload_images/23675445-41f96ddb6f79194b?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240"></p>
<h2 id="点击此处立即与ios大牛交流学习">点击此处,立即与iOS大牛交流学习</h2>
</blockquote>
<h4 id="架构设计">架构设计</h4>
<p>1.MVC、MVP、MVVM设计模式</p>
<p>2.常见的设计模式</p>
<p>3.单例的利弊</p>
<p>4.如果保证项目的稳定性</p>
<p>5.设计一个图片缓存框架(LRU)</p>
<h4 id="数据结构">数据结构</h4>
<p>1.数据结构的存储一般常用的有几种?各有什么特点?</p>
<p>2.集合结构 线性结构 树形结构 图形结构</p>
<p>3.单向链表 双向链表 循环链表</p>
<p>4.数组和链表区别</p>
<p>5.堆、栈和队列</p>
<p>6.输入一棵二叉树的根结点,求该树的深度?</p>
<p>7.输入一棵二叉树的根结点,判断该树是不是平衡二叉树?</p>
<h4 id="算法">算法</h4>
<p>1.时间复杂度</p>
<p>2.空间复杂度</p>
<p>3.常用的排序算法</p>
<p>4.字符串反转</p>
<p>5.链表反转(头差法)</p>
<p>6.有序数组合并</p>
<p>7.查找第一个只出现一次的字符</p>
<p>8.查找两个子视图的共同父视图</p>
<p>9.无序数组中的中位数(快排思想)</p>
<p>10.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。</p>
<h4 id="foundation">Foundation</h4>
<p>1.nil、Nil、NULL和NSNull之间的区别<br>
</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.@dynamic与@synthesize的区别</p>
<h4 id="swift">Swift</h4>
<p>1.Swift 和OC 如何相互调用?</p>
<p>2.struct和class的区别</p>
<p>3.class 和 struct 的优势</p>
<p>4.访问控制关键字 open, public, internal, fileprivate, private 的区别?</p>
<p>5.说明并比较以下关键词:strong, weak, unowned</p>
<p>6.如何将Swift 中的协议(protocol)中的部分方法设计为可选(optional)?</p>
<p>7.Swift的尾随闭包、逃逸闭包、自动闭包</p>
<h4 id="uikit">UIKit</h4>
<p>1.UIView 和 CALayer 是什么关系?</p>
<p>2.Bounds 和 Frame 的区别?</p>
<p>3.谈谈对UIResponder的理解</p>
<p>4.loadView方法的使用</p>
<p>5.keyWindow 和 delegate的window有何区别</p>
<h4 id="动画">动画</h4>
<p>1.UIView动画与核心动画的区别?</p>
<p>2.当我们要做一些基于 CALayer 的动画时,有时需要设置 layer的锚点来配合动画,这时候我们需要注意什么?</p>
<h4 id="图像处理">图像处理</h4>
<p>1.图像的压缩方式有哪些?</p>
<p>2.如何计算图片加载内存中所占的大小</p>
<h4 id="数据安全及加密">数据安全及加密</h4>
<p>1.对称加密和非对称加密的区别?</p>
<p>2.简述 SSL 加密的过程用了哪些加密方法,为何这么做?</p>
<p>3.iOS的签名机制是怎么样的</p>
<h4 id="组件化">组件化</h4>
<p>1.组件化有什么好处?</p>
<p>2.你是如何组件化解耦的?</p>
<p>3.为什么CTMediator方案优于基于Router的方案?</p>
<p>4.基于CTMediator的组件化方案,有哪些核心组成?</p>
<h4 id="调试技巧">调试技巧</h4>
<p>1.LLDB常用的调试命令?</p>
<p>2.断点调试</p>
<p>3.iOS 常见的崩溃类型有哪些?</p>
<h4 id="源码理解">源码理解</h4>
<p>1.YYKit</p>
<p>2.SDWebImage加载图片过程</p>
<p>3.YYWebImage 与 SDWebImage 的比较</p>
<p>4.AFNetworking 底层原理分析</p>
<h4 id="代码管理">代码管理</h4>
<p>1.SVN与Git优缺点比较</p>
<h4 id="持续集成">持续集成</h4>
<p>1.你在项目中使用过什么持续集成方式?</p>
<p>2.jenkins怎么备份恢复</p>
<p>3.jenkins你都用了哪些插件?</p>
<h3 id="查看更多---ios面试题合集">查看更多: iOS面试题合集</h3>
<h5 id="欢迎加入我的ios讨论群519832104-获取大厂面试资料">欢迎加入我的iOS讨论群:519832104 获取大厂面试资料。</h5>
<h5 id="结识人脉讨论技术抢先入群了解最新行业动向跑赢同龄人">结识人脉、讨论技术,抢先入群,了解最新行业动向,跑赢同龄人!</h5><br><br>
来源:https://www.cnblogs.com/chengxyyh/p/13214022.html
頁:
[1]