这篇面试总结很短,也没有面试题的答案,只是写给像我一样的非科班iOS开发者的一些话。
昨天进行了人生第一次视频面试,一共三个小时的技术面,还没见到人事,应该是挂了。
不过整个过程下来感触还是蛮多的,除了感受到面试官的牛X之外,也知道自己平时在学习中的不足。
先介绍一下面试中觉得比较吃力的问题:
- 如果让你实现属性的weak,如何实现的?
- 如果让你来实现属性的atomic,如何实现?
- KVO为什么要创建一个子类来实现?
- 类结构体的组成,isa指针指向了什么?(这里应该将元类和根元类也说一下)
- RunLoop有几种事件源?有几种模式?
- 方法列表的数据结构是什么?
- 分类是如何实现的?它为什么会覆盖掉原来的方法?
另外值得一提的就是问了我自己写的博客里的东西(JSONModel的解析,EOC的笔记)等等。。
这次面试让我深刻意识到了两点:
- 对于每个设计,不能只停留在“会用”而已,应该理解它的实现机制,而且几乎每个设计都是与数据结构息息相关的,理解了数据结构和指针会有助于理解这些设计。
- 了解设计的原理之后,还要知其所以然:为什么这么设计?最好还要知道这个设计存在什么缺陷,这个缺陷是哪个解决类似问题的设计所没有的?
第一点是“how”的问题,第二点是“why”的问题,然而我相信有不少人只停留在“what”和“using”上。
在面试的时候,我强烈感受到了面试官的功力之深:给我的感觉,对他而言,几乎所有的设计都可以用某种数据结构解释出来(有的时候也会结合指针),对知识点理解得非常透彻:即便是很简单知识点,也能说出很多深层次的东西来。而我自己只是刚开始学数据结构不久,在面对提到数据结构的问题几乎是没有思路的。
我想说的:
所以我觉得对于广大非科班的iOS开发来说,如果想在iOS开发上走远,就必须尽快补充数据结构,算法,指针等计算机基础知识,不然会对知识的理解形成很大的阻力。因为只有知道了这些基础知识,才能更深入得理解每一个技术点,而且以后如果学习其他的语言,也会更高效一些。
简单来说就一句话:先是程序员,然后才是iOS程序员。只有这样思考,路才能越走越宽,越走越快,越走越远。
现在iOS开发形势这么不好,市场要过滤掉那些计算机基础知识薄弱的人也是情有可原的。
所谓的现在的“不好”,只是相对于之前“不正常的好”的不好。现在这个行业变得“不好”,其实是因为这个行业正在变得好,应该值得我们高兴才是。
所以对于我们这群人(非科班的iOS开发者),应该提高忧患意识,未雨绸缪,更何况,雨已经来过了。
————————————————- 2018年7月17日更新 ————————————————-
注意注意!!!
笔者在近期开通了个人公众号,主要分享编程,读书笔记,思考类的文章。
- 编程类文章:包括笔者以前发布的精选技术文章,以及后续发布的技术文章(以原创为主),并且逐渐脱离 iOS 的内容,将侧重点会转移到提高编程能力的方向上。
- 读书笔记类文章:分享编程类,思考类,心理类,职场类书籍的读书笔记。
- 思考类文章:分享笔者平时在技术上,生活上的思考。
因为公众号每天发布的消息数有限制,所以到目前为止还没有将所有过去的精选文章都发布在公众号上,后续会逐步发布的。
而且因为各大博客平台的各种限制,后面还会在公众号上发布一些短小精干,以小见大的干货文章哦~
扫下方的公众号二维码并点击关注,期待与您的共同成长~