美文网首页
iOS知识点

iOS知识点

作者: 林神_iOS | 来源:发表于2022-02-16 22:11 被阅读0次

底层:

1.weak的实现原理:

https://www.jianshu.com/p/13c4fb1cedea

备注:资深一些的面试官会问到这个,答的好是加分项,提到 weak 的时候,顺便提一下也更加分;

2.strong、weak、copy、assign 区别和使用:

https://www.jianshu.com/p/62913d6cbc40;

https://www.jianshu.com/p/d01429a4b5c0

备注:一般会问到strong、copy的使用与区别,weak 和 assign 的区别,以及 copy 和 mutableCopy 的区别,关注点在浅拷贝和深拷贝,还有copy可变数组会出现什么问题等等,笔试题中常会出现,需要仔细的去了解,这个答不上来,会让人觉得基础很差,切记!

当然还包括__weak和__strong在Block中的使用野指针的解决等问题;

3.NSDictionary 的实现原理:

https://www.jianshu.com/p/edc0f17a606e

备注:字典实现原理无非是 hash 和 isEqual 两个方法,还需要关注 hash 冲突、重 hash 这些概念,以及可以利用这些去到哪些使用场景;还有类比 NSSet 的实现原理

Hash 算法;

4.block 的实现原理:

https://www.jianshu.com/p/4e79e9a0dd82

备注:需要了解 block 的本质是什么,包括后面会提到的 class 的本质,对象的实现其实就是一个结构体,结构体内部有什么,这里不展开,直接去看文章;包括 block 的类型,不同类型变量如何捕获,在内存中如何分配等等,仔细去看文章,资深一点的面试官都会问到这些;

5.KVO 的实现原理:

https://www.jianshu.com/p/5477cf91bb32

备注:了解实现原理,然后如何手动触发;

留个小问题:KVC 会不会触发 KVO;

6.KVC 的实现原理:

https://www.jianshu.com/p/6ad5d7c15b5f

备注:了解 KVC 的实现原理,以及使用场景;

7.RunLoop 的实现原理:

https://www.jianshu.com/p/d260d18dd551

备注:了解 runloop 的实现原理,什么时候创建,什么时候销毁,了解 runloop 的有关类,有哪些模式,以及 runloop 的实战场景,仔细阅读!

留个小问题:如何用 runloop 来检测卡顿

监控FPS缺点:24帧动画速度就可以正常看,不够精确,获取堆栈不好获取,方案地址

8.Runtime 的实现原理:

https://www.jianshu.com/p/6ebda3cd8052

备注:了解消息是如何转发的,类结构体里有哪些内容,元类的概念,Runtime 的使用场景等,务必仔细阅读,这个相当于是必考题,更资深一些的面试官可能会问方法交换是如何实现的(Method Swizzling)

9.自动释放池(Autorelease)实现原理:

https://www.jianshu.com/p/7bd2f85f03dc

https://www.jianshu.com/p/19b3cea88acb

备注:资深面试官一般会问这个;

10.load 和 Initialize :

https://www.jianshu.com/p/bd82ef5ea186

备注:部分面试官会问,load 和 init 的启动时机这些;

11.Category :

https://www.jianshu.com/p/b08bbe3613ab

备注:初级iOS开发面试官一般会问:category 和 扩展的区别

中高级:category+A 和 category+B 都有一个 foo() 方法,会先执行哪一个,如果先让 category+A 中的 foo() 先执行,如何操作;

资深:category 和 类(class )的区别;

子类、分类、父类都有同一个方法,最先执行哪个?子类分类>子类>父类分类>父类

多线程:

1. GCD 详细总结:

https://www.jianshu.com/p/2d57c72016c6

备注:GCD 必考题,仔细去阅读这篇文章,笔试题也可能会出现,要注意死锁,栅栏方法,信号量这些,了解 GCD 与 NSOperation 还有 NSThread 的关系

2.『NSOperation、NSOperationQueue』:

https://www.jianshu.com/p/4b1d77054b35

3.NSThread:

https://www.jianshu.com/p/686dbf4bbb52

备注:GCD 要重点关注,后面两种用到的少一些,pthread 用到的更少,了解就好;

额外小问题:

(1)从异步线程回到主线程有哪些方法?

(2)如何在子线程执行 performSelector ?(万法相通,RunLoop)

4.pthread:

pthread 用得少,自己去了解即可;

5.锁:

https://www.jianshu.com/p/467366e23fab

https://www.jianshu.com/p/b1edc6b0937a

备注:这个面试里出现的也比较多,特别是几种锁的概念,以及使用场景,两篇文章可以结合来看;

静态库与动态库:

https://www.jianshu.com/p/42891fb90304

了解静态库与动态的使用与区别,以及为了加快编译速度,涂鸦做了哪些优化,组件内的代码,静态链接;

网络:

1.http 和 https 的区别;

2.http 1 和 http 2 以及 http 3的区别

3.tcp 队头阻塞;

4.https 加密方式,对称加密,非对称加密

5.单向认证,双向认证;

6.如何优化http

7.http 三次握手,四次挥手;

https://blog.csdn.net/weixin_34152820/article/details/91805142

其他:

1.iOS 响应链:

iOS - 事件传递链与响应链 

https://www.jianshu.com/p/2e074db792ba

2.crash 捕获,bugly 的实现原理:

https://www.jianshu.com/p/3f6775c02257

3.如何通过 RunLoop 检测卡顿:

https://www.jianshu.com/p/d0aab0eb8ce4

备注:其他方案

4.iOS 性能优化:

(1)启动优化:

常见优化:https://www.jianshu.com/p/5d4fcc5b534d

二进制重排:https://www.jianshu.com/p/3f9ed86a45cb

(2)优化 ipa 包大小:

https://www.jianshu.com/p/a49d59b01669;(舍弃 arm7 架构)

(3)卡顿优化:

https://www.jianshu.com/p/af7bb933f1ff;(可以提到如何用 runloop 检测卡顿)

  (4)  tableview 优化:

https://blog.csdn.net/u012439446/article/details/107637522

备注:注意离屏渲染产生原因以及如何优化,初级的面试官会问;

5.iOS 启动过程:

https://www.jianshu.com/p/d1399d6483b3

备注:这个问题 网易 和 吉利 可能会问,一般能大致说出主流程即可,由此引申出的启动优化,二进制重排,Page Fault 这些概念等;

6.内存泄漏与检测:

https://www.jb51.net/program/292037qda.htm

https://www.jianshu.com/p/a2d52f523969

7.通过view获取到当前vc的原理:

备注:UIResponder *nextResponder = self; do{     nextResponder = [nextResponder nextResponder];    if ([nextResponder isKindOfClass:[UIViewController class]])            return (UIViewController*)nextResponder;    } while (nextResponder != nil);    return nil;

8.NSTimer 循环引用产生的原因以及解决方法:

因为self引用timer,timer引用了target;

https://www.jianshu.com/p/a8ddef42ca41

9.view和bounds的区别:

iOS frame和Bounds 以及frame和bounds区别 

UIScrollView 实现原理

算法:

数组,链表,二叉树,动态规划,排序;

还有:

设计模式

组件化方案;

设计架构:mvcmvvmmvp

如何实现多代理;

类簇概念;

野指针,检测工具实现原理;

CGPoint 在内存中的分配;

flutter,RN,weex 分别的优缺点;

iOS 消息通知推送的过程;(初级面试官和小公司面试官会问)

CGPoint 的内存储存

数据库;

方法交换;

内存分配;

面试官还会问:

以前做得好的项目,亮点,准备一些,项目介绍,针对简历里来问;

相关文章

网友评论

      本文标题:iOS知识点

      本文链接:https://www.haomeiwen.com/subject/rkfelrtx.html