我想加入阿里,我该怎么做?(含详细学习思路)(3)

如果这几项能力达标或突出,我觉得就可以负责多个模块的开发工作了,也意味着进阿里,技术问题不大。

那么我们能怎么去提升自己达到目标呢?限于篇幅,我着重讲怎么提升专业能力。

专业能力的提升

计算机专业要学习的内容非常多,专业能力包含很多,光Android还不够,还有比如数据结构、算法、Linux、网络编程、计算机原理等等等等等等,由于我做的是 Android,那么这里就偏向 Android 来讲解了。

深入理解原理,不要只会使用

由于开源的精神以及互联网的伟大,我们能够不费吹灰之力使用世界上顶尖的三方库,比如很火的 RxJava、EventBus、Retrofit、OkHttp 、Glide 等等等等。只要添加一行依赖,就能起飞,有一种自己掌握了全世界最牛逼的技术的错觉

我见过不少人,也看到不少 人的Github 的库里写着 MVP+RxJava+Glide+Dagger 等等类似的内容,他们可能一线开源库用得很六,但是一旦问及原理,可能就一脸茫然,说不太上来。

这其实就是停留在使用阶段的表现

你要知道,一个库再牛逼,这个牛逼是属于作者的,而不是你。

站在面试官的角度讲,这么多人都会用,又凭什么选你呢?对吧?!

这时候如果你懂一些原理,那你就能比别人更优秀一些了。

那么,怎么去深入理解原理呢?阅读源码

(退后,我要装 X 了!)

其实所谓的原理,全都写在源码里面,毫无保留

有的人一听看源码就会慌,不知所措,代码那么多,怎么看啊

其实阅读源码也是有很多诀窍的,这里分享几点心得:

  1. 首先要会用。你要知道这个库是干什么的,掌握它基本的使用方法;

  2. 有目的性。针对某个功能有目的的去挖掘,这样就不会在茫茫源码中迷失方向;

  3. 不需要看完所有细节。有的人阅读源码爱钻牛角尖,非要把每一个小细节都搞清楚,以至于看了一天可能都没看明白主干是什么。

是不是有点道理?比如 EventBus ,你发送个 Event 怎么就传递到了订阅的地方?带着这么个小问题有目的的去看,会轻松很多。

阅读源码确实不简单,但是不要着急,从简单的源码开始,慢慢提升,学会抽丝剥茧,层层递进,逐渐培养阅读源码的习惯与能力。

相信我,学会看源码,对专业能力的提升有巨大的帮助!

保持学习,多看官方的一手资料

在平时保证完成工作的情况下依然要保持学习,做不到每天学习,也要做到每周学习,扩大知识面,加深深度。

技术的发展非常快,要跟上得不断持续的学习,这很重要。

那么为什么要多看官方的一手资料?

说实在的,这个时代,已经不缺少学习资料了。但是呢,资料也是有好有坏的,众所周知,你用 google 搜跟 某度 搜到的资料会有很大的差别,所以第一步,把 google 作为默认搜索引擎

官方资料 跟别人的二手资料,差别也是很大的。

这里不是说所有别人写的资料都是差的都是不值得看的,而是说其实别人可能也是看了官方的资料,经过自己的理解加工输出一个资料,而这个加工过程可能删减了部分内容,也可能扭曲/误解了官方的意思,以至于你看到的时候可能变了味。

所要尽量去看一手资料,它能让你学到最基本、最全面、也是最有用的知识,更何况,现在 Android 官方的文档 视频 越做越好,甚至都做了中文翻译,还有什么借口不看?

在这个过程中还是觉得视频资料可能还是比书籍资料更方便学习些,一路学习下来我这里已经累积了许多关于高阶Android的视频学习资料,其中包括高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,照样,需要这些视频学习资料的加群免费领取Android IOC架构设计
image.png

学会积累,做到有输入有输出

前面我既让你看官方的资料,又让你去看源码,那么光看就够了吗?

显然不是,纸上得来终觉浅。

学习,要做到有输入有输出,这样才能更好地把知识掌握在脑子里

输入就是那些资料,源码等各种知识,那么输出是什么?对于开发者来说输出可以是笔记,可以是博客,也可以是代码。

作为过来人,劝你一句,如果时间允许的话,尝试维护个博客吧

当你开始尝试针对某个知识点写文章的时候,你可能会有如下经历:

  1. 我明明已经懂了,为什么解释不清楚?(其实还没真的懂)

  2. 这个知识点好像涉及到了其他东西,我去看看,然后发现不懂的还有很多;

  3. 写得多了,本来星星点点散布在大脑各个角落的地方的零碎的知识点,在某个时刻突然就被串了起来,形成一张了知识图谱。

这里是我在学习Android的过程中制作的一份的学习思维导图,供大家参考:(内容较多,需要更详细的学习思维导图加群免费领取 Android IOC架构设计

Android高级技术大纲

这是我之前写博客的真实经历,自己觉得懂了,跟 把知识说清楚让别人懂,感觉是两个层次的事。在写作的过程中会强迫你自己把知识点组合起来,用通俗的语言表达你的想法,其实要求你对知识有更透彻的理解,这也能促使你变得更专业。

另外,写博客其实也是对外展示自己的机会,写得好,会有阿里员工或猎头找上门的,帮你推荐工作的。

好的博客或 Github 也是一块可以敲开阿里大门的砖

要加入阿里,你可能还需要学会如何写好简历,找个靠谱的阿里员工帮你内推,另外可能还需要一些运气,但这都是后话了,最最重要的前提就是自身的技术实力要过硬

2019年伊始,全新的开始,相信很多人都给自己定了个小目标,希望我的这些经验能够帮到你实现其中的某一个,祝愿所有人能有个更加精彩美好的2019。

新的一年,要加油鸭!!!冲鸭!!!

题外话

不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊

这里我为大家准备了一些我工作以来以及参与过的大大小小的面试收集总结出来的一套进阶学习的视频及面试专题资料包,主要还是希望大家在如今大环境不好的情况下面试能够顺利一点,希望可以帮助到大家~

欢迎评论区讨论。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

欢迎评论区讨论。
《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!

使用android studio 运行,下面是一个简单的文档,这个代码是一个demo 一、Activity的使用 1、SNActivity 框架最基本的activity,可调用$(SNManager)进行操作activity,具体用法请参考文档或代码 2、SNNavigationSlidingActivity 包SNActivity的功能,继承于com.jeremyfeinstein.slidingmenu.lib.app.SlidingActivity 支持导航条和左滑视图的Activity 加载导航条: loadNavBar(int height,int background_color_id) loadNavBarResId(int height_id,int background_id) 加载左侧视图: /** * load left view * @param left_id left layout id * @param offset_value offset value * @param shadow_width_value shadow width value * @param shadow_drawable_id shadow drawable style * @param fade fade value */ loadLeft(int left_id, int offset_value, int shadow_width_value, int shadow_drawable_id, float fade) /** * load left view * @param left_id left layout id * @param offset_id offset id * @param shadow_width_id shadow width id * @param shadow_drawable_id shadow drawable id * @param fade fade value */ loadLeftResId(int left_id, int offset_id, int shadow_width_id, int shadow_drawable_id, float fade) 二、SNElement的使用 View的伪装对象,支持所有View的功能,详细功能可参考文档或代码 手动伪装:$.create $.id $.findView 注入伪装:$.setContent(view class or layout id,inject class); 获取原型:elem.toView(); 三、注入 1、视图注入 A、创建注入类,属性名称必须和layout中的id对应,如果不对应请加入标签@SNInjectView class DemoInject{ @SNInjectView(id=R.id.tvTest) public SNElement test; } B、实例化注入对象 DemoInject di=new DemoInject(); C、调用$.inject或者$.setContent注入 $.inject(di); D、注入成功后即可调用对象 String text=di.test.text(); 2、依赖注入 A、需要绑定注入对象,建议写到Application中的onCreate SNBindInjectManager.instance().bind(ITest.class, Test.class); B、与视图注入不同的是属性必须添加标签@SNIOC,注入的对象(Test)必须包只有一个SNManager参数的构造函数,且必须实现注入者 public class Test implements ITest{ SNManager $; public Test(SNManager _$){ this.$=_$; }; } class DemoInject{ @SNIOC public ITest test; } C、调用$.inject或者$.setContent注入 同视图注入 D、注入成功后即可调用对象 di.test.xxx(); 四、fragment的使用 1、SNFragment 2、SNLazyFragment 五、控件的使用 1、SNFragmentScrollable 2、SNPercentLinearLayout、SNPercentRelativeLayout 3、SNScrollable 4、SNSlipNavigation 5、XList 6、slidingtab
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值