2020年面向iOS开发的知识点总结(持续更新中)_ios2020年度总结-程序员宅基地

技术标签: 算法  面试  链表  ios  数据结构  

前言:

最近在整理自己的技术栈,收集了一些自己认为比较重要的知识点分享给大家。

Runloop

1.iOS中触摸事件传递和响应原理

2.为什么只有主线程的runloop是开启的

3.为什么只在主线程刷新UI

4.PerformSelector和runloop的关系

5.GCD 在Runloop中的使用?

6.AFNetworking 中如何运用 Runloop?

Runtime

1.Category 的实现原理?

2.isa指针的理解,对象的isa指针指向哪里?isa指针有哪两种类型?

3.Objective-C 如何实现多重继承?

4.runtime 如何实现 weak 属性?

5.Objective-C 的消息机制如何理解?

6.runtime具体应用

7.runtime如何通过selector找到对应的IMP地址?

8.简述下Objective-C中调用方法的过程

9.怎么理解Objective-C是动态运行时语言。

KVO

1. 实现原理

2. 通过KVC修改属性会触发KVO么?KVC的赋值和取值过程是怎样的?原理是什么?

3. 哪些情况下使用kvo会崩溃,怎么防护崩溃

4. kvo的优缺点

Block

1. block的内部实现,结构体是什么样的

2. 一个int变量被__block修饰与否的区别?

3. block在修改NSMutableArray,需不需要添加__block

4. block怎么进行内存管理的

5. Block怎么被copy到堆上

6._block 在 ARC 和 MRC 下含义一样吗?

多线程

1. iOS开发中有多少类型的线程?分别举例

2. GCD 队列类型

3. 如何实现线程同步,有多少方式就说多少

4. dispatch_once实现原理

5. 什么情况下会死锁

架构设计

1. MVC、MVP、MVVM设计模式

2. 常见的设计模式

3. 单例的利弊

4. 如果保证项目的稳定性

5. 设计一个图片缓存框架(LRU)

数据结构

1.数据结构的存储一般常用的有几种?各有什么特点?

2.集合结构 线性结构 树形结构 图形结构

3.单向链表 双向链表 循环链表

4.数组和链表区别

5.堆、栈和队列

6.输入一棵二叉树的根结点,求该树的深度?

7.输入一棵二叉树的根结点,判断该树是不是平衡二叉树?

算法

1.时间复杂度

2.空间复杂度

3.常用的排序算法

4.字符串反转

5.链表反转(头差法)

6.有序数组合并

7.查找第一个只出现一次的字符

8.查找两个子视图的共同父视图

9.无序数组中的中位数(快排思想)

10.给定一个整数数组和一个目标值,找出数组中和为目标值的两个数。

Foundation

1.nil、Nil、NULL和NSNull之间的区别

2.如何实现一个线程安全的 NSMutableArray?

3.atomic 修饰的属性是绝对安全的吗?为什么?

4.实现 isEqual 和 hash 方法时要注意什么?

5.id 和 instanceType 有什么区别?

6.self和super的区别

7.@dynamic与@synthesize的区别

Swift

1.Swift 和OC 如何相互调用?

2.struct和class的区别

3.class 和 struct 的优势

4.访问控制关键字 open, public, internal, fileprivate, private 的区别?

5.说明并比较以下关键词:strong, weak, unowned

6.如何将Swift 中的协议(protocol)中的部分方法设计为可选(optional)?

7.Swift的尾随闭包、逃逸闭包、自动闭包

UIKit

1.UIView 和 CALayer 是什么关系?

2.Bounds 和 Frame 的区别?

3.谈谈对UIResponder的理解

4.loadView方法的使用

5.keyWindow 和 delegate的window有何区别

动画

1.UIView动画与核心动画的区别?

2.当我们要做一些基于 CALayer 的动画时,有时需要设置 layer的锚点来配合动画,这时候我们需要注意什么?

图像处理

1.图像的压缩方式有哪些?

2.如何计算图片加载内存中所占的大小

数据安全及加密

1.对称加密和非对称加密的区别?

2.简述 SSL 加密的过程用了哪些加密方法,为何这么做?

3.iOS的签名机制是怎么样的

组件化

1.组件化有什么好处?

2.你是如何组件化解耦的?

3.为什么CTMediator方案优于基于Router的方案?

4.基于CTMediator的组件化方案,有哪些核心组成?

调试技巧

1.LLDB常用的调试命令?

2.断点调试

3.iOS 常见的崩溃类型有哪些?

源码理解

1.YYKit

2.SDWebImage加载图片过程

3.YYWebImage 与 SDWebImage 的比较

4.AFNetworking 底层原理分析

代码管理

1.SVN与Git优缺点比较

持续集成

1.你在项目中使用过什么持续集成方式?

2.jenkins怎么备份恢复

3.jenkins你都用了哪些插件?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/syh96123/article/details/107317686

智能推荐

Python爬虫编程思想(112):基于Splash的爬虫--模拟鼠标键盘动作_splash:send_keys-程序员宅基地

文章浏览阅读800次。Splash Lua脚本还提供了很多方法,用于模拟鼠标和键盘的动作,例如,mouse_click函数可以模拟鼠标单击的动作,send_keys可以模拟键盘按键的动作。_splash:send_keys

因为痛,所以叫青春,一个IT哥颓废的那些日子_it的颓废生活-程序员宅基地

文章浏览阅读301次。转眼就26了,在职场混了10年。5年的IT生涯,不安过,茫然过,孤独过,也忐忑过。站在人生的十字路口,看着飞驰而过的列车,却还左顾右盼,在寻求通往未来的亮光,妄想走进时光隧道,一步踏进幸福的海洋。5年前,为了自己的工作好点,多赚点。哥下定决,去学了计算机,花光了哥所有的存款。所以就导致了今天我走的不归路。 记得那一年,哥学业有成,工作也还理想,在一公司做技术支持。爱上了一个妹子,_it的颓废生活

CALayer的子类之CAShapeLayer-程序员宅基地

文章浏览阅读198次。一,CAShapeLayer介绍* CAShapeLayer继承自CALayer,属于QuartzCore框架,可使用CALayer的所有属性。 CAShapeLayer是在坐标系内绘制贝塞尔曲线的,通过绘制贝塞尔曲线,设置shape(形状)的path(路径),从而绘制各种各样的图形以及不规则图形。因此,使用CAShapeLayer需要与UIBezierPath一起使用。 UIBezie..._kcalinejoinbevel

GeoTools,GIS的另一个基础设施~_gt-referencing-程序员宅基地

文章浏览阅读847次。About GeoToolsGeoTools is an open source (LGPL) Java code library which provides standards compliant methods for the manipulation of geospatial data, for example to implement Geographic Information Systems (GIS). The GeoTools library implements Open Geo_gt-referencing

2022华为Android面试真题解,2022最新阿里Android高级面试题及答案_华为安卓面试-程序员宅基地

文章浏览阅读1.9k次。前言职场的金九银十跳槽季火热进行中,不同的是,今年的竞争比往年会更加激烈一些,形式更加严峻一些。对于求职者来说,面试是一道坎,很多人会恐惧面试,即使是工作很多年的老鸟,也可能存在面试焦虑。大家多多少少可能都听到或看到一些信息,就是好多公司在优化裁员,但是也有很多大厂放出了“扩招”的信息,比如腾讯,比如字节跳动。让我们来一起看看腾讯微视第三面,面试官都问了什么呢?你能答上来多少?ArrayList的使用,然后问他ArrayList使用过程中有没有遇到过坑;还问了HashMap,问了差不多2_华为安卓面试

最近公共祖先算法(LCA)-程序员宅基地

文章浏览阅读1.7k次。发现网上对此算法真是多之又多,看了几个小时才算看懂。 写下我的理解思路,首先,LCA要用到并查集和深度优先搜索,其中并查集用来查找和合并各个节点集合,深度优先搜索用了搜索问题节点是否在同一个集合中。其实就是递归。(1):其中递的过程:首先算法从根开始,对每一棵子树进行深度优先搜索,访问根时,将创建由根结点构建的集合,然后把根节点的祖先设为自身,然后遍历该节点的每个子节点,也就是该节点的其他_公共祖先算法

随便推点

关于Ubuntu18.04虚拟机配置桥接模式_gnome box bridge-程序员宅基地

文章浏览阅读8k次,点赞9次,收藏43次。虚拟机设置为桥接模式+静态ip的话可以连接ARM开发板的。先说明一下,我一开始是在校园网环境下配置的,我们的路由器是设置为AP模式(也就是交换机模式)的,连入wifi后获取的是A类静态IP,在这种情况下配置桥接模式配了好多天打死都配不出来,最后屈服了,换成了手机开热点给电脑连,5分钟就配置完了。详细步骤如下:windows下cmd中输入ipconfig /all,输出如下:记住主机的IP..._gnome box bridge

贪吃蛇小游戏的实现【C语言魅力时刻】_c#贪吃蛇小游戏实现关卡难度的控制-程序员宅基地

文章浏览阅读564次,点赞9次,收藏8次。我们大致要实现的效果如下:你可以看到,这两张游戏界面中,我们首先修改了我们的控制台的名称,其次我们隐藏了我们的光标,然后我同时做到了在控制台上的任意位置打印输出我们的文字。前面的改名字和暂停我已经说过,接下来让我们来说说如何改变控制台坐标以及如何隐藏光标。_c#贪吃蛇小游戏实现关卡难度的控制

rsync和inotify实时备份实现_watch rsync-程序员宅基地

文章浏览阅读611次。rsync是一个远程备份工具,用于在本地和远程计算机之间同步和备份文件。它能够实现增量备份,节省了大量时间和带宽。rsync也支持加密传输和备份,这使得它非常适合用于远程备份,同时也可用于本地备份。增量备份:仅备份发生了变化的文件,节省带宽和存储空间。安全:支持加密传输和备份。支持备份到远程服务器。inotify是一个Linux内核特性,用于监控文件系统中的事件。它能够监控文件或目录的创建、删除、修改、移动等事件,通过这些事件触发的钩子,实现实时监控和响应。_watch rsync

车载以太网协议的架构_车载以太网架构-程序员宅基地

文章浏览阅读3.2k次,点赞4次,收藏41次。无论是软件定义汽车,还是分布式ECU抑或是自适应Autosar,都离不开智能汽车时代的基础技术车载以太网,对于硬件工程师来说,车载以太网物理层和交换机是其最关注的芯片,这也是利润率远超过高算力芯片的领域,也是基本上被欧美企业垄断的领域。上图是整个车载以太网的7层OSI模型与标准分布图,我们最常提到的是TSN或EAVB,而物理层标准鲜少有人提及。因为绝大多数工程师都不会和物理层打交道。很多人都在说域控制器、服务导向架构、分布式计算或软件定义汽车,殊不知关键的1G车载以太网物理层芯片在2020年才SOP_车载以太网架构

网络收藏夹-程序员宅基地

文章浏览阅读156次。http://www.cnblogs.com/pokay/p/5733031.htmlgit-flow 备忘清单: http://danielkummer.github.io/git-flow-cheatsheet/index.zh_CN.html1. 流程图工具http://www.processon.com/同事推荐的,很不错待学习列表w...

mysql中net start mysql57出现服务无法启动显现-程序员宅基地

文章浏览阅读3.1k次,点赞3次,收藏4次。首先问题的出现有很多情况,如下只是针对我自己电脑发生的情况做总结,希望可以帮到有需要的小伙伴。我是刚接触mysql的小白,跟着康老师学的。因为mysql5的版本无法解析中文字符,每次添加中文数据都需要用到utf8,于是打算配置文件,让输入中文可以得到识别,不用每次都去打utf8。他第9节的时候配置了my.ini文件,如下结果就出现了net start mysql57出现服务无法启动显现的情形。后面我在用到net stop mysql57关闭服务后,打算用net start m..._net start mysql57

推荐文章

热门文章

相关标签