总结
算法知识点繁多,企业考察的题目千变万化,面对越来越近的“金九银十”,我给大家准备好了一套比较完善的学习方法,希望能帮助大家在有限的时间里尽可能系统快速的恶补算法,通过高效的学习来提高大家面试中算法模块的通过率。
这一套学习资料既有文字档也有视频,里面不仅仅有关键知识点的整理,还有案例的算法相关部分的讲解,可以帮助大家更好更全面的进行学习,二者搭配起来学习效果会更好。
部分资料展示:
有了这套学习资料,坚持刷题一周,你就会发现自己的算法知识体系有明显的完善,离大厂Offer的距离更加近。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
HttpClient
、Volley
、OkHttp
、Retrofit
;ImageLoader
、Picasso
、Fresco
、Glide
;OrmLite
、LitePal
、GreenDao
、Realm
、Room
;
除了熟悉的网络、图片和数据库“三大件”外,还有像 xUtils
、EventBus
、Dagger
、RxJava
、MultiType
等等,它们对于老 Android 来说,可以说是贯穿了整个“青春期”的回忆。
从一开始的 MVC
到 MVP
再到 MVVM
乃至官方提供的 AAC
架构,Android 的技术栈一直在“刷新”,而随着 Kotlin 的扶正还有 Android Jetpack 的提出,新一代的完善开发体系也给老开发们带来了一些额外的“烦躁”。
“AS 2.3 又不是不能用?!”
”项目还要继续兼容 4.4 版本?!!”
“RxJava 都还没用上就开始吹协程?!!!”
因为旧项目的维护或者工作环境的影响,很多时候其实没有新框架落地的条件,甚至于 Flutter 的出现都会被贩卖一波焦虑。
那就让我们聊聊这种焦虑或者不安。放心,后面没有“防不胜防”!
“没用过”的焦虑
对于老 Android 来说,有一种“焦虑”情绪来自于“我还没用过”,因为新生的框架和技术在不断迭代,而“没有用过就跟不上时代”的情绪,会在每次技术更新迭代时被反复放大,这大概就是部分 Android 焦虑的来源。
例如现在的
Android Jetpack
、协程、Jetpack Compose
、Flutter
等,每次看到这些字眼时就会莫名地出现“焦虑”,犹如当年一开始听到Dagger
、RxJava
、React Native
一样。
那要怎么样缓(tao)解(bi)这种焦虑呢?这就要先理解下这些“新技术”名词不断出现地原因,我把这种“我还没用过”的焦虑理解为“扳手升级副作用”。
这里举一个有趣的例子,如下图所示是不同阶段扳手,可以看到:
- 从 1 到 2 用户拧螺母需要准备的扳手数量减少了;
- 从 2 到 3 扳手变得更加帅气有力,并且附带的“攻击力”也有所上升;
那问题来了:
一、既然有 2 这样便捷的扳手,那 1 这种扳手还有必要存在吗?
- 答案是有的,因为 1 中的扳手性价比更高,在特点的场景下会更轻便。
二、那扳手 2 既然都满足大部分场景了,扳手 3 有必要存在吗?
- 答案也是有的,因为 3 中的扳手更加帅气,同时从健壮的角度更可靠。
这里扯了这两个问题其实是想表达:正在情况下随着技术的发展,新生框架和技术是为了让开发变成更便捷,同时降低开发门槛方便后来者入坑。
所以作为老 Android 开发,在经历了开发项目需要准备“一堆扳手”的手动挡时代,如今在这个只要一个“扳手”就能干活的半自动挡时代,怎么可能会拧不动螺母?
过去的日子我们拧了无数的螺母,现在只不过要需要换个“扳手”,而这个扳手是可能是 3 ,第一次拿起来也许会“太重”,扭动的开关也不熟练,但是曾经的螺母需要“拧多深”和“卡什么体位”,这些对我们来说其实和之前没太大区别。
所以只要还是“拧螺母”,我们不应该因为担心“扳手”的品类太多而焦虑,或者还应该“庆幸”这个领域仍在健康发展。
技术的健康演进只会让它越来越容易被理解和使用,让开发的门槛变得越来越低:
- 从
RxJava1
到RxJava2
的变化; - 从
Dagger
到现在官方的Koin
; - 从 Java 的
AsyncTask
到 Kotlin 的协程; - 从
ButterKnife
到KTX
;
所以用新的"扳手"肯定比用旧的一堆"扳手"方便,实际上开发者需要维护的代码和逻辑会越来越少,这是一个社区越来越成熟的表现,进而开发的门槛也就越来越低了。
而对于新技术的无法落地到项目的焦虑,我们可以换个思路:没有条件落地,但是可以去尝试理解这个新框架或技术的本质是什么,从而缓解对未知的恐惧。
比如 Dagger
说白了就是基于注解和模板生成代码,所以如果看不懂各种"生涩"的注解,那可以直接看生成的代码,理解 Dagger
是如何用“臃肿”的代码来为我们解耦。
另外在接下来的 Android Studio 4.1 下,已经开始支持了 Dagger
类的直接跳转,我们可以轻松地在 Dagger 的关联代码间进行导航。
所以换一个“扳手”的学习成本并不高,只要你扭螺母的功底还在。“现在还没用过”也不用慌,也许等等技术还能更成熟更方便学习,何况再等等还能白嫖大佬的文章不是么?
当然这里还有一个有趣的误解:
扳手 2 升级后比扳手 1 牛逼了,所以作为使用扳手 2 的我比使用扳手 1 的牛逼?
然而真相是:牛逼的是扳手的制造者,而作为使用者,直接使用 OkHttp 的可能还不如使用 HttpClient 的开发对网络请求的理解"深刻"。
框架降低了开发的门槛,提高了代码的可维护性,但是作为使用者的我们在享受便捷的同时,要变牛逼的根本不在于用,而在于需要理解框架为什么好用!
比如 OkHttp
好用在于它优秀的拦截器设计,而 Retrofit
通过注解生成模板代码提高了开发效率,但是 Retrofit
本身网络请求部分还是需要 OkHttp
等去支持。
把框架优秀的部分吃下去,那么你才会变牛逼,
OkHttp
的设计就在 Flutter 中就被Dio
框架完美复现,而Dio
框架也成为了 Flutter 下热门的网络请求封装之一。
竞争力的焦虑
还有一种就是竞争力的焦虑,我们时不时会把自己和年轻一代的开发们做比较,明显年轻人更便宜更耐C也更有体力,这让即将成为后浪的我们产生了职业生涯的焦虑。
因为开发体系的成熟带来了的门槛的降低,开发 Android 应用的要求确实没以前高,但是“能用”和“好用”那是两个故事!
如果你进阶的路上缺乏方向,可以加入我们的圈子和安卓开发者们一起学习交流!
-
Android进阶学习全套手册
-
Android对标阿里P7学习视频
-
BATJ大厂Android高频面试题
最后,借用我最喜欢的乔布斯语录,作为本文的结尾:
人这一辈子没法做太多的事情,所以每一件都要做得精彩绝伦。
你的时间有限,所以不要为别人而活。不要被教条所限,不要活在别人的观念里。不要让别人的意见左右自己内心的声音。
最重要的是,勇敢的去追随自己的心灵和直觉,只有自己的心灵和直觉才知道你自己的真实想法,其他一切都是次要。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
需要这份系统化学习资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618156601)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!