一.简历 这个我就不多介绍了,给你你们准备了图(为了偷下懒,答案公布再题目下方。👀)大纲也给你们准备了吼
1.Swift中的方法调用有哪些形式?
答:直接派发、函数表派发、消息机制派发。派发方式受声明位置,引用类型,特定行为的影响。为什么Swift有这么多派发形式?为了效率。
**Swift和OC有什么区别呢?**如下图
2.### Swift 是面向对象还是函数式的编程语言?
关键词:#面向对象 #函数式编程
答:Swift 既是面向对象的,又是函数式的编程语言。
说 Swift 是面向对象的语言,是因为 Swift 支持类的封装、继承、和多态,从这点上来看与 Java 这类纯面向对象的语言几乎毫无差别,是因为 Swift 支持 map, reduce, filter, flatmap 这类去除中间状态、数学函数式的方法,更加强调运算结果而不是中间过程。
2.从OC向Swift迁移遇到的问题 给你们找到外链juejin.cn/post/684490…
二.OC语法
Block是如何实现的?Block对应的数据结构是什么样子的?__block的作用是什么?它对应的数据结构又是什么样子的?
block本质是一个对象,底层用struct实现。 数据结构如下:
__block的作用是可以获取对应变量的指针,使其可以在block内部被修改。
js 与 原生OC交互方式:
1.JS发起一个假请求,然后用UIwebView的代理方法拦截这起请求,再做相应的处理
2.在iOS 7 之后Apple添加了一个新的库JavaScriptCore,用来做js交互。
首先导入JavaScriptCore 库,然后在OC 中获取上下文对象。在定义好JS需要调用的方法。JSContext对象context[@”share”] 等于一个返回值为空的block。这个block 在子线程中调用,因此执行UI 操作需要回到主线程
二、 OC调用JS
1、webView stringByEvaluatingJavaScriptFromString:jsStr];
2、继续使用JavaScriptCore库 JSContext 对象调用 evaluateScript:方法
以上两个方法都是同步方法,如果JS方法比较耗时会造成界面卡顿。
所以可以使用wkwebview 的 evaluateJavaScript:代替
————————————————
原文的链接:blog.csdn.net/flover57240…
三.线程
进程间通信: 共享储存系统消息传递管道是以文件为基础
线程保活:
循环
runloop
1.获取RunLoop只能使用 [NSRunLoop currentRunLoop] 或 [NSRunLoop mainRunLoop];
2.即使RunLoop开始运行,如果RunLoop 中的 modes 为空,或者要执行的mode里没有item,那么RunLoop会直接在当前loop中返回,并进入睡眠状态。
3.自己创建的Thread中的任务是在kCFRunLoopDefaultMode这个mode中执行的。
4.在子线程创建好后,最好所有的任务都放在AutoreleasePool中。
面试题
1、多线程的应用
2、GCD实现多个请求都完成之后返回结果
3、A、B两个int数组,得到A数组中B数组不包含的元素
4、事件传递链,页面上一个按钮,按钮和它的superView有一样的action,为什么只执行button的action?
5、runtime的应用
6、array中加入对象,对象的retainCount会加1 如何是的对象自己管理自己的生命周期
7、bugly的卡顿监控原理
8、如何架构一个app
9、c中,malloc对象,传入了size,free只需要指针,这是为什么?
10、数据库选择原因(realm 、coreData、FMDB、Sqlite)
11、数据库做过哪些优化
12、脚本打包原理
13、app运行过程中,同时最多有几个线程,怎么实现的高并发
14、iOS应用导航模式有哪些?
15、iOS中持久化方式有哪些?
16、iOS单元测试框架有哪些?
17、iOS atomatic
18、#import 跟 #include 有 什 么 区 别 , @class 呢 , #import<> 跟 #import” ”有什么区别?
19、Object-c 的类可以多重继承么?可以实现多个接口么?Category 是什 么?重写一个类的方式用继承好还是分类好?为什么?
20、属性 readwrite,readonly,assign,retain,copy,nonatomic 各是 什么作用,在那种情况下用?
21、对于语句 NSString*obj=[[NSDataalloc]init];obj 在编译时和运行时 分别时什么类型的对象?
22、常见的 objective-c 的数据类型有那些, 和 C 的基本数据类型有什 么区别?如:NSInteger 和 int
23、Objective-C 如何对内存管理的,说说你的看法和解决方法?
24、原子(atomic)跟非原子(non-atomic)属性有什么区别?
25、ObjectC 中创建线程的方法是什么?如果在主线程中执行代码,方 法是什么?如果想延时执行代码、方法又是什么?
26、浅复制和深复制的区别?
27、类别的作用?继承和类别在实现中有何区别?
28、类别和类扩展的区别
29、我们说的 OC 是动态运行时语言是什么意思?
30、类变量的@protected,@private,@public,@package,声明各有什么 含义?
31、简述 OC 中内存管理机制。与 retain 配对使用的方法是 dealloc 还 是 release,为什么?需要与 alloc 配对使用的方法是 dealloc 还是 release,为什么…
32、说说响应链
33、线程是什么?进程是什么?二者有什么区别和联系?
34、RunLoop 是什么?
35、简述你对 UIView、UIWindow 和 CALayer 的理解
36、iOS 的动态性
37、谈谈对性能优化的看法,如何做?
38、NSAutoreleasePool 是怎么工作的?
39、什么情况使用 weak 关键字,相比 assign 有什么不同?
40、runtime 如何实现 weak 属性?
41、怎么用 copy 关键字?
42、用 @property 声明的 NSString(或 NSArray,NSDictionary)经常使用 copy 关键字,为什么?如果改用 strong 关键字,可能造成什么问题?
43、怎么理解浅拷贝与深拷贝?
44、如何让自己的类用 copy 修饰符?
45、@property 的本质是什么?
46、@protocol 和 category 中如何使用 @property?
47、category 和 extension 有什么区别?category 是如何加载的?category 的方法覆盖是怎么处理的? 48、@synthesize 和 @dynamic 分别有什么作用?
49、ARC 下,不显式指定任何属性关键字时,默认的关键字都有哪些?
50、在有了自动合成属性实例变量之后,@synthesize 还有哪些使用场景?
后续会持续更新的,请多关注关注
私信我,分享更多的资料课题!
【腾讯文档】更多资料分享 docs.qq.com/doc/DZXpKSU…