博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2018 一份"有点难"的iOS面试题(5年iOS开发)
阅读量:7093 次
发布时间:2019-06-28

本文共 2035 字,大约阅读时间需要 6 分钟。

序言:

之前一时兴致在本站上出过一份iOS的中级面试题,引起一些关注,不少同学表示对”隐藏关卡“感兴趣。升级版iOS面试题来了,目测难倒90%iOS程序员,目测一大波程序员撸着袖子在靠近。

每道题都不难,对知识广度有要求,请摸着良心回答,不要百度。声明:这份面试题和iOS程序员本身技术水平没任何关联,无论你能否全部答出,都不要对自己产生任何正面或消极的评价,权当做闲暇之余的消遣。

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

1.NSString如何计算字符的个数?

2.PKI体系当中加密和签名有什么区别?

3.如何自己高效实现NSUserDefault?

4.解释下tcp的慢启动特性。

5.如何用HTTP实现长连接?

6.HTTP2.0针对同一个域名的多个请求,会建立多少个tcp连接?

7.数据库建表的时候索引有什么用?

8.Full Text Search为什么快?

9.iOS下如何实现指定线程数目的线程池?

10.介绍下iOS设备获取唯一设备号的历史变迁。

11.函数式编程当中的 first-class function是什么意思呢?

12.如何使用runtime hook一个class的某个方法,又如何hook某个instance的方法?

13.谈下Objective C都有哪些锁机制,你一般用哪个?

14.聊下HTTP post的body体使用form-urlencoded和multipart/form-data的区别。

15.让你设计一种机制检测UIViewController的内存泄漏,你会怎么做?

16.通过[UIImage imageNamed:]生成的对象什么时候被释放?

17.applicationWillEnterForeground和applicationDidBecomeActive都会在哪些场景下被调用?举例越多越好。

18.如何终止正在运行的工作线程?

19.穷举iOS下所有的本地持久化方案。

20.如果公司强制996,你有什么心里话要对老板说吗?

一个5年iOS开发者的五点建议

一位有 5年 iOS 开发经验的程序员提出的 5 点建议,违背了这 5 条。。。后果很严重!也许你现在没出现问题,也许只是项目不够庞大!为了所以一定要深记以下五点!我从第一年开始开发 iOS,并参与了无数应用的开发。这里提几个建议,也许能帮助你构建更高效更易维护的项目。

1. 坚持原生开发原生代码可以避免一些致命的错误。每个跨平台技术将为您的项目增加复杂程度和潜在的 bug。我还没有听说过哪一个大型的项目,因为使用原生开发而后悔,但是我听过很多大型项目后悔使用了跨平台开发技术,不要冒这个险!

2. 避免使用第三方库如今真的不需要第三方库。几乎所有的东西都可以使用原生框架来解决。网络是一个很好的例子 - 你真的不需要一些高级的第三方库来实现。只需建立自己的基于 iOS 网络的封装,并根据您的项目需求。简单灵活!这几乎满足你所有的需要。当然有一些你无法避免添加第三方库的情况。如果您想要在您的应用程序中使用 Google 地图或Intercom,那就没关系。

3. 不要使用包管理器既然你不应该使用这么多的第三方库,你也就不需要一个包管理器去管理它们。只需将它们添加到项目中。使用包管理工具不会为您节省任何时间。

4. 使用代码布局而不是 StoryboardsStoryboards 可能会帮助初学者快速入门,但是一旦需要做一些合理的动态布局,就需要用代码来完成这部分逻辑,所以为什么不从开始的时候就使用代码布局呢。我看到许多项目使用了巨大的 Storyboards,而且大部分的 ViewController 都是没有内容的。更不用说自动布局了 -所有复杂的东西,都可以通过代码简单的实现。我建议将所有布局逻辑放在代码中,而不需要 Storyboard 或自动布局,这样简单而且非常灵活!Core Data 很少被 iOS 开发人员所接受。因为它很复杂,需要大量的 boilerplate才能开始使用,起初看起来并不吸引人。

5.在我的头几年里,我尝试过几次,但失败了。然后我读了这篇很棒的文章,并决定花更多时间来研究它。随着对它研究的深入,我发现 Core Data 真的是处理 iOS 数据非常合适的方式。它有强大的功能,能够帮助您解决一些非常困难的问题,如持久性和数据更改传播,在几乎每个应用程序中都需要。遵循这些建议将让您的项目更具维护性,可以在多个版本迭代中保存下去。让项目维护起来更简单!

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

转载地址:http://fpsql.baihongyu.com/

你可能感兴趣的文章
centos7修改网卡一致性命名
查看>>
文件管理命令及变量基础
查看>>
find
查看>>
如何理解磁力
查看>>
安卓学习-NDK开发
查看>>
Linux的基础学习
查看>>
MyBatis--01.基础
查看>>
JEESZ-Redis分布式缓存安装和使用
查看>>
【转载】javascript获取url参数值
查看>>
最流行的浏览器?不用 Chrome 的 13 个理由
查看>>
for和each的区别
查看>>
我是皇帝我独苗之单例模式
查看>>
华为OSPF 多区域配置
查看>>
自研数据库CynosDB存储系统如何实现即时恢复
查看>>
插入排序
查看>>
h5新增标签、css3新增属性
查看>>
为什么我这样做会出错,求教
查看>>
【Java多线程】的学习总结
查看>>
五分钟搭建你的第一个区块链应用
查看>>
家庭WiFi有限的访问权限
查看>>