iOS面试准备 - ios篇
ios面试准备 - objective-c篇
ios面试准备 - 网络篇
IOS面试准备 - C++篇
iOS面试准备 - 其他篇
工厂模式
单例模式
建造者模式
使用多个对象一步一步的类型制造。成为一个简单的对象。类型的设计模式属于创建模式,它提供了一种创建对象的最佳方式
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
适配器模式
作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。
链式责任模式
通常每个接收者都包含对另一个接收者的引用。如果一个接收者不能处理该请求,那么它会与下一个发送者相同的传输请求,依此类推。
观察者模式
一对多模式,当一个对象被修改时,则会自动通知依赖它的对象。
MVC和MVVM 模式
MVC 模式-视图-控制器。控制器控制模式和视图。
MVVM view viewMode mode 。链式调用
引入工具包
import java.util.*;
list转数组
String[] array2 = testList.toArray(new String[testList.size()]);
数组转list
ArrayList<String> arrayList = new ArrayList<String>(Arrays.asList(arrays));
数组拷贝
int[] arr = Arrays.copyOf(sourceArray, sourceArray.length);
int[] right = Arrays.copyOfRange(arr, middle, arr.length);
Objective-C 实现 快速排序:
https://blog.csdn.net/htwhtw123/article/details/125347823?spm=1001.2014.3001.5501
二叉查找树(二叉排序树,二叉搜索树)
它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。
AVL树(平衡树)
一棵二叉搜索树,并且它每个结点的左右子树的高度之差的绝对值(平衡因子)最多为1
遍历树的顺序
前序遍历 中左右
中序遍历 左中右
后续遍历 左右中
每次我们运行 git add 和 git commit 命令时, Git 所做的实质工作是将被改写的文件保存为数据对象,更新暂存区,记录树对象,最后创建一个指明了顶层树对象和父提交的提交对象。 这三种主要的 Git 对象——数据对象、树对象、提交对象——最初均以单独文件的形式保存在 .git/objects 目录下。
Git的核心是它的对象数据库,其中保存着git的对象,其中最重要的是blob、tree和commit对象,blob对象实现了对文件内容的记录,tree对象实现了对文件名、文件目录结构的记录,commit对象实现了对版本提交时间、版本作者、版本序列、版本说明等附加信息的记录。这三类对象,完美实现了git的基础功能:对版本状态的记录。
Git引用是指向git对象hash键值的类似指针的文件。通过Git引用,我们可以更加方便的定位到某一版本的提交。Git分支、tags等功能都是基于Git引用实现的。
指令 | 含义 |
---|---|
cat | 显示文件内容 |
cd | 更改目录到指定目录 |
ls | 列出当前路径下的文件列表 |
cp | 复制源文件到目的地 |
file | 确定文件类型 |
find | 查找文件 |
mkdir | 创建目录 |
mv | 移动(重命名)文件 |
pwd | 打印当前目录 |
rm | 删除文件 |
rmdir | 删除文件夹 |
vim | 打开VIM文本编辑器 |
gzip | 压缩文件 .gz文件 |
gunzip | 解压缩文件 |
触发时机
系统调用
中断
异常
流程
用户态可以直接读写寄存器,用户态操作CPU,将寄存器的状态保存到对应的内存中,然后调用对应的系统函数,传入对应的用户栈的PC地址和寄存器信息,方便后续内核方法调用完毕后,恢复用户方法执行的现场
将CPU的字段改为内核态,将内核段对应的代码地址写入到PC寄存器中,然后开始执行内核方法,相应的方法栈帧时保存在内核栈中。
当内核方法执行完毕后,会将CPU的字段改为用户态,然后利用之前写入的信息来恢复用户栈的执行
https://www.jianshu.com/p/e5d583e81ac0
设置和获取属性的值均经过objc_msgSend函数实现