个人背景:坐标成都,14年入行iOS开发,非科班,18年9月在中国软件成都研发中心担任iOS组长。现在卫士通担任某产品线iOS组长。

故事的开始

2018年9月,我的小儿子出生了,当时正准备请陪产假在家陪老婆坐月子。结果得知我们「掌游宝iOS离职天团」里面一位90后小伙经过两个月的准备,跳入一家18k的公司。忽然觉得自己也可以跳跳看了,于是有了下面的故事。

第一次面试:货车帮

2018年9月,我在投递的简历已经有了回复,我将面试安排在了10月国庆节之后,这样一共就有20多天,可以好好准备准备面试。

这次方案是从网上搜索面试题。在github上看见一篇招聘一个靠谱iOS的面试题,在看这篇面试题之前,我对于类的底层结构,分类的结构,消息传递机制,KVO/KVC底层机制,自动释放池的底层结构并没有什么了解。

因为要从头理解这些概念时间不可控,所有我决定把答案背下来,这样还能有时间能准备一下项目和再网络方面的面试题。

面试失败

这次面试经历了2个小时,问的问题基本都是招聘一个靠谱iOS上的题目。结果因为答案是背的,但是毕竟面试长达两个小时,有的问题渐渐深入,我就答不上来了,所以这次面试就没有下文了。

面试总结

因为其实都是围绕那篇面试题在提问,所以我分析仅仅是背答案是不行的,如果我能将招聘一个靠谱iOS上的题目涉及的知识点真正搞懂,是可以通过面试的。

所以我开始搜索资料。最后我发现iOS底层原理班上面讲的知识跟这篇面试题很匹配,于是花了大概2个月的时间,将视频前前后后看了两边,并且做了手写笔记。

另外我也看了资深大牛带你深度剖析ios面试,讲的相对浅一点,但是当作知识巩固还是有一定作用。

第二次面试:Camera360

2018年12在我深入学习完iOS底层知识后,开始了我的第二次面试。因为对iOS的底层做了准备,所以一面的所有问题都能流畅的答出来。

面试失败

一面结束时,我感叹自己的悟性和执行力。想想自己仅仅一次面试就抓住了面试的真谛,内心窃喜。

二面是iOS端负责人,开口就问我对性能优化有什么经验?这个问题我完全没有准备,一下子不知道从哪些方面来回答这个问题。磕磕绊绊的就答了一些代码性能方面的优化。之后两天就得到了回复:

面试总结

这次面试之后,我才对面试的内容有了更深刻的认识,看来除了底层知识,性能优化,内存,崩溃方面的知识也必须准备

于是我又购买了《Effective Objective 2.0》,《高性能iOS应用开发》等关于性能优化的书,花了大概两个月时间,看完之后我信心满满,觉得这次没有面试能难住我了!

在《极客时间》上,我也看见了一个iOS开发高手课也非常有作用。我认认真真的学习完了每节课,并且认真输出了笔记。

我的《iOS开发高手课》学习笔记

第三次面试:腾讯

2019年2月,我通过Boss直聘内推参加了腾讯面试,这对于我来说,可是了不得的经历。对于一个非科班的程序员,终于能和BAT正面硬刚了。

面试失败

一面主要是针对项目内容进行扩展,其他问题都是网上能找到答案的面试题,包括常用的锁,三方库源代码等。在一面即将结束的前五分钟,我自以为已经hold住这次面试了,想想BAT的面试不过如此嘛。

在一面结束前面试官说:我们的经理要求这次的面试岗位,要多问一下算法,请你跟我讲一下树的遍历有哪几种

WTF,算法我真的没有重视过,以前觉得工作用不上,这种错误的意识一开始就是根深蒂固了。不出所料,我收到了回复:

面试总结

如何想进的是非BAT的大公司,准备底层知识(包括三方库源码)和性能优化知识已经足够了,但是如果你想进入一线大厂,算法这道门槛就必须跨过去!

第四次面试:卫士通

第三次面试失败之后,我总结自己这半年知识提升很大,但是算法方面短期提升不上来,所以去一家本地大厂,潜心学习。

2019年5月,我进入了卫士通,一家做安全的国企,面试比较顺利,国企的固然有缺点,但是却是适合自己的。

其实卫士通的面试难度与前两次面试难度一致,也就说我的判断是正确的,通过这段时间的学习,我的能力可以匹配成都本地的大厂,但是想进一线公司,就还需要学算法。

后话

算法的学习

进入这家公司之后,前几个月赶了新项目的进度,之后就开始了算法的学习。好巧不巧,小码哥的算法课程上线了!想想我的每次跳槽,都是把小码哥的视频拿出来看。

这次算法学习,我先看了《极客时间》的算法课程,但是越往后看,越发现课程讲的不够深入,后来我又找到了小码哥的恋上数据结构与算法,才觉得自己真正上船了。

这次算法的学习笔记,我已经整理在了掘金里面:我的小码哥《恋上数据结构与算法》学习笔记

当然,还在持续更新...

以后的故事

大厂是目标,必须进大厂,这个不用说!

如果要进BAT等大厂,算法是一定要扎实的。如果算法这一关过不了,就只能在非一线的公司混!

妈的,感觉这个道理很简单啊,为什么花了2年的时间才明白呢?!

当然还有一些别的经验,包括如何选择和阅读三方库代码?应该看哪些书籍?应该如何准备项目?网络方面应该看什么?如何打造个人影响力?这些都是这两年慢慢总结的,以后再分享吧。

我的github地址

我的博客地址