面试相关的问答

IOS语法和理论

runloop:

(https://www.jianshu.com/p/d260d18dd551)
1.一个线程对应一个loop对象,主线程系统创建,子线程自己创建。调用loop对象时创建,线程结束时销毁。
2.mode分为default,track(滚动时切换到这个模式),UIinit,systemEvent,common(伪模式,default+track)。
3.sources1接收并分发给source0处理。
4.线程常驻:nsthroud的selector里添加一个runloop,runloop addport后再run否则会exit。

IOS运行时:

(https://www.jianshu.com/p/adf0d566c887)
对象 isa 类 isa 元(meta)类 isa 【基类(NSObject)的meta-class】 isa 自己
关联对象,策略有ASSIGN = 0, // 表示弱引用关联,通常是基本数据类型
OBJC_ASSOCIATION_RETAIN_NONATOMIC = 1, // 表示强引用关联对象,是线程安全的
OBJC_ASSOCIATION_COPY_NONATOMIC = 3, // 表示关联对象copy,是线程安全的
OBJC_ASSOCIATION_RETAIN = 01401, // 表示强引用关联对象,不是线程安全的
OBJC_ASSOCIATION_COPY = 01403 // 表示关联对象copy,不是线程安全的
类方法和实例方法添加,消息转发
SEL 方法名的指针
IMP 方法执行时的指针(Method Swizzling 互换方法名和执行)
https://www.bilibili.com/video/BV1UZ4y1u7Ba?from=search&seid=243885422571726221
符号表,符号绑定,pic技术,fishlook,x:查看地址,dis -s :打印地址。

autoReleasePool:

一般当有处理大量临时对象时,如果不注意会造成内存暴增,可以使用 autoreleasepool 进行优化。
(https://blog.csdn.net/goldfish3/article/details/89604049)
内容是分页内存(栈)的双向链表。
push创建新页,加入链表。pop释放内存池中的对象。内存成块存储,避免杂乱。

自己开发翻页特效:

[self transitionWithType:@"pageCurl"WithSubtype:subtypeString ForView:self.view];

coredata的多个context保存冲突:

KVC和KVO的底层原理,

kvc 字符串的方式访问和设置属性。valueforkey
1、KVC,即是指 NSKeyValueCoding,一个非正式的Protocol,提供一种机制来间接访问对象的属性。
2、基于kvc的一种观察者模式,addobserver,removeobsever,valuechangeforkeyPath

IOS的多线程与GCD相关内容

https://www.jianshu.com/p/2d57c72016c6
-队列:(并发,串行,主)
-任务:(同步sync,异步async)
-线程:是否新开线程,开新线程的(异步+并发|串行)

线程间通信

其它队列执行完后,返回主队列

常用方法

-dispatch_barrier_async栅栏,执行完前边的再执行后边
-dispatch_after延时,不准确
-dispatch_once执行一次,线程安全
-dispatch_apply快速迭代
-dispatch_group/dispatch_group_notify/dispatch_group_wait/dispatch_group_enter/dispatch_group_leave
-dispatch_semaphore
dispatch_semaphore_create创建并初始化信号量
dispatch_semaphore_signal信号量+1
dispatch_semaphore_wait信号量-1,小于0则会一直等待

属性与修饰符

-https://blog.csdn.net/winzlee/article/details/51752354

viewcontroller的生命周期

loadview,viewdidLoad,willAppear,didAppear,willDisappear,didDisappear,dealloce/deinit

block的种类:

NSGlobalBlock(全局的静态 block),NSMallocBlock(栈区copy后,可以在定义域外使用,引用计数为0时销毁),NSStackBlock(调用了局部变量,函数返回时销毁)
black引用的变量是地址引用,否则是值引用。

class、objc_getClass、object_getclass 方法有什么区别?

objc_getClass:参数是类名的字符串,返回的就是这个类的类对象;
object_getClass:参数是id类型,它返回的是这个id的isa指针所指向的Class,如果传参是Class,则返回该Class的metaClass
[obj class]:则分两种情况:一是当obj为实例对象时,[obj class]中class是实例方法:- (Class)class,返回的obj对象中的isa指针;二是当obj为类对象(包括元类和根类以及根元类)时,调用的是类方法:+ (Class)class,返回的结果为其本身。

IOS APP编译过程

https://www.jianshu.com/p/db0e78e214e5?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

IOS系统库

coreAnimation

coreGraphic绘制图片
coreAnimation group

autolayout

https://www.dazhuanlan.com/2019/10/05/5d97e8f15427d/
Cassowary算法, 能够有效解析线性等式系统和线性不等式系统

IOS第三方库

RXSwift

https://www.jianshu.com/p/f7d89f969ad7

数据结构

哈希表及其冲突解决

https://www.cnblogs.com/zzdbullet/p/10512670.html

二叉树种类https://blog.csdn.net/beautiful_face/article/details/69942116
哈夫曼树(加权,权越高,离树根越近)
平衡二叉树(左右子树高度差不超过1,左右子树都是平衡二叉树)

网络

HTTPS/TCP/SOCKET

https://www.cnblogs.com/zhuleixiao/p/9218121.html

加密方式

https://blog.csdn.net/weixin_42749765/article/details/84654328
公钥加密,私钥解密。

计算机理论

IOS锁相关:

https://www.jianshu.com/p/b1edc6b0937a
自旋锁,互斥锁、条件锁,读写锁。

排序算法

https://www.cnblogs.com/onepixel/articles/7674659.html

你可能感兴趣的:(面试相关的问答)