前言:

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

往年受疫情的影响,各行各业都举步维艰,然而做为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的关注我一起学习交换!