美文网首页面试合集iOS开发面试合集
iOS开发——bat、头条、爱奇艺iOS面试题总结

iOS开发——bat、头条、爱奇艺iOS面试题总结

作者: iOS最新面试题收录 | 来源:发表于2020-04-11 14:37 被阅读0次

    这个栏目将持续更新--请iOS的小伙伴关注 !!!

    1.什么是函数式编程?

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

    2.什么是ABI?

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

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

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

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

    https://www.cnblogs.com/iammackong/articles/3312565.html

      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里有多少种开辟多线程的方式

    7.多少种线程锁的写法

    8.block的实质和原理

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

    指针结构体

    9.https的原理 为什么安全

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

    http://www.cocoachina.com/ios/20171012/20771.html

    https://blog.csdn.net/feosun/article/details/81189221

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

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

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

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

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

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

    15.im消息不重复 不丢失

    https://blog.csdn.net/u014105540/article/details/80539507

    16.LLVM与Clang的区别?

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

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

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

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

    https://www.jianshu.com/p/9128a3ccf1ff

    18.AFN的原理

    https://www.jianshu.com/p/02b25f6d1e1f

    19.死锁的理解怎么解决

    资源竞争循环等待

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

    21.arc weak原理

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

    (2)ARC优化器---当代码中出现多个对 retain 和release的重复调用,ARC优化器负责移出多余的 retain 和release语句。 --------------------- 本文来自 bfmeans 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/bfmeans/article/details/51485970?utm_source=copy

    http://www.cocoachina.com/ios/20170328/18962.html

    22.@property的所有关键字。strong和weak的区别

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

    23.GCD的理解和原理

    http://www.cocoachina.com/ios/20160804/17291.html

    24.kvo 的原理

    https://www.cnblogs.com/oc-bowen/p/5884768.html

    kvc

    • 1、首先搜索setKey:方法.(key指成员变量名, 首字母大写)

    • 2、上面的setter方法没找到, 如果类方法accessInstanceVariablesDirectly返回YES. 那么按 _key, _isKey,key, iskey的顺序搜索成员名.(NSKeyValueCodingCatogery中实现的类方法, 默认实现为返回YES)

    • 3、如果没有找到成员变量, 调用setValue:forUnderfinedKey:

      25.消息转发 runloop的原理。

    https://www.jianshu.com/p/848ea3817502

    26. jspatch原理

    JSPatch 使⽤用 Objective-C 的 runtime 让 JS 调⽤用任意的 Objective-C 的类和⽅方法。如果想要动态调⽤用 Objective-C 的任意类、任意⽅方法,恰巧 Objective-C 的 runtime 可以做到这⼀一点。那么 JSPatch 的 核⼼心就是把 JS 中的⽅方法调⽤用,转换成 Objective-C 的⽅方法调⽤用,并且 JS 和 Objective-C 之间需要进⾏行行 数据传递。

    补丁下发 补丁格式替换为 __c 对需要添加或修改的⽅方法进⾏行行处理理,传递给 OC,使⽤用 runtime 处理理 调⽤用下发的 JS 函数 调⽤用补丁代码的实现 调⽤用 __c 函数 调⽤用 _OC_callI 或者 _OC_callC

    27.设计模式, 路由设计模式和桥接设计

    29.数据库设计

    https://www.jianshu.com/p/217a769f184e

    30.category和extensions的区别

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

    31.内存优化

    32.tableview 性能优化

    https://blog.csdn.net/hmh007/article/details/54907560/

    33.NSMutable原理

    https://blog.csdn.net/Deft_MKJing/article/details/82732833

    34.webview 性能体验和优化

    WebView初始化慢,可以在初始化同时先请求数据,让后端和网络不要闲着。 后端处理慢,可以让服务器分trunk输出,在后端计算的同时前端也加载网络静态资源。 脚本执行慢,就让脚本在最后运行,不阻塞页面解析。 同时,合理的预加载、预缓存可以让加载速度的瓶颈更小。 WebView初始化慢,就随时初始化好一个WebView待用。 DNS和链接慢,想办法复用客户端使用的域名和链接。 脚本执行慢,可以把框架代码拆分出来,在请求页面之前就执行好。 https://blog.csdn.net/yu280265067/article/details/73379145

    35.自动释放池

    https://www.jianshu.com/p/8b011b844231

    36.NSproxy是干嘛用的

    NSProxy通常用来实现消息转发机制和惰性初始化资源。

    https://blog.csdn.net/Hello_Hwc/article/details/52288611

    37.算法

    反斜对角打印,取数组第n大的值,three sum

    持续更新,多多关注

    另外附上一份各个好友收集的各大厂面试题+答案 ! 需要的可加 iOS技术探讨群:761407670 进群密码000,群文件直接获取

    点击此处,与iOS开发大牛一起交流学习,进群密码000

    如下图所示:


    image.png

    其他大厂面经

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

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

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

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

    5.腾讯社招iOS面试记录

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

    7.让 BAT 的 Offer 不再难拿

    持续更新!喜欢的话可以点个赞:+1:或关注

    相关文章

      网友评论

        本文标题:iOS开发——bat、头条、爱奇艺iOS面试题总结

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