2021-03-05

2021-03-05  本文已影响0人  檐下风铃听雨声

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

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

2.自动释放池

3.事件的响应链

4.静态链接和动态链接

5.静态库和数据库

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

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

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

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

6.数据段和代码段

iOS的内存分区.png

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

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的区别

上一篇下一篇

猜你喜欢

热点阅读