copy的面试合集(一),每天一个小技巧

236 阅读6分钟

一.简历 这个我就不多介绍了,给你你们准备了图(为了偷下懒,答案公布再题目下方。👀)大纲也给你们准备了吼

QQ图片20210717164532.jpg

image.png

2345_image_file_copy_1.jpg

1.Swift中的方法调用有哪些形式?

答:直接派发、函数表派发、消息机制派发。派发方式受声明位置,引用类型,特定行为的影响。为什么Swift有这么多派发形式?为了效率。

**Swift和OC有什么区别呢?**如下图

image.png

2.### Swift 是面向对象还是函数式的编程语言?

关键词:#面向对象 #函数式编程

答:Swift 既是面向对象的,又是函数式的编程语言。

说 Swift 是面向对象的语言,是因为 Swift 支持类的封装、继承、和多态,从这点上来看与 Java 这类纯面向对象的语言几乎毫无差别,是因为 Swift 支持 map, reduce, filter, flatmap 这类去除中间状态、数学函数式的方法,更加强调运算结果而不是中间过程。

2.从OC向Swift迁移遇到的问题 给你们找到外链juejin.cn/post/684490…

二.OC语法

Block是如何实现的?Block对应的数据结构是什么样子的?__block的作用是什么?它对应的数据结构又是什么样子的?

block本质是一个对象,底层用struct实现。 数据结构如下:

屏幕截图 2021-07-17 191406.png

__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…

三.线程

屏幕截图 2021-07-17 192254.png

进程间通信: 共享储存系统消息传递管道是以文件为基础

线程保活:

循环

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…