关于ios:面试了12名开发者后总结了62道-iOS面试题建议收藏收藏再收藏

1次阅读

共计 3800 个字符,预计需要花费 10 分钟才能阅读完成。

前言:

每年三四月份都是招聘高峰期,也就是咱们说的金三银四,很多想换工作的职场人士都会抉择在此时换一份工作,毕竟一年之计在于春,对于公司和集体而言都是一个新的开始。

往年受疫情的影响,各行各业都举步维艰,然而做为 iOS 面试官的我也在精心筹备的为公司招进优良的 iOS 开发,期间收到了很多简历,也口试了不少开发者,上一周咱们曾经发了 3 个 offer,所以先发制人,咱们曾经招满了人的职位,仍旧陆陆续续也还有很多的简历投向咱们。
后面一段时间给公司面试了 10 个 iOS 开发,本人总结了 62 道面试题,在此,我分享给大家,心愿大家在之后要找工作的敌人,我的这篇文章能给你有所帮忙。

本文分为两大部分:(1-12 题为详解题)(13-62 为待解题)

一、如何绘制 UIView?

绘制一个 UIView 最灵便的办法就是由它本人实现绘制。实际上你不是绘制一个 UIView,而是子类化一个 UIView 并赋予绘制本人的能力。

当一个 UIView 须要执行绘制操作时,drawRect:办法就会被调用,笼罩此办法让你取得绘图操作的机会。当 drawRect 办法被调用,以后图形的上下文也被设置为属于视图的图形上下文,你能够应用 Core Graphic 或者 UIKit 提供的办法将图形画在该上下文中。

二、什么是 MVVM?次要目标是什么?长处有哪些?

MVVM 即 Model-View-ViewModel

1.View 次要用于界面出现,与用户输出设施进行交互、

2.ViewModel 是 MVVM 架构中最重要的局部,ViewModel 中蕴含属性,办法,事件,属性验证等逻辑,负责 View 与 Model 之间的通信

3.Model 就是咱们常说的数据模型,用于数据的结构,数据的驱动,次要提供根底实体的属性。
MVVM 次要目标是拆散视图和模型

MVVM 长处:低耦合,可重用性,独立开发,可测试

三、get 申请与 post 申请的区别

1.get 是向服务器发索取数据的一种申请,而 post 是向服务器提交数据的一种申请

2.get 没有申请体,post 有申请体

3.get 申请的数据会裸露在地址栏中,而 post 申请不会,所以 post 申请的安全性比 get 申请号

4.get 申请对 url 长度有限度,而 post 申请对 url 长度实践上是不会收限度的,然而实际上各个服务器会规定对 post 提交数据大小进行限度。

四、谈谈你对多线程开发的了解?ios 中有几种实现多线程的办法?

益处:

1. 应用多线程能够把程序中占据工夫长的工作放到后盾去解决,如图片,视频的下载;

2. 施展多核处理器的劣势,并发执行让零碎运行的更快,更晦涩,用户体验更好;

毛病:

1. 大量的线程升高代码的可读性;

2. 更多的线程须要更多的内存空间;

3 当多个线程对同一个资源呈现抢夺的时候要留神线程平安的问题。

ios 有 3 种多线程编程的技术:1.NSThread,2.NSOperationQueue,3.gcd;

五、XMPP 工作原理;xmpp 零碎特点

原理:

1. 所有从一个 client 到另一个 client 的 jabber 音讯和数据都要通过 xmpp server

2.client 链接到 server

3.server 利用本地目录零碎的证书对其认证

4.server 查找,连贯并进行互相认证

5.client 间进行交互

特点:1)客户机 / 服务器通信模式;2)分布式网络;3)简略的客户端;4)XML 的数据格式

答案:
因为答案太多,我做了一个 PDF 文档,因为简书不能上传文件,,因为文章无限,须要这些文档的,

点击

材料收录

自取吧

六、地图的定位是怎么实现的?

1. 导入了 CoreLocation.framework

2.ios8 当前,如果须要应用定位性能,就须要申请用户受权,在首次运行时会弹框提醒

3. 通过本机自带的 gps 获取地位信息(即经纬度)

七、苹果内购实现流程

程序通过 bundle 存储的 plist 文件失去产品标识符的列表。

程序向 App Store 发送申请,失去产品的信息。

App Store 返回产品信息。

程序把返回的产品信息显示给用户(App 的 store 界面)

用户抉择某个产品

程序向 App Store 发送领取申请

App Store 解决领取申请并返回交易实现信息。

App 获取信息并提供内容给用户。

八、支付宝,微信等相干类型的 sdk 的集成

1. 在支付宝开发平台创立利用并获取 APPID

2. 配置密钥

3. 集成并配置 SDK

4. 调用接口(如交易查问接口,交易退款接口)

九、gcd 产生死锁的起因及解锁的办法

产生死锁的必要条件:1. 互斥条件,2. 申请与放弃条件,3. 不剥夺条件,4. 循环期待条件。

解决办法:采纳异步执行block

十、生成二维码的步骤

1. 应用 CIFilter 滤镜类生成二维码

2. 对生成的二维码进行加工,使其更清晰

3. 自定义二维码背景色、填充色

4. 自定义定位角标

5. 在二维码核心插入小图片

十一、在应用 XMPP 的时候有没有什么艰难

发送附件(图片,语音,文档 …)时比拟麻烦

XMPP 框架没有提供发送附件的性能,须要本人实现

实现办法,把文件上传到文件服务器,上传胜利后获取文件保留门路,再把附件的门路发送给好友
十二、是否应用过环信,简略的说下环信的实现原理
环信是一个即时通讯的服务提供商

环信应用的是 XMPP 协定,它是再 XMPP 的根底上进行二次开发,对服务器 Openfire 和客户端进行性能模型的增加和客户端 SDK 的封装,环信的实质还是应用 XMPP,基于 Socket 的网络通信

环信外部实现了数据缓存,会把聊天记录增加到数据库,把附件(如音频文件,图片文件)下载到本地,使程序员更多工夫是花到用户体验体验上。

待解题

根底:

1、如何令本人所写的对象具备拷贝性能?

2、说说你了解 weak 属性?

3、题目:Swift mutating 关键字的应用?

4、UIView 和 CALayer 是什么关系?

5、上面的代码输入什么?

6、@synthesize 和 @dynamic 别离有什么作用?

7、动静绑定

8、Category(类别)、Extension(扩大)和继承的区别

9、为什么代理要用 weak?代理的 delegate 和 dataSource 有什么区别?block 和代理的区别?

10、id 和 NSObject*的区别

11、如何令本人所写的对象具备拷贝性能?

12、应用零碎的某些 block api(如 UIView 的 block 版本写动画时),是否也思考援用循环问题?

13、用 @property 申明的 NSString(或 NSArray,NSDictionary)常常应用 copy 关键字,为什么?如果改用 strong 关键字,可能造成什么问题?

14、UIView 和 CALayer 是什么关系?

15、static 有什么作用?

底层:

16、main()之前的过程有哪些?

17、KVO 基本原理?

18、Swift 下的如何应用 KVC?

19、:Swift 有哪些模式匹配?

20、objc 在向一个对象发送音讯时,产生了什么?

21、动态库的原理是什么?你有没有本人写过动态编译库,遇到了哪些问题?

22、runloop 是来做什么的?runloop 和线程有什么关系?主线程默认开启了 runloop 么?子线程呢?

23、不手动指定 autoreleasepool 的前提下,一个 autorealese 对象在什么时刻开释?(比方在一个 vc 的 viewDidLoad 中创立

24、不手动指定 autoreleasepool 的前提下,一个 autorealese 对象在什么时刻开释?(比方在一个 vc 的 viewDidLoad 中创立)

25、OC 残缺的音讯转发机制 + 代码实现【暴击】

26、、以 + scheduledTimerWithTimeInterval… 的形式触发的 timer,在滑动页面上的列表时,timer 会暂定回调,为什么?如何解决?

27、如何手动触发一个 value 的 KVO

28、如何对定位和剖析我的项目中影响性能的中央?以及如何进行性能优化?

29、串行并行,异步同步的区别?

30、线程是什么?过程是什么?二者有什么区别和分割?

31、RunLoop 是什么?

32、假如有一个字符串 aabcad,请写一段程序,去掉字符串中不相邻的反复字符串,即上述字符串解决之后的输入后果为:aabcd
@autoclosure(主动闭包)

34、iOS app 启动如何优化?

35、swift 面试题:

36、怎么避免反编译?

37、UITableView 性能优化,超实用

线程:

38、谈谈你对多线程开发的了解?ios 中有几种实现多线程的办法?

39、过程和线程的区别?同步异步的区别?并行和并发的区别?

40、ViewController 生命周期

41、iOS 中的多线程

42、内存治理的几条准则时什么?依照默认法令. 那些关键字生成的对象
须要手动开释?在和 property 联合的时候怎么无效的防止内存泄露?
谁申请,谁开释

43、dispatch_barrier_async 的作用是什么?

44、如何用 GCD 同步若干个异步调用?(如依据若干个 url 异步加载多张图片,而后在都下载实现后合成一张整图)

45、不要阻塞主线程

http:
46、http 与 https 的区别?

47、服务器是否晓得 APNS 推送后有没有达到客户端的办法?
app:

48、1. 什么形式能够看到上架 App 的头文件?

49、iOS iAP 内购审核可能失败的问题

50、IAP 内购中虚构货币导致审核无奈通过的问题?

材料收录

一个正在致力的 iOS 开发者!

喜爱 iOS 的关注我一起学习交换!

正文完
 0