一面:
1.首先自我介绍
2.你觉得你在最近做的项目中遇到了什么问题是比较棘手的?
3.知不知道死锁,什么情况下会产生?
4.平常用到那些锁?
5.了解TCP三次握手四次挥手吗?大概是个什么样的流程呢?为什么要三次握手而不是两次,又为什么是四次挥手?
6.runloop了解吗?举一个应用到的例子?
7.https跟http的区别?
8.https的加密协议是什么,加密流程?
9.讲两个你平时用的多的第三方库底层实现框架?
10.讲一下UI事件传递机制?
11.内存泄漏怎么查的平时?
12.性能优化这方面有做过吗?平时怎么优化的?
13.如果有10000个数据,找出里面最大的10个数,你要怎么实现,说出几种方法?
14.http返回对状态码有哪些?
二面:
1.介绍自己
2.平时开发遇到什么困难?怎么解决的?
3.觉得自己做的最好的项目是哪个?
三面:
1.介绍自己
2.你觉得你适合做什么类型的业务,举个例子?
3.说下你开发过程中哪个项目你说最映象深刻的?
4.多线程怎么用,如果有100个任务这个时候多线程应该怎么设计?
5.MVVM框架怎么用?
6.内存管理怎么做?怎么看内存泄漏?
最后呢,面试挂了第三面,面试官问我内存怎么管理的时候我回答是说,现在iOS开发用的ARC的模式,可能较多的出现内存问题的是循环引用的问题,可以用instrument工具可以查到有哪些循环引用的问题,然后开发中也要特别注意一些场景。面试官说不能依赖工具,嗯。。当时我也不知道他想让我回答什么是他心里的答案。还有多线程的问题,我这边回答了经常用的是GCD,然后说了下大概得使用场景,后面他就问那如果是一百个任务同时下载的问题,我说那就不能用GCD了,GCD处理不了这样的,因为这个任务可能有中断的状态,那要用NSOperation,NSOperationQueue来处理,这里我估计没有把整个任务处理的流程框架讲出来,导致他好像不太满意,因为后面他说我没有讲出他想要的更深入的答案。
网友评论