Skip to content

coyingcat/marsDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

marsDemo

大厂 mars



Union Find 并查集 ( 深度优先,一路递归过去 )

Disjoint Set 不相交

不相干集合

bijection 双向单射



C �语言的 void * 指针,

相当于 OC 的 id



runloop �两:

  • 等待事件处理, wait

  • 通知去处理事件, observe



内存

  • weak 表 地址:Union (并查集)

Union { 数量, [ 对象数组] }

SideTable -> WeakTable 表 -> WeakEntry 条目

  • ARC, 引用计数表

因为多指向,可以等价 哈希表,和并查集

地址: 数量

  • 关联对象表, AssociationsHashMap


是 dyld, 不是 lldb



没用的环境变量

OBJC_PRINT_REPLACED_METHODS

OBJC_PRINT_LOAD_METHODS

可以在执行load方法以及加载category的时候打印log信息


讲故事,使用数据结构,

就够了

操作代码,不是很值得提到


面试,就是讲故事



Page 69


信号量 wait

signal

控制

iOS实录16:GCD小结之控制最大并发数

OC中load方法

load 方法,调用顺序:

父类 >子类> 分类。 类和分类中的load方法都会执行 父类永远大于子类,子类永远大于分类 如果有多个分类会按照编译顺序执行,先编译先执行


https://stackoverflow.com/questions/22809848/objective-c-runtime-run-code-at-deallocation-of-any-object/31560217#31560217

Fun With the Objective-C Runtime: Run Code at Deallocation of Any Object


dyld 是 the dynamic link editor 的缩写,

它是苹果的动态链接器


循环缓冲区,

一个容量,

一个指针


mutex 互斥锁,

相当于 Semaphore 的数目为 2

区别如图:


C++ 异步, future

  • future get result 未来,获取结果

  • promise pass argv 保证,将要传参


C++ 实现 async, 子线程做事情,不用管

开线程,完了


C++ 实现 async, 子线程算结果,主线程打印

开线程,

有线程共享的变量,

互斥锁,mutex

条件变量, 保证代码运行的先后 conditional_variable


锁的例子是, 厕所



什么时候用 auto release pool,

for 循环



注册到 auto release pool,

就是把对象添加到,auto release pool,内部的数组



6 设计原则:

  • 单一职责原则(Single-Responsibility Principle)  

  • 里氏代换原则(Liskov Substitution Principle)

  • 依赖倒置原则(Dependence Inversion Principle),便于替换

  • 接口隔离原则(Interface Segregation Principle)

  • 迪米特原则(Law of Demeter), 最小知识原则,也就是封装 访问控制

  • 开放-封闭原则(Open-Closed Principle) 不用改已有的代码, 出错就会少



内存对齐

字节对齐


那本书,注册就是写入


id __weak cat = obj;

  • objc_storeWeak

把 obj 的地址 ( 赋值对象的地址 ) ,作为键,

把 cat 的,附有 __weak 修饰符的变量的地址作为值, 添加到 weak 表

  • 如果 obj 为 0, 则把 weak 表中,所有的 obj 对应的变量地址清空,包括 cat

iOS底层原理:weak的实现原理

Objective-C runtime机制(7)——SideTables, SideTable, weak_table, weak_entry_t

SideTable 翻译过来的意思是“边桌”,可以放一下小东西。这里,主要存放了OC对象的引用计数和弱引用相关信息。

方法,无非增删改查, 本文有密集恐惧症,代码少少,

面试时,口述代码,厉害咯

用例好记, 处理的时机函数,谁没事记这个


啥是魅力,

说话慢一点呗

谈谈 HTTPS

[iOS] 从 application delegate 引申三点

循环引用及两个及以上对象出现引用环,导致对象无法释放的情况。一般在block,delegate,NSTimer时容易出现这个问题。

除了 assgin 的情况,还有一些情况下 delegate 是被对象强引用 retain 的,比如 NSURLSession,delegate 将被 retain 到 session 对象失效为止。

OC浅拷贝、深拷贝和完全拷贝

byte dance,

我们更看重潜力,而不是你在某一方面的知识,

我们问的比较均衡

抖音社交方向,绍华

死锁,遇到过吗

NSDictionary 是不是线程安全的

__bright,

static ,

__block

block 为什么不能修改外部的临时变量