1.什么是函数式编程?

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

2.什么是ABI

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

作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要,这是一个我的iOS交流群:656315826,不管你是小白还是大牛欢迎入驻 ,分享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也可以不变。

2. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。

3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。

4. 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。

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

、简洁的语法:

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

、报错精准:

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

、定义变量简单:

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

、可视化互动效果:

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

、函数式编程的支持:

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

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

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

https://mp.weixin.qq.com/s?__biz=MzUyNDM5ODI3OQ==&mid=2247483744&idx=1&sn=eb85b8e52612f5f413504856626c0df3&chksm=fa2cbac8cd5b33de463a12c1f188fc37f8d704898f6905fe210e43dbb0695281a8c855db8db2&mpshare=1&scene=1&srcid=1103mJwDvwAffPI8VX7ioMO1&key=0ca095a9371e1ae74ca933f937f0557a59ac9fddbbe98bc852ac552acc8e7f30326695d6ff0279d455f66602db575a1959498f27d723449cad626924fec1544f47c4e9922126cbf6ca4758045f1335e9&ascene=0&uin=Nzk2OTI5NDAw&devicetype=iMac+MacBookPro11%2C5+OSX+OSX+10.13.6+build(17G65)&version=12020610&nettype=WIFI&lang=zh_CN&fontScale=100&pass_ticket=Ylhxswi3lMrxXK9uqjR%2B3CT4k%2F%2FuP0xQfjr%2FFWPgzi7aESCJ1rNk8dwg2hccNO8Z

7.多少种线程锁的写法

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

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.LLVMClang的区别?

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

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

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

17.Classobjc的区别是什么?

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交流群:656315826,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题、面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。

转自简书

作者:wu大维
链接:https://www.jianshu.com/p/406713c87521

bat、头条、爱奇艺iOS面试题总结相关推荐

  1. 爱奇艺iOS稳定性测试实践

    稳定性测试是长时间持续运行APP,以验证应用是否稳定的测试.它可以有效发现APP长时间运行下的偶发闪退.内存泄露.性能变差等问题.iOS端通常由苹果系统的API快速执行点击事件,开展稳定性测试,类似的 ...

  2. 录制快、回放稳,爱奇艺iOS云录制回放平台技术实践

    众所周知,移动APP的周期短.迭代速度快,测试人员在保证新功能正常运行的情况下需要回归大量的历史功能,自动化回归便成为重要的回归手段之一.iOS端自动化由于以下问题,一直很难在业务线广泛开展. 落地成 ...

  3. 爱奇艺iOS深度实践 | SiriKit详解应用篇

    前言 苹果全球开发者大会(Worldwide Developers Conference,下文简称WWDC)自1983年加州首次举办以来至今一直备受iOS 开发者关注,第一代 iOS 也从2007年一 ...

  4. 爱奇艺iOS移动端网络优化实践 | 请求成功率优化篇

    移动应用APP的网络优化三大重点方向即成功率.耗时与流量.其中,APP成功率即网络请求成功率,他的重要性直接体现于它能直接决定APP服务的可用性,直接影响到视频播放.广告展现.支付便捷等服务质量.本文 ...

  5. 爱奇艺iOS移动端网络优化实践:请求成功率优化(转载)

    原文链接:https://cloud.tencent.com/developer/article/1707833 导致请求失败的因素 想要优化请求成功率先来了解移动端网络请求全链条可能导致请求失败的环 ...

  6. 爱奇艺iOS真机远程APP测试技术实践

    背景 iOS多机远程控制技术目前业界初步也有了一些方案,可以让APP在远程iPhone上面安装操作,对于设备兼容性测试是一款很好的服务,但是就体验上还是存在UI截屏延迟,设备掉线,稳定性不高的问题,尤 ...

  7. 爱奇艺基于 Vue 的微前端架构实践

    点击上方"开发者技术前线",选择"星标" 18:50 在看 真爱 来自:爱奇艺技术产品团队 前言 近来,微前端的概念非常火爆,那么什么是微前端架构?微前端架构是 ...

  8. 爱奇艺App架构升级之路——64位适配探索与实践

    背  景 随着手机硬件的不断发展,近两年的新式手机已经全部采用了64位CPU,64位真的比32位快吗?实际上32位和64位的差异主要体现在内存寻址上,32位最高只支撑4GB内存,而64位则能够最高支撑 ...

  9. iOS 版微信可以改微信号;传腾讯计划入股爱奇艺;Qt 6.0 发布首个预览版本| 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极 ...

最新文章

  1. java 之 多线程
  2. 书多嚼不烂,看书的方法
  3. matlab2018无法使用qcat,解决Matlab 2018a源代码的中文支持问题
  4. 主流开源编解码器Xvid,x264,ffmpeg 性能对比
  5. 网页特效java代码,美化网页常用特效代码
  6. mysql group 条件_mysql 的group by 满足的规则要求:
  7. bootstraptable查看详情_bootstrap-table前端实现多条件时间段查询数据
  8. SpringBoot 整合Shiro Ehcache
  9. 计算一棵树的深度和宽度[Treeview的深度和宽度](多题头的表格问题解决的基础)...
  10. 用python画多来a梦-python 绘制哆啦A梦
  11. 如何将外置显示器与 Mac 搭配使用?
  12. 软件安装出现【安装程序集组件时出错】时处理方案
  13. 2011最新笔记本、一体机显卡性能排行
  14. 程序员是否要考PMP认证?看这篇就够了
  15. java pdf 添加图片
  16. CMMI 项目计划实战
  17. android 九宫格带删除,Android--选择多张图片,支持拖拽删除、排序、预览图片
  18. PLSQL官网, 及个版本下载地址和下载方法
  19. Android Input事件处理
  20. 推荐一款很好用的一款扒网站的工具

热门文章

  1. 企业如何借助SEO优化在线声誉?
  2. css3 transition 简易动画
  3. 敏捷开发,SIT测试
  4. VOC2007格式数据集制作
  5. mysql服务启动就停止
  6. c/c++图形化(1)
  7. JSQLParser碰到的问题
  8. 贷后催收专用分案算法
  9. Ajax传值 简述方法(前后端传值)
  10. i7 12700k和i7 12700kf哪个好 i712700kf和酷睿i712700k性能差距