前言
编程这条路能走多远,能走多久,就看一点:你学不学的明白。想学明白,就得看你会不会学习,所以编程能干多久,你值多少钱,最终看你会不会学习。
我们从小就学习,但是一旦离开了学校这种压力环境,你还会学吗?你还学的进去吗?软件行业从业者之间差距就是因为学习效率的不同拉开的。
iOS开发你是不是曾经这样苦恼过,并且百思不得其解:
- 为啥大厂校招比社招的人多?
- 为啥大厂只要基础好的毕业生?
- 为啥硅谷面试只问数据结构和算法?
- 为啥大厂要给新人安排导师、引路人?
- 为啥大厂新人成长这儿快,别人半年顶我3年?
- 为啥我5年经验不如大厂里干1年的小鲜肉?
- ☹️☹️☹️
这些问题曾经一直困扰着我,冥冥中有个声音告诉我,你要是找到了答案,从此康庄大道、任你傲游、你也能达到那令你羡慕、憧憬的高度!历经多次思考,到今年我总算是差不多略顺了前前后后,今天发出来大家鉴赏一下。
今天分享一下,包括一些学习资料,但是更重要的是明明白白的告诉大家,你为什么学不会、怎么才能学的好、怎么学习才是效率最高的。听我之言,iOS 3年高级不成问题。
学习中常见问题
1. 进退无据,盲目追求最新技术
新技术月月有、日日出、年年新,出来一个你看一个,但是你真的着急学它吗?你着急在项目中立马使用吗?真的让你用你敢用、你有权利用吗?
你想过没有,我还有多少不会的、没懂的、模糊的、项目急需的、遗留的,难倒那些欠下的技术债你都装看不见吗?
你应该清楚哪些是最优先的、哪些是可以放放的,就像项目开发一样,列个燃尽图出来,估计你会吓死。当然能把这个图列出来也是你的能力,好多人还都列不出来呢。但你若是对这些视而不见,那就是逃避。踏实、务实才应该是我们的日常。
2. 胡乱学习,左学一点右学一点
软件开发是个工程项目,技术也具备和工程项目一样的特点,那就是技术之间高度融合、相互配合,整个项目是理论和实践高度结合,技术之间高度融合后的产物。
很多人平时怎么学习?就是看博客!今天A写了这个,我就看这个;明天B又写了那个,我又去看那个。先不说这短时间内来回切换学不同的技术点,你有时间能学明白吗?单就说这左一下、右一下的,你怎么形成知识体系?你的学识之间要是不能相互融会贯通,在软件这个行业那是致命的。尤其是这种左学一点右学一点的方式那是真的会要你命的,这样学下来1年,我敢说你最多就是学到几个单独的知识点罢了,于全局无补。
但恰恰太多的人都是这样,你们天天喊学习、我学习、白天学、晚上学的,但还是学不会,你就不想想是哪里出了问题吗?
3. 不写笔记,狗熊掰棒子全忘了
大家须知,没有过目不忘,即便你当时学的再通透,过2月不用,一样可以忘的一点不剩。你要是努力辛辛苦苦整天看、整天学、一年下来,年关的时候你回忆回忆你还记得多少?样的学习真的有意义吗?属浪费时间罢了!这都算是一种基于焦虑的精神疾病了,是对自己的一种折磨 (>﹏<)
别人的文章是别人的,不代表你看了就是你的了,只能说你知道了有这么一个知识点。你看为什么大神们都写博客,因为大神们辛苦提炼出来的精华它也会忘,所以的写博客出来,一个是分享,一个是在写文章过程中再提炼提炼,分享出来还能有名望。
4. 基础薄弱,原理、源码我就是学不会
底层原理毫无疑问还是iOS开发现在必备能力。
对象底层原理
指针与内存的一些相关面试
weak 弱引用
block 的原理
AutoreleasePool 原理
Runloop 的原理
Runtime相关、消息转发
....
性能优化以及架构能力相对比之前要求越来越多!
①性能优化方面:tableView的优化 -> 界面卡顿原理 -> app 性能分析 -> 项目优化
②架构方面: 设计模式、解耦手段、组件化....
多线程、网络能力也是占有一个非常大的比例 !
多线程的原理
线程池
GCD
锁相关原理
线程生命周期
网络设计
网络框架的一些理解
开发过程中一些需求结合多线程或者网络设计!
数据结构算法能力占比也比较大。通常一般大公司都会有一些笔试:虽然不在核心岗位对于数据结构算法要求不是非常严格,但是也会有一些常规的数据结构和算法的题
排序
数据结构设计
复杂度讨论
一些脑经急转弯的算法题
.....
跨平台能力要求多了!比如腾讯很明显就要求 Flutter 开发能力 (毕竟2019年 Flutter 太火了!)
学习的方法:
博客学习 : 我觉得这应该是我们最喜欢的方式!建议大家平时上班下班路上休闲时间就可以看看大牛的博客,文章!毕竟这些都是来自人家的总结探索分享,很具学习性!同时如果有条件的,不妨针对你学习的东西都能有所学习总结
讲座-分享会:这个也是比较好的!能够第一时间吸取的技术的新潮流!
看书:我个人也是比较喜欢看书的,虽然有点慢,但是每天书本的输入也成我现在汲取养分的一个重要渠道
公司、团队分享会:能够满足现在公司业务技术拓展,还能看到自己周边人的学习状态!
知识付费:现在信息爆炸,知识付费学习是目前最为潮流的方式,学习方式简单,成效快,知识比较系统!可能很多人都知道我本人比较喜欢得到,在得到平台经常吸取一些自己技术乃至职业方面的知识!
底层探索能力
很多人会讽刺:面试造航母,上班拧螺丝! 其实不然,面试的高要求对于一家优秀的iOS需求单位来说是必须的!
iOS开发实现的确有很多的方式,但是一个真正懂得原理的开发人员在日后的开发工作中是非常重要。我见过一些开发人员:遇到BUG都是直接面向百度,不知道为什么直接 command + c/command + V OK,解决了,打版走人,下次又遇到了还是要面向百度,其中浪费的时间和小伙伴之间的沟通成本可想而知!
底层原理只是你在工作开发中偷懒而逃避选择使用而已(或者全然不太了解)
技术不断更新,底层原理是永恒根基
底层原理是非常重要的,只有真正掌握原理才能迎接未来无限可能。
技术储备以及加分项
音视频方向:
现在的iOS开发为什么会遇到瓶颈是因为:前面储备过少,坐吃山空! 技术不断更新的时代,我希望你沉下心来与时俱进,不断储备技能为自己加分
这里我推荐学习:视觉方向! 无论直播还是小视频,图形图像处理成为必然的技能,未来5G时代的来临,这一块技术必将成为你与其他开发人员差距的赛点!
跨平台能力
从性能方面来说,Flutter 的性能理论上是最好的,RN和Weex次之,并且都好于传统的 WebView方案
而从社群和社区的活跃来看,RN和Flutter无疑是最活跃的
总结:我个人针对现在的行情比较推荐大家学习:Flutter
现在面试问什么?:
这其中很多还没整理或者还没看完,大家见谅,我长期更新,肯定会把学习资料这块都写全的,并且这些资料都是我亲身学习、品鉴过的,保证质量,保证小白都能看懂,我的资料就是给小白准备的,因为我自己就是小白 (ノへ ̄、),干了好几年了,还是小白,感觉对不起社会的栽培啊,没办法我是跨界过来的,可不是科班出身。
本文重在思想,资料不全不要开喷,也欢迎大家给我补全资料。
学会下面,不敢说从此平趟,但是保你同样的时候,可以看3倍的学习资料,吸收5倍的知识,提高10倍的知识体系建设。2年高级、3年资深、5年成神不再是梦。
iOS开发面试复习大全:
最全的《iOS开发面试题及解析》
从底层到高级架构进阶,包含了腾讯、百度、小米、阿里、乐视、美团、58、猎豹、360、新浪、搜狐等一线互联网公司面试被问到的题目,涵盖了中高级iOS技术点。
文章以下内容主要是分享面经和个人的学习建议,内容涉及到很多PDF文档(面试题库、学习笔记、实战文档、脑图等),由于文章有限,需要这些文档的,直接(点击我)即可获取 (或者关注简书主页扫描微信领取)