Skip to content

Commit 294e459

Browse files
committed
111
1 parent 861bfc0 commit 294e459

File tree

6 files changed

+38
-2
lines changed

6 files changed

+38
-2
lines changed

面试/查漏补缺.md

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
1、load和initialize
2+
+load方法是一定会在runtime中被调用的,只要类被添加到runtime中了,就会调用+load方法即只要在Compile Sources中出现的文件总是会被装载,与这个类是否被用到无关,因此+load方法总是在main函数之前调用,+load方法不会被覆盖,也就是说如果子类实现了+load方法,那么会先调用父类的+load方法,然后又去执行子类的+load方法,但是+load方法只会调用一次。
3+
4+
initialize方法是在类或者子类收到第一条消息之前被调用的,这里所指的消息包括实例方法和类方法被调用,并且只调用一次,方法会被覆盖即子类如果实现了此方法就不会去执行父类的,直接执行子类本身的。如果分类实现了initializer方法,也不会在执行主类的。所以initializer方法的执行覆盖顺序是:分类->子类->类。
5+
6+
两者的相同点与不同点
7+
相同点:load和initialize会被自动调用,不能手动调用他们。子类实现了load和initialize的话,会隐式调用父类的load和initialize方法。load和initialize方法内部使用锁,因此他们的线程安全
8+
9+
不同点:调用顺序不同

面试/爱库存.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
1、runtime使用的场景
2+
2、内存管理的方式,以及散列表的构造
3+
3、method-swizzling的使用场景
4+
4、Sdwebimage怎么区分图片格式
5+
5、多线程的几种方式,重点问到栅栏函数,信号量
6+
6、load和initialize异同点以及你是怎么去使用的干什么用的
7+
7、存储,如何删掉APP后比如登录信息还在

面试/触宝一面.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
触宝一面:
2+
1、kvo的底层原理
3+
2、让你设计一个类似KVO的框架你怎么去设置
4+
3、NSThread,Runloop怎么实现一个常驻线程,除了这个方法去实现一个常驻线程还有什么其他的方法
5+
3、dispatch_async加上串行队列实现常驻线程(代码中可以常见的)有什么缺点?
6+
4、weak,assign有什么区别
7+
5、简述一下String用copy去修饰
8+
6、strong和copy
9+
7、GCD相关
10+
8、分类的一些知识,为什么不能添加属性,如何给分类添加属性,一个类的两个分类同名方法最终实现哪个?
11+
9、当一个类中有多个代理我们可以放在哪个容器下面
12+
10、load和initialize
13+
11、简述Method-Swizzling原理
14+
12、isa指针的分类以及里面的组成
15+
13、简述AFN2.0
16+
14、如何设计一个图片缓存框架
17+
15、离屏渲染,光栅化
18+
16、APP性能优化(瀑布流卡顿掉帧,内存泄漏检测与优化,公用库代码段的冗余检测和优化)
19+
17、看你简历上面有些熟悉python说说你对python的理解以及应用(python+Appium自动化测试,python爬虫以及Django)(加分题)

面试准备第一天/面试准备第一天.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ Assign修饰对象出现的情况详见面试准备第一天项目中的Assign
5555

5656
7、为什么说atomic修饰的属性不能完全确保线程的安全?
5757
atomic修饰的属性只是对属性的getter/setter方法进行加锁,这种安全仅仅只是读写的安全,并非真正意义上的安全。如果用线程A调用调用getter,B和C 调用Setter,那么最终得到的值可能是原始值,B,C设值中的一种,真正意义上的线程安全除了读写还有一些其他的操作,比如当我在调用getter/setter方法的时候,另外一个线程同事调用release,可能会直接crash
58+
atomic只能说是读写的线程安全
5859

5960

6061

面试准备第二天/知识点.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@
3636

3737
关联对象
3838
1、关联对象的本质
39-
关联对象由AssociationsManager管理并在AssoiationHasMap中存储。所有对象的关联内容都放在同一个全局容器中
39+
关联对象由AssociationsManager管理并在AssoiationHashMap中存储。所有对象的关联内容都放在同一个全局容器中
4040

4141
2、关联对象使用的场合
4242
因为分类的的层结构的原因不能创建分类对象的成员变量,所以只能使用关联对象来间接创建分类的成员变量
@@ -55,7 +55,7 @@
5555
AssociationHashMap:key:DISGUISE(object) value:AssociationsMap
5656
AssociationMap:key:void* value:ObjcAssociation
5757
ObjcAssociation:policy: value:
58-
简书一下一上的关系:关联对象为ObjcAssociation,里面存放的关联策略和值,AssociationMap存放的是一个或者多个关联对象,每个关联对象都对应的一个key,AssociationsHashMap存放着某个对象的关联对象Map表
58+
简述一下以上的关系:关联对象为ObjcAssociation,里面存放的关联策略和值,AssociationMap存放的是一个或者多个关联对象,每个关联对象都对应的一个key,AssociationsHashMap存放着某个对象的关联对象Map表
5959
详见伪代码:
6060
{
6161
"0x492472":

0 commit comments

Comments
 (0)