美文网首页
2021-03-05

2021-03-05

作者: 檐下风铃听雨声 | 来源:发表于2021-03-05 12:07 被阅读0次

1.锁(递归锁的实现原理)

iOS开发中的11种锁以及性能对比 - 简书

2.自动释放池

3.事件的响应链

4.静态链接和动态链接

5.静态库和数据库

名称 静态库 动态库
定义 链接时完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝。 链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存。
形式 .a 和 自己创建framework .dylib 和 系统framework

Q:a与.framework有什么区别?

  • .a是一个纯二进制文件,.framework中除了有二进制文件之外还有资源文件。
  • .a文件不能直接使用,至少要有.h文件配合,.framework文件可以直接使用。
  • .a + .h + sourceFile = .framework
    建议用.framework

Q:为什么要使用静态库?

  • 方便共享代码,便于合理使用。
  • 实现iOS程序的模块化,可以把固定的业务模块化成静态库。
  • 和别人分享你的代码库,但不想让别人看到你代码的实现。
  • 开发第三方sdk的需要。

Q:制作静态库需要注意什么?

  • 图片资源处理使用.bundle
  • category处理,在静态哭中调用可以能出现selector not recognized ,解决办法是:在使用静态库的工程中配置other linker flags 的值为-ObjC

6.数据段和代码段

iOS的内存分区.png
  • 代码段:编译之后的代码
  • 数据段
    • 字符串常量:比如NSString *str = @"123"
    • 已初始化数据:已初始化的全局变量、静态变量等
    • 未初始化数据:未初始化的全局变量、静态变量等
  • 堆:通过alloc、malloc、calloc等动态分配的空间,分配的内存空间地址越来越大
  • 栈:函数调用开销,比如局部变量。分配的内存空间地址越来越小

Q:你知道Tagged Pointer么,存储在哪个位置?

  • 从64bit开始,iOS引入了Tagged Pointer技术,用于优化NSNumber、NSDate、NSString等小对象的存储
  • 在没有使用Tagged Pointer之前, NSNumber等对象需要动态分配内存、维护引用计数等,* * NSNumber指针存储的是堆中NSNumber对象的地址值
  • 使用Tagged Pointer之后,NSNumber指针里面存储的数据变成了:Tag + Data,也就是将数据直接存储在了指针中
  • 当指针不够存储数据时,才会使用动态分配内存的方式来存储数据
  • objc_msgSend能识别Tagged Pointer,比如NSNumber的intValue方法,直接从指针提取数据,节省了以前的调用开销

Q:两段代码打印结果有什么区别?

dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
for (int i = 0; i < 100; i++) {
    dispatch_async(queue, ^{
        self.name = [NSString stringWithFormat:@"abcdefghijk"];
    });
}
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
    for (int i = 0; i < 1000; i++) {
    dispatch_async(queue, ^{
        self.name = [NSString stringWithFormat:@"abcdefghijk"];
    });
}

第一段代码会引发如下的错误:


内存出错.png

第二段代码没有问题。
我们分别打印abcdefghijk和abc字符串的类型。

NSString *str1 = [NSString stringWithFormat:@"abc"];
NSString *str2 = [NSString stringWithFormat:@"abcdefghijk"];
NSLog(@"\n[str1 class]=%@\n[str2 class]=%@",[str1 class],[str2 class]);
[str1 class]=NSTaggedPointerString
[str2 class]=__NSCFString

解决思路是加锁就可以:

@synchronized (self) {
    self.name = [NSString stringWithFormat:@"abcdefghijk"];
}

7.直播相关 OPENGL webrtc

8.https考察

端口 :HTTP的URL由“http://”起始且默认使用端口80,而HTTPS的URL由“https://”起始且默认使用端口443。
安全性和资源消耗: HTTP协议运行在TCP之上,所有传输的内容都是明文,客户端和服务器端都无法验证对方的身份。HTTPS是运行在SSL/TLS之上的HTTP协议,SSL/TLS 运行在TCP之上。所有传输的内容都经过加密,加密采用对称加密,但对称加密的密钥用服务器方的证书进行了非对称加密。所以说,HTTP 安全性没有 HTTPS高,但是 HTTPS 比HTTP耗费更多服务器资源。
对称加密:密钥只有一个,加密解密为同一个密码,且加解密速度快,典型的对称加密算法有DES、AES等;
非对称加密:密钥成对出现(且根据公钥无法推知私钥,根据私钥也无法推知公钥),加密解密使用不同密钥(公钥加密需要私钥解密,私钥加密需要公钥解密),相对对称加密速度较慢,典型的非对称加密算法有RSA、DSA等。

9.LRU淘汰算法

https://www.jianshu.com/p/5451e22109a1

10.计时器

Q:实现定时器有哪几种方式

11.block ARC和MRC的区别

相关文章

  • 前端面试每日 3+1 —— 第689天

    今天的知识点 (2021-03-05) —— 第689天 (我也要出题[http://www.h-camel.co...

  • 周五 2021-03-05 23:05 - 07:30 雨 12

    周五 2021-03-05 23:05 - 07:30 雨 12h57m 记录闪现的灵感(inspirations...

  • 简约关键~清楚什么才是人生最重要的

    2021-03-05精进第45天 | 没有记录就没有发生 2021年的事业梦想个人目标描述:达成MDRT业绩目标。...

  • 生命的底色

    我怎么如此幸运-重生189-戴红霞(2021-03-05) 我怎么如此幸运-生命的底色 1.我怎么如此幸运意想不到...

  • 天时骤变

    我怎么如此幸运-重生190-戴红霞(2021-03-05) 我怎么如此幸运-天时骤变 1.我怎么如此幸运意想不到不...

  • 2021-03-05 先育儿,还是先育己?

    【2021-03-05日精进 第289天】表现:9分 一路教育,一路成长。我深深体悟到爱才是自己改变的根本,理性...

  • 你幻想过婚后的生活吗?

    2021-03-05 我身边有一对情侣,已经订婚领证了。 在我看来,他们就是完美的结合,两个人性格都很稳重,平时都...

  • 2021-03-05

    2021.3.4周四 遇到了火车,好几天没遇到了唉,不到六点起床,吃了剩饭剩菜,还不太过瘾,想中午回来煮汤圆。给宝...

  • 2021-03-05

    难道就不知道春天看到了盛开的桃花时,说一句“桃红复含宿雨,柳绿更带朝烟”或者“几处早莺争暖树,谁家新燕啄春泥”? ...

  • 2021-03-05

    看到喜欢的东西,就要加入购物车,说不定哪一次满减就能用来凑单(゚o゚;

网友评论

      本文标题:2021-03-05

      本文链接:https://www.haomeiwen.com/subject/gidrqltx.html