很多iOS的现状
1、开发几年了,都在不停的做项目,自己一直都在忙于应付各种业务需求的讨论、开发、测试、发布、维护升级,再有新的需求的循环开发。都是重复的劳动。
2、工作几年跳槽都是奔着能继续做项目练手学习更多知识,然后工资上也能多涨一点。但是几年的历练下来,回头才发现,确实是积累了很多做项目的经验,但是在大公司严谨的技术面试下暴露了自己很多的不足。没有认真研究过底层知识,对OC的原理了解太少。
3、没有深入研究过第三方源码,对于技术学习的自我驱动力太差等等。总之开发技能大多是能满足当前的业务需求开发,再好一点可能就是能把业务功能的体验做的好一点,bug少一些。说白了,都是业务驱动的开发。业务实现需要用到这块的知识,去谷歌一下学习一下,然后拿过来用。实现功能之后发现没问题就结了。
4、最终造就了现在的结局:项目经验很足,解决问题的能力也nice,但是技术实力却不怎么样。
下面我把准备面试的经验分享给大家(为了尊重公司,我不能把原题告诉大家,但我会把方向告诉大家,因为方向里自然有“题库”),分为基本功、软实力、加分项三个方面。下面一个个来说。
基本功
所谓基本功,就是你需要练到有肌肉记忆的技能,当面试官问起的时候,你能够信手拈来。
简历基本功
简历的好坏决定第一印象。
很多人可能技术很牛逼,却没能获得面试机会,就是吃在简历的亏上。比如,错别字连天、排版混乱、语句冗余不通顺。下面是我总结出的要点:
排版
我走的是极简风格,直接使用 Markdown 进行书写,然后转换为 PDF 格式。
作为一个 GUI 开发者,你也可以把简历制作成一个静态页面,加上漂亮的动画效果,来展示你优秀的基本功,给面试官眼前一亮的赶脚。比如,我的一位朋友就是这样制作简历的,当时也顺利地通过了面试。
书写逻辑
请遵循“STAR”法则。即情境(situation)、任务(task)、行动(action)、结果(result)。
比如,“为解决项目中遗留的回调地狱和内存问题,我用了 RxSwift 重构了 XX 模块,在团队内普及了响应式编程思想,受到了团队成员的一致好评”。这通常也是面试官提问的逻辑。
技术内容
1:底层探索能力
很多人会讽刺:面试造航母,上班拧螺丝! 其实不然,面试的高要求对于一家优秀的iOS需求单位来说是必须的!
-
iOS开发实现的确有很多的方式,但是一个真正懂得原理的开发人员在日后的开发工作中是非常重要。我见过一些开发人员:遇到BUG都是直接面向百度,不知道为什么直接
command + c
/command + V
OK,解决了,打版走人,下次又遇到了还是要面向百度,其中浪费的时间和小伙伴之间的沟通成本可想而知! -
底层原理只是你在工作开发中偷懒而逃避选择使用而已(或者全然不太了解)
-
技术不断更新,底层原理是永恒根基
-
底层原理是非常重要的,只有真正掌握原理才能迎接未来无限可能。
下面是我推荐大家学习的内容:

OC 底层探索篇也是大家熟悉而又陌生的地方,平时处处用,就是不知道为什么!
2.性能优化以及架构能力
只要你面试要求 20-30K
必然要求性能优化能力!
-
怎么优化启动速度,应用包的瘦身!
-
界面优化(卡顿检测以及分析解决)
-
内存管理方面也是面试以及平时开发的重灾区!
-
架构并不属于性能优化,但是我要求每一个
3以上开发
都要有一定的架构思维!

3.数据结构算法

数据结构算法应该是每一个程序员必备的根据。我记得我的导师跟我说过:一个程序员需要两样东西:智商和勤奋
-
英文能力衬托你的勤奋度
-
数据结构算法反馈你的智商等级
数据结构与算法并不只是抽象的概念,掌握好的话可以写出更高效、运行得更快的代码,这对于如今盛行的网页和移动应用开发来说尤为重要。如果你最近一次使用算法是在大学课堂上或求职面试时,那你应该还没见识到它的真正威力!
这个主题的大多数资料都有一种通病——晦涩难懂。满纸的数学术语,我觉得一种有趣的学习方式也是非常重要的!
跨平台能力
跨平台的方案有很多:

如上表所示,RN
、Weex
采用的技术方案大体相同,它们都使用JavaScript
作为编程语言,然后通过中间层转换为原生的组件后再利用Native
渲染引擎执行渲染操作。而 Flutter
直接使用 skia
来渲染视图,而Flutter Widget
则使用现代响应式框架来构建,和平台没有直接的关系。
从性能方面来说,Flutter
的性能理论上是最好的,RN
和Weex
次之,并且都好于传统的 WebView方案
而从社群和社区的活跃来看,RN和Flutter无疑是最活跃的
总结:我个人针对现在的行情比较推荐大家学习:Flutter

-
同时现在很多人也开始着手学习了
-
如何衬托你的优势,我个人还要推荐在平时入门到项目的过程,不妨花点时间探索了一下背后的原理:渲染的流程,
Flutter
和原生的共存通讯优化 -
下面这张思维导图大家可以参考学习

软实力
沟通能力
我用四个词来概括: 自信、流畅、耐心、礼貌。
很多小伙伴可能编码技能不错,却不能在面试中表达出来。
在面试过程中,无论面试环境怎样,面试官态度如何,你都要保持积极的态度。请记住,你是在求职,就要创造一切对你有利的因素。
比如,你可以与面试官主动握手,增加好感。
如果面试官问你的问题,你刚好不会,也要尽可能列举这个问题相关的概念,然后推测出这个问题的答案。
比如,面试官问,二进制重排的原理是什么?
假设你刚好不知道这个知识点,你可以答 App 启动前 dyld 相关的概念或者说一下 Mach-O 二进制格式的原理,来推测可能的二进制的重排机制,即使推测错了也没有关系,因为在这个过程中至少展示了你积极解决问题的能力。
当然,如果连相关概念也想不出来,那就诚实地回答不知道或者向面试官请教一下吧。
逆商能力
作为开发人员,难免会在工作中与各种人撕B,能够扛过这些压力,也是一项重要的素质。
比如,面试官问,你的学历背景一般,学校排名靠后,和211、985的毕业生竞争有什么优势?
那你要怎么作答?
如果你是一个心理素质不好的面试者,很可能就会支支吾吾或者愤而离场了。 相反,你应该不卑不亢,冷静作答,因为这恰恰可能是某些面试官看好你的信号。 通过压力面试给你最后的考验,所以千万不要失之交臂。
作答举例:
虽然我的学历不是211、985,但是我仍然通过了前面的技术面试,说明了贵司对我的技术实力的认可; 学历证明了过往的学习能力,我是普通本科,却能与211、985的毕业生同台竞争,说明我的学习能力并不输给他们。
加分项
现在的iOS开发为什么会遇到瓶颈是因为:前面储备过少,坐吃山空! 技术不断更新的时代,我希望你沉下心来与时俱进,不断储备技能为自己加分
其实这里并没有非常具体的推荐学习方向,总的如下几点!
-
5G时代,小视屏/直播技术都是现在当红,并且掌握人群非常少的技术,OpenGL ES、Metal、FFmpeg等等!
-
而应用逆向安全,是大部分大厂都一直重视的,只是在小公司突显不出来,如果对于大厂有想法的,可以尝试学习!
当然除了跟iOS有关系的,比如被炒火的Python,谣传比iOS好找工作的前端等等都是可以学习的!
技术储备和亮点,这些都得根据个人兴趣或者公司需求来进行学习,当然越多的储备就会使你后面的路走的越容易!
后记
现在很多大公司招人已经明确限制需要 211、985 的学历,而对于我们大多人这种双非二本学历,连敲门砖都木有。但是,能否拿到 offer,除了真的很幸运,也和本身的努力分不开。
推荐👇:
-
020 持续更新,精品小圈子每日都有新内容,干货浓度极高。
-
结实人脉、讨论技术 你想要的这里都有!
-
抢先入群,跑赢同龄人!(入群无需任何费用)
-
(直接搜索群号:789143298,快速入群)
-
点击此处,与iOS开发大牛一起交流学习
申请即送:
-
BAT大厂面试题、独家面试工具包,
-
资料免费领取,包括 数据结构、底层进阶、图形视觉、音视频、架构设计、逆向安防、RxSwift、flutter,
image
网友评论