前言:


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

今年受疫情的影响,各行各业都举步维艰,然而做为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优点:低耦合,可重用性,独立开发,可测试


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

三、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的数据格式

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

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性能优化,超实用

线程:

37、 不要阻塞主线程

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

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

40、ViewController生命周期

41、iOS 中的多线程

42、内存管理的几条原则时什么?按照默认法则.那些关键字生成的对象

需要手动释放?在和property结合的时候怎样有效的避免内存泄露?

谁申请,谁释放

43、dispatch_barrier_async的作用是什么?

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

http:

46、http与https的区别?

47、服务器能否知道APNS推送后有没有到达客户端的方法?

app:

48、1.什么方式可以看到上架App的头文件?

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

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

62道经典 iOS面试题相关推荐

  1. 71道经典Android面试题和答案,重要知识点都包含了

    更多源码下载,请关注微信公众号:互联网技术分享 面试题 1.        下列哪些语句关于内存回收的说明是正确的? (b ) A. 程序员必须创建一个线程来释放内存   B.内存回收程序负责释放无用 ...

  2. 30道经典SQL面试题讲解(11-20)

    本篇节选自书籍<对比Excel,轻松学习SQL数据分析>一书,主要讲解数据分析面试中常见的30道SQL面试题.1-10题见:30道经典SQL面试题讲解(1-10) 11 行列互换 现在我们 ...

  3. 20道经典Redis面试题

    前言 整理了20道经典Redis面试题,希望对大家有帮助. 1. 什么是Redis?它主要用来什么的? Redis,英文全称是Remote Dictionary Server(远程字典服务),是一个开 ...

  4. 这八道经典指针笔试题你都会做嘛?

    本文详细介绍了八大指针经典笔试题,内涵盖指针大部分的用法, 全部了解掌握其原理之后对指针的学习大有帮助!!! 对指针掌握 也就掌握了内存,C语言也就没有什么更绕的了 详解八道经典指针笔试题 一.八道经 ...

  5. 万字长文,62道Java核心面试题,一次性打包送给积极向上的你

    先看再点赞,给自己一点思考的时间,微信搜索[沉默王二]关注这个靠才华苟且的程序员. 本文 GitHub github.com/itwanger 已收录,里面还有一线大厂整理的面试题,以及我的系列文章. ...

  6. 50道经典计算机网络面试题

    50道经典计算机网络面试题 1. 说说HTTP常用的状态码及其含义? 思路: 这道面试题主要考察候选人,是否掌握HTTP状态码这个基础知识点. 不管是不是面试需要,我们都要知道,日常开发中的这几个状态 ...

  7. 备战金三银四,2021最全100道高频iOS面试题分享上(含答案)

    原作者:执笔续春秋 iOS面试题 本面试题为个人使用版本,如后续流传出去,请转发的朋友务必注释一下,答案正确性有待商榷,本人的答案不代表权威,仅仅是个人理解. 文章内部有写混乱,将就着看吧.另外大部分 ...

  8. 100道经典软件测试笔试题(附答案)一次性查缺补漏个够

    千呼万唤始出来,很多群友说我看了这么多面试题,但是公司要笔试怎么办?有没有能够笔试给我们练练手,这边我也是特意帮大家整理了这么100道软件测试的笔试题,答案在最后,试试自己能答对多少吧!需要更多的关于 ...

  9. 【Vue面试专题】50+道经典Vue面试题详解!

    目录 前言 相关学习资源 01-Vue组件之间通信方式有哪些 02-v-if和v-for哪个优先级更高? 03-能说一说双向绑定使用和原理吗? 04-Vue中如何扩展一个组件 05-子组件可以直接改变 ...

最新文章

  1. 通过 Mysql 官网配置更新本地的mysql源
  2. Appium的环境搭建和配置
  3. 区块链:游戏规则的改变者
  4. Python中__str__和__repr__
  5. Java-二分查找算法
  6. python excel 模块 性能_【xlwings1】Python-Excel 模块哪家强
  7. jQuery 选择器和筛选
  8. Chronicle 已死,凶手是谷歌!
  9. 将指定文件中的空格或换行删除(可选是否创建一个新文件)
  10. 20191114每日一句
  11. 杀毒软件可能令企业用户陷入更大危机
  12. 联想台式计算机驱动程序,联想键盘驱动程序
  13. 1-7 华为HCNA认证eNSP基础A
  14. tpac100控制器设置教程_TP-link AC100控制器配置的详细方法
  15. Mac打开终端自动运行命令
  16. CTU Open Contest 2019 G. Beer Mugs 异或维护奇偶性
  17. xml与txt文件格式互换
  18. JavaSE习题 用Java打印九九乘法口诀表
  19. 一些android论坛
  20. ROS 通信机制(已整理)

热门文章

  1. QQ视频聊天时可以给对方加特效恶搞对方的软件--- 变色鸟摄像头视频特效
  2. css做个波浪悬浮球?
  3. Java之父的高龄码农路 硅谷公司的年龄歧视
  4. 物联网RFID测试点-方向
  5. 【计算机问题:鼠标不动了】解决教程
  6. 在Java中 用 switch 表示 区间
  7. revit学习-图元属性
  8. jpg图片转ico图片格式
  9. mail.163邮箱登陆,邮件是什么意思如何获得电子邮箱?
  10. 最经典的LOGO设计如何返璞归真