iOS面试题
阿里、字节:一套高效的iOS面试题
iOS源码分析
1、谈下iOS开发中知道的哪些锁? 哪个性能最差?SD和AFN使用的哪个? 一般开发中你最常用哪个? 哪个锁apple存在问题又是什么问题?
- 多线程的同步与互斥(互斥锁、条件变量、读写锁、自旋锁、信号量)
- iOS开发中的11种锁以及性能对比
- 深入理解 iOS 开发中的锁
- 关于 @synchronized,这儿比你想知道的还要多
- https://bestswifter.com/deep-gcd/
2、http的post和get啥区别
1、Get是最常用的方法,通常用于请求服务器发送某个资源,而且应该是安全的和幂等的。
2、POST方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。
GET请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母或数字,则原样发送;如果是空格,转换为+;如果是中文或其他字符,则直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中%XX中的XX为该符号以16进制表示的ASCII码值。而与之对应的,POST把提交的数据放置在HTTP包的包体中,文章最下面将会有代码示例。
POST的安全性要比GET的安全性高。注意:这里所说的安全性和上面GET提到的“安全”不是同个概念。上面“安全”的含义仅仅是不作数据修改,而这里安全的含义是真正的Security的含义。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为:(1)登录页面有可能被浏览器缓存,(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击(CSRF,跨站请求伪造,也被称为:one click attack/session riding)。
3、离屏渲染
image.png
计算机系统中 CPU、GPU、显示器是以上面这种方式协同工作的。CPU 计算好显示内容提交到 GPU,GPU 渲染完成后将渲染结果放入帧缓冲区,随后视频控制器会按照 VSync 信号逐行读取帧缓冲区的数据,经过可能的数模转换传递给显示器显示。
4、weak原理
- 浅谈iOS之weak底层实现原理
- runtime open source
- runtime open source
- weak引用的底层实现原理
- OC--看objc源码认识weak
- Selector, Method 和 IMP 的区别与联系
- iOS中atomic和nonatomic区别及内部实现
- Autorelease实现原理
网友评论