序言:
之前一时兴致在本站上出过一份iOS的中级面试题,引起一些关注,不少同学表示对”隐藏关卡“感兴趣。升级版iOS面试题来了,目测难倒90%iOS程序员,目测一大波程序员撸着袖子在靠近。
每道题都不难,对知识广度有要求,请摸着良心回答,不要百度。声明:这份面试题和iOS程序员本身技术水平没任何关联,无论你能否全部答出,都不要对自己产生任何正面或消极的评价,权当做闲暇之余的消遣。
其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:638302184,,不管你是小白还是大牛欢迎入驻,分享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?点建议,违背了这?5?条。。。后果很严重!也许你现在没出现问题,也许只是项目不够庞大!为了所以一定要深记以下五点!我从第一年开始开发?iOS,武汉托福班并参与了无数应用的开发。这里提几个建议,也许能帮助你构建更高效更易维护的项目。
1.?坚持原生开发原生代码可以避免一些致命的错误。每个跨平台技术将为您的项目增加复杂程度和潜在的?bug。我还没有听说过哪一个大型的项目,因为使用原生开发而后悔,但是我听过很多大型项目后悔使用了跨平台开发技术,不要冒这个险!
2.?避免使用第三方库如今真的不需要第三方库。几乎所有的东西都可以使用原生框架来解决。网络是一个很好的例子?-?你真的不需要一些高级的第三方库来实现。只需建立自己的基于?iOS?网络的封装,并根据您的项目需求。简单灵活!这几乎满足你所有的需要。当然有一些你无法避免添加第三方库的情况。如果您想要在您的应用程序中使用?Google?地图或Intercom,那就没关系。
3.?不要使用包管理器既然你不应该使用这么多的第三方库,你也就不需要一个包管理器去管理它们。只需将它们添加到项目中。使用包管理工具不会为您节省任何时间。
4.?使用代码布局而不是?StoryboardsStoryboards?可能会帮助初学者快速入门,但是一旦需要做一些合理的动态布局,就需要用代码来完成这部分逻辑,所以为什么不从开始的时候就使用代码布局呢。我看到许多项目使用了巨大的?Storyboards,而且大部分的?ViewController?都是没有内容的。更不用说自动布局了?-所有复杂的东西,新加坡研究生留学都可以通过代码简单的实现。我建议将所有布局逻辑放在代码中,而不需要?Storyboard?或自动布局,这样简单而且非常灵活!Core?Data?很少被?iOS?开发人员所接受。因为它很复杂,需要大量的?boilerplate才能开始使用,起初看起来并不吸引人。
5.在我的头几年里,我尝试过几次,但失败了。然后我读了这篇很棒的文章,并决定花更多时间来研究它。随着对它研究的深入,我发现?Core?Data?真的是处理?iOS?数据非常合适的方式。它有强大的功能,能够帮助您解决一些非常困难的问题,如持久性和数据更改传播,在几乎每个应用程序中都需要。遵循这些建议将让您的项目更具维护性,可以在多个版本迭代中保存下去。让项目维护起来更简单!
其实做为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:638302184,,不管你是小白还是大牛欢迎入驻,分享BAT面试题、面试经验,讨论技术,?大家一起交流学习成长!希望帮助开发者少走弯路。