2018-01-27

2018-01-27  本文已影响47人  赤洱

转 iOS 面试指南
https://xiaozhuanlan.com/topic/4985160237

在过去的一个月里,我用了半个月时间准备,半个月时间面试,总共面了7家公司,拿到了6家offer,分别是阿里、滴滴、美团、京东金融、猫眼、链家。 趁年前大家还没开始跳槽,整理一些经验分享一下。

首先,自我介绍一下,我不是大神,背景不是很牛逼,工作经历也不长。北航15年毕业,非计算机专业,15年年初从零开始自学的编程,到今天刚刚三年。15年6月进入第一家公司,之前自学的是 Android,入职后的第二周,机缘巧合转岗做 iOS。算起来,iOS 从零基础到进入大公司,用了两年半的时间。跟张星宇等大神比起来,我的成长速度不值一提,介绍这些只是想跟大家说,现在大公司 iOS 空位很多,如果你有两年以上(没有水分的)开发经验,抓住机遇,好好准备,跳大公司问题不大。

复习书单

准备面试,最开始一定要系统地梳理一遍知识,有许多书都要重新看一遍。因为都是自己看过两遍三遍的书,这次我看的速度很快,却也时常看到一两处让自己恍然大悟的文字。当你编程经验提升之后,再看一遍之前的书,会学到许多新知识。这个阶段,戒急躁,要以梳理知识为目的,不要以面试为目的。

我列一下我的书单,你可以整理一下自己的复习书单,每个人看过的书不同,书单自然也不一样,重看自己的书单就好,时间允许才能去看新书。

还有一些文章很不错,我也列一下

准备简历

简历最好两页,最多不超过三页。项目最多写三个,可以不用描述项目是做什么业务的,但一定要列出来技术点,不同项目的技术点不要重复。写简历的学问很多,我也不是非常清楚,我的简历仅供参考。

准备面试

因为我在原公司做过两年的面试官,比较清楚面试官拿到我的简历后会问什么问题,我准备面试的方式很简单,列出来所有可能会问到的问题,都预先写好自己满意的答案,自己预演几次,熟悉了所有问题和答案,然后放空自我,从容地去面试。

这个方法很有效,拿着简历自己面试自己,很容易发现问题。当然,如果感觉自己的水平有限,你也可以让朋友拿着简历向你提问题。当你列出了所有可能遇到的问题,都准备好了自己满意的答案,你就找到了自信。每一轮面试结束,你都可以根据这次面试,完善你的答案。

另外,准备一个简短的自我介绍,还有一些问面试官的问题。每轮面试结束,你都有机会问面试官一两个问题,如果问题问得好,面试也是加分的。

还有,要练一下手写算法题,这样面试时不会手生。

各家公司的面试流程和风格

即使是同一家公司,不同部门面试的风格或流程也可能不一样,下边这些仅供参考。

1.阿里

阿里主要结合简历问项目经历,穿插着问一些技术点,特别问了一下网络安全、本地存储安全和逆向,答不上也ok,答上了加分。另外也会问大前端框架,比如 RN 和 Weex,以及你对大前端的看法,你可以随便说,但是心里要清楚,阿里是走大前端路线的。

因为我在北京,而面的是杭州的部门,所以流程可能不太相同:

阿里有一点很感动我,我通过阿里二面时,已经拿到了滴滴到 Offer,而且 Offer 时间非常紧,还有一天时间就作废了,跟阿里表明情况后,阿里竟然临时把原本安排在下周一的三面以及后续的 hr 面合在一起,安排在当天下午,那时面试官还在美国出差,算时差应该是占用了睡眠时间。面完之后,hr 当天和我确定 Offer。阿里如此大的公司,能有如此的效率和动态性,以及对人才(给自己贴个金🤪)的重视,非常佩服。

补充另外一篇:
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完整的消息转发机制+代码实现【暴击】

上一篇 下一篇

猜你喜欢

热点阅读