2021年我的ios进阶面试题
今年参加了很多面试,看看我的面试题是哪些
我遇到的能想起来的面试题
- 什么事Runloop?简述Runloop的执行顺序、用Runloop实现一个后台常驻线程。
参考 https://juejin.cn/post/6868551023439544333 - 列举几种实现延迟调用的方法?
- 简述面向过程与面向对象的区别,面向对象有哪些特性?
- 简述动态库和静态库的区别,ios中动态库和静态库的表现形式分别是什么?简述.a 和 .framework的区别?
- 如何实现OC与Swift的混编?
- 简述项目中使用过的APP优化策略,不限于启动优化、UI卡顿优化等?
参考 https://www.jianshu.com/p/024b3d847fe0
https://www.jianshu.com/p/80f72cdb0aa9 - 消息转发原理 ?消息转发机制?
参考 https://www.jianshu.com/p/6c219728bf68 - coacoapods 中的pod init,和pod update 的区别?
- 组件化是怎么实现的?
- 简述下你常用的第三方库有哪些?并阐述你熟悉的某个第三方库的实现原理?
- runTime的理解
- autoRelease的理解
- load什么时候调用?
参考 https://juejin.cn/post/6884133502401396744 - block 的实现机制是什么?调用外部变量为什么要用__block ? __block
和 weak,strong 的区别?
参考: https://www.jianshu.com/p/221d0778dcaa
心得:
- block就是一个对象,把要实现的方法赋值给此对象属性,
- block调用外部的值类型变量,就是在声明block时,就把值传递给了block,所以之后修改值对block无影响,block捕获的是值。
- 如果值变量用static修饰,block捕获的是值变量的地址;
block修改全局变量: block并没有把num作为参数,_block_func_0中也是直接访问全局变量. - block使用self时,会捕获self,block会声明个self类型的strong属性<self>,block强引用self,同时self也会强引用block,
- 使用Weak解除block循环引用时,block会声明个self类型的weak属性<weakself>,解除循环
- clang 可以查看 源码block原理 参考 https://www.sohu.com/a/319619700_208051
clang 报错参考 https://www.jianshu.com/p/741b550db5a9 - strong,copy的区别 参考 https://www.jianshu.com/p/62913d6cbc40
-
weak,strong 怎么实现内存管理的?
-
简述下 mvc,mvp,mvvM
-
loadview,viewdidload,viewdidunload 都什么时候调用,主要处理什么?
-
常用的加密方法有哪些?
参考:https://www.jianshu.com/p/cee228aabdbc -
怎么保证APP的安全的?
-
说说你对 堆,栈,静态区域的理解?
参考 https://www.cnblogs.com/codetime/p/7353434.html
https://www.jianshu.com/p/eaa20cf39ad5 -
alloc,init ,new
参考 https://www.jianshu.com/p/b0324891661c -
iOS开发之+load与+initialize
参考 https://www.jianshu.com/p/7a5610d5802f -
单例是怎么实现的?怎么避免单例被多次创建?
http://www.cocoachina.com/articles/21300 -
ios内存管理是怎么实现的?
-
加密方式有哪些?对称加密和非对称加密的区别?
-
http 和https 的区别?
-
App 启动时 经历了什么?
https://www.jianshu.com/p/ecfb61b68c89
https://zhuanlan.zhihu.com/p/28600469 -
mvc,MVP,mvvm的区别?
https://www.jianshu.com/p/d39a5eee48d7
附代码demo https://blog.csdn.net/xiaozhuanddapang/article/details/78553215
有示例代码 https://www.jianshu.com/p/2c80175044f6 -
wkwebview 性能优化,缓存处理?
-
int 值传递,地址传递?
-
各种第三方框架实现原理,AFnetWoring,MJExtion,SDwebimage
-
UI事件传递原理?
hitTest -
swift 什么时候用stuct 什么时候用class?
swift面试题 别人整理的
https://www.jianshu.com/p/e7eeff77adcd
记录
ps备注:
查看底层源码的命令
clang -rewrite-objc main.m
clang -rewrite-objc -framework Foundation main.m
clang -rewrite-objc -fobjc-arc -fobjc-runtime=macosx-11.2.3 main.m