2020年iOS底层进阶-我的干货知识和面试题收集

持续更新--请iOS的小伙伴关注! 喜欢的话给一个赞吧!

永远要保持自己能够有着能够跳槽的实力,这是我找工作三个月的最大感触

1.什么是函数式编程?

函数可以接受函数当作输入(参数)和输出(返回值)。

2.什么是ABI?

应用程序二进制接口(application binary interface,ABI) 描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口 。ABI不同于API ,API定义了源代码和库之间的接口,因此同样的代码可以在支持这个API的任何系统中编译

3.什么是MVC,请结合CocoaTouch说明?

4.什么是MVVM,请设计View moled需要考虑哪些?

    1. 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model不可以不变,当Model变化的时候View也可以不变。
    1. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
    1. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。
    1. 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

5.swift相对于OC有哪些优点?

  • 简洁的语法:

我们不得不承认的是swift语言比OC精简,整个项目中丢掉了头文件,以及头文件的引入。

  • 报错精准:

报错的时候直接显示报错行。

  • 定义变量简单:

定义变量不用区分整型,浮点型等等,变量使用var,常量使用let。

  • 可视化互动效果:

开发工具带来了Xcode Playgrounds功能,该功能提供强大的互动效果,能让Swift源代码在撰写过程中实时显示出其运行结果。

  • 函数式编程的支持:

Swift 语言本身提供了对函数式编程的支持;

Objc 本身是不支持的,通过引入 ReactiveCocoa 这个库才可支持函数式编程。

6.oc里有多少种开辟多线程的方式

OC开线程的三种方式 ##7.多少种线程锁的写法 实现线程读写锁的四种方法

8.block的实质和原理

iOS Block原理和内存中位置

9.https的原理 为什么安全

HTTPS 的实现原理

10.谈谈事件响应链,如何响应view之外的事

iOS UI事件传递与响应者链

11.深拷贝和浅拷贝的区别

在iOS中关于深拷贝和浅拷贝以及copy属性的理解

12.isa指针是什么,在oc中起什么用。

每个Objective-C对象都有一个隐藏的数据结构,这个数据结构是Objective-C对象的第一个成员变量,它就是isa指针。这个指针指向哪呢?它指向一个类对象(class object 记住它是个对象,是占用内存空间的一个变量,这个对象在编译的时候编译器就生成了,专门来描述某个类的定义),这个类对象包含了Objective-C对象的一些信息(为了区分两个对象,我把前面提到的对象叫Objective-C对象),包括Objective-C对象的方法调度表,实现了什么协议等等。这个包含信息就是Objective-C动态能力的根源了。

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:761407670 进群密码'亮子',不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

另附上一份各好友收集的大厂面试题,进群可自行下载!
2020年iOS底层进阶-我的干货知识和面试题收集_第1张图片

13.delegate解决了什么问题,Notification与它有什么不同?

解决对象间通信,耦合度高,易懂

14.im消息不重复 不丢失

即时通讯软件如何保证消息的不重复和不丢失

15.LLVM与Clang的区别?

LLVM是构架编译器(compiler)的框架系统

16.lang是一个C++编写、基于LLVM、发布于LLVM BSD许可证下的C/C++/Objective-C/Objective-C++编译器。那么为什么已经有了GCC还要开发Clang呢?Clang相比于GCC有什么优势呢?

其实,这也是Clang当初在设计开发的时候所主要考虑的原因。Clang是一个高度模块化开发的轻量级编译器,它的编译速度快、占用内存小、非常方便进行二次开发。

17.Class、objc的区别是什么?

深入理解objc中的类与对象

18.AFN的原理

19.死锁的理解怎么解决

资源竞争循环等待

20.开发中遇到的最大的困难,怎么解决的。如果是现在你会怎么解决。

21.arc weak原理

(1)前端编译器 ----给“拥有的”每个对象插入相应的release语句。某个方法里面创建了一个对象,前端编译器会在方法末尾自动添加release语句销毁它。类拥有的对象(实例变量/属性)在dealloc方法内释放。

(2)ARC优化器---当代码中出现多个对 retain 和release的重复调用,ARC优化器负责移出多余的 retain 和release语句。

如下,是我收集以及遇到的各个公司的面试题,部分见解是我写的,不足之处,敬请谅解:

1.百度面试题目

一面二面

1.UIbutton的父类层级以及各层级的主要功能

3.OC消息转发的整个流程

4.项目的整个框架(手动画出来)

5.事件响应 画图说出响应的点

6.定义一个Min宏

三面

2.求两个对列交叉后的倒数第k个节点

3.同事间起就某个技术有争执怎么处理

2.哔哩哔哩面试

1、UIWebView相关:

开发时候一些注意点。JS代码注入时机。对UIWebView的优化。

http://blog.csdn.net/yu280265067/article/details/73379145

2、多线程在项目当中的用到的地方。

3、锁,代码块锁的线程安全问题。

4、请求加密

5、项目当中对于非Crash的问题(例如卡顿,卡死等)捕捉定位

http://www.cocoachina.com/ios/20161101/17903.html

http://blog.csdn.net/quanqinyang/article/details/68922847

6、长链接

http://www.cocoachina.com/ios/20160602/16572.html

iOS后台如何保持socket长连接和数据传输:https://www.jianshu.com/p/a33835598e5d

1、cpp数据结构

2、dequeue的底层实现

3、vector的实现

4、ffmpeg:

FFmpeg官网:http://www.ffmpeg.org

FFmpeg doc :http://www.ffmpeg.org/documentation.html

FFmpeg wiki :https://trac.ffmpeg.org/wiki

FAQ

Thanks!

FFmpeg基础:http://wenku.baidu.com/view/296eefcaf90f76c661371af1.html

原帖地址:http://derekzhan.iteye.com/blog/1989274

iOS开发技巧之:FFmpeg的使用一

http://javapyer.iteye.com/blog/1989274

原理:通过ffmpeg对视频进行解码,解码出每一帧图片,然后根据一定时间播放每一帧图

在iOS中使用FFmpeg命令

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

实现功能

代码地址https://github.com/QinminiOS/FFmpeg/

  • 图片、声音合成视频。

  • 视频编码转换。

  • 视频加水印。

  • 视频滤镜。

3.沪江

1.NSLock的底层实现原理

2.自旋锁和NSLock的区别

3.互斥锁与信号量的区别

4.NSSet,NSArray,NSDication的底层实现

5.单链表怎么寻找中间的节点

6.TCP为什么是三次握手而不是两次

7.HTTP的传输层是什么协议

8.ios最多的http连接数是哪个范围

9.cookie有哪些属性

name path expireDate domin url commentUrl

10.对称加密和非对称加密原理

11.iOS 引用外部静态库(.a文件)时或打包.a时,Category方法无法调用。崩溃

12.NSRunloop

4.今日头条

1.二叉树有几种遍历方法,层次遍历实现

3.NSThread在哪种情况必用

4.NSOperation自定义怎么实现并发

5.GCD queue和线程有什么关系和区别

6.手动实现set方法retain

7.怎么解决NSTimer的循环引用问题

8.ARC在运行期做了哪些优化

9.NSNotification接收消息是在哪个线程

10.hitTest遍历逻辑

5. 2345

1、iOS MD5和base64加密区别

http://blog.csdn.net/zdp072/article/details/30754955

一. 简述

MD5: 全称为message digest algorithm 5(信息摘要算法), 可以进行加密, 但是不能解密, 属于单向加密, 通常用于文件校验

Base64: 把任意序列的8为字节描述为一种不易为人识别的形式, 通常用于邮件、http加密. 登陆的用户名和密码字段通过它加密, 可以进行加密和解密.

2、解决“多个UITableView的时候不能点击状态栏回到顶部”问题

http://blog.csdn.net/zz1732818683/article/details/32129377

解决办法:不要让这些UITableView同时visible,一个时间内只让其中一个visible就行了。

可以设置:tableview1.scrollsToTop = NO;tableview1.scrollsToTop = YES;

或者:tableview1.hidden = NO;tableview1.hidden = YES;

3、OC跟Swift的协议有什么不同?

直接用Swift的协议,是不能实现可选协议的。你要实现一个protocol就必须实现它所有的方法。

swfit如果想实现可选方法,那么就需要在定义的协议前面写上@objc。

4、写代码:多个数组合并排序。(加分项:如果数组长度有大有小,怎么优化代码使得效率更高)

多线程是否共享堆栈 请说出你的理由

前面问项目经验 runloop runtime内存结构 计算机原理 操作系统相关的比较多

还有进程主要有什么内容 程序,PCB,数据

还问要给系统的一个进程发送消息怎么发 为什么分配了唯一的进程ID还要分配端口号

还有一道题,寄存器变量有啥用

快速的读取,速度快,容量小,提高运行效率

6.爱奇艺

1.算法题:设计一个人机对战的五子棋算法

2.Ⅰ(1)、Ⅱ(2)、Ⅲ(3)、Ⅳ(4)、Ⅴ(5)、Ⅵ(6)、Ⅶ(7)、Ⅷ(8)、Ⅸ(9)、Ⅹ(10)、Ⅺ(11)、Ⅻ(12)、XX(20)、XXX(30)、XL(40)、L(50),C(100),D(500),M(1000)。以此类推,写一个阿拉伯数字转罗马数字的算法。

3.动态绑定weak属性怎么实现,讲的是动态关联?

4.CADisplayLink原理及fps计算算法

CADisplayLink其实就是一个timer,只不过他是在每次频率刷新的时候调用对应的selector,fps可以通过CADisplayLink对应的target得到对应的时间戳的差值,然后与1相除。

5.block和delegate的区别和优点缺点

6.Copy的使用方法,在字符串和数组类型中分别有哪些种情况?

7.runloop的使用方法以及如何在程序中切换mode?

8.循环引用在那种情况下会发生,block的存储结构是什么样的?block的各个部分存储在内存的哪个区域

9.GCD代码的判断执行结果(他们写代码,你来说执行结果,主要是死锁的判定)

10.你在做项目中,哪一件或那些事情你感觉做的非常有成就感,为何?

11.你们是如何定位线上的crash,以及你们是如何定位一些比较奇怪的crash的。

12.聊架构:RN资源加密问题,RAC,MVVM

13.内存@property

14. id和nsobject指针的区别

15.富文本 主要基于IM 的文本图片表情视图的展现

16. async display kit离屏渲染

17. promise kit

18. gcd

19.单例 手写代码实现

20. arc mrc引用技术原理 以及 使用场景 并尝试用代码模拟实现

21. KVO KVC实现 KVC针对interface成员赋值

22. NSInvokation

23.动画组合动画 和分开动画区别, 动画使用CGPath 画出特定动画图案 以及代码

CGMutablePathRef path = CGMutablePathCreate();

CGMoveToPoint(path,NULL,200,200);

CGAddCurveToPoint(path,NULL,100,300,200,230,400,400);

ani.path = path;

CGPathRelease(Path);

24. NSRunLoop对UI的响应

26. jsbride

27.手动实现引用级数 写代码

28.手动实现快速排序

29. oc类信息存放在哪里

30.如何计算app帧率

持续更新--请iOS的小伙伴关注! 喜欢的话给一个赞吧!

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:761407670 进群密码'亮子',不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!

推荐

1.直击2020——iOS 面试题大全(补充完整版)

2.“新”携程,阿里,腾讯iOS面试常见问题合集(附答案)

3.我是如何同时拿到阿里和腾讯offer的

4.腾讯&阿里&美团&快手&字节等10公司面经

5.腾讯社招iOS面试记录

6.最新阿里腾讯头条美团等iOS面试总结

7.让 BAT 的 Offer 不再难拿

你可能感兴趣的:(2020年iOS底层进阶-我的干货知识和面试题收集)