导语
其实成为初级android工程师,并不困难,但是目前初级android工程师已趋于饱和,这与前两年客户端培训火爆密不可分,所以呢,这可能会让一些正在走这条路或者想要走这条路的人感到困难。但是想要脱颖而出也不是很难的。
今年参加校招,也拿到bat之一等一线互联网公司offer. 想说说我的看法,虽然客户端现在的市场趋于饱和,但是我想说的是:想进入一线互联网公司并不是没有可能,可以分享一下我的自学之路。背景:本人科班,也不是很好学校,决定走客户端方向是因为自己的兴趣,学校内教的东西太浅显了,很多东西都是自学,就连基本课程也觉得老师并没有讲什么。(可能是我没听)
1.基础,基础最重要。
想进入一线互联网公司,这一项必不可少。
算法分析和数据结构:查找,排序,DP,图论,数论,栈,堆,二叉树等,一本《算法导论》,再来一本数据结构的书基本够了。 最重要的是刷题,让你更加理解。同时有些公司笔试也这样。
操作系统: 进程线程,中断机制等,推荐书《深入理解计算机系统》计算机网络:五层架构,各种协议等等,推荐书《计算机网络:自顶向下方法》
编译原理: 它可以让你更好的理解语言的结构,词法分析,语法分析等,对你的掌握语言有帮助,书籍一本教材就差不多了。数据库:可以去了解了解,各种范式,android开发对其要求也不高,但有必要了解,可以去买一本简单的教材看看。
2.java语言掌握
写android肯定要会java语言啊,所以java语言也需要良好掌握。
java虚拟机(jvm): 到底java语言是怎么运行起来的,jvm内部又有哪些部分,需要一本周志明的《深入理解java虚拟机》java基础:推荐书籍《Java编程思想》《java并发编程实战》
3.android基础
安卓工程师肯定android基础要熟练啦,
所以呢,新手入门推荐郭大神的《第一行代码》后面可以看看《android开发艺术探索》,《android编程权威指南》可随便翻翻,当字典用。
4.设计模式
对于java和android熟悉后,你还需要对代码整洁度等的提升
推荐书籍《大话设计模式》《head first:java》到工作中了可以看看《重构:改善既有代码的设计》《android源码设计模式与实战》
总结一下书籍:
基础: 《数据结构与算法分析》,《算法导论》可尝试《深入理解计算机操作系统》《计算机网络:自定向下方法》《编译原理》《数据库系统概论》
java基础: 《深入理解java虚拟机》《java编程思想》《java并发编程实战》
android基础: 《第一行代码》《android开发艺术探索》《android编程权威指南》
设计模式: 《大话设计模式》《head first:Java》《重构》《android源码设计与实战》

上面是需要看的书籍,也可以通过【点击 】获取电子书。也可以多去逛逛国内大神的博客,都在csdn上面,看看他们的一些思想。还可以去看视频学习,现在互联网时代,自学真的很方便的,推荐慕课网,还有网易云课堂,云课堂里面的老师都是通过筛选的,很多基础讲得也很生动。
5、如何高效学习
好好利用github,stackoverflow,这些网站,github有很多开源库,stackoverflow基本上有你遇到的90%的问题及解决方案。
学习方式: 看书,逛博客,看视频。自己写一个感兴趣的项目,把学到的知识都用到,这个就是能让你慢慢从书本上到实践的过程啦。
好吧,学了上面的知识,真的可以去互联网一线公司了吗?
我觉得未必,还差一点。还需要融会贯通,也就是说,把整个基础,java以及android都链接起来,成为你自己的知识体系。
需要你去钻研,Read The Fucking Source Code,程序员必须有这份钻研的精神在,所以我们可以去找找我们喜欢的开源库,先去使用它,熟悉之后,去看看内部是如何架构的,为什么这样架构,如果是你来架构,又会用什么方法,跟他有什么不同?你可以学到些什么。这一步我觉得才是达到一个真正程序员的关键。也就是为什么你比别人厉害之处。

6、从微观到宏观,再从宏观到微观
首先从开源库的一个小功能学习起来使用,慢慢的熟悉整个开源库的功能,然后呢,我整个开源库有哪些功能我都知道了。
开始试着画出开源库的类图,整体是怎么构造的,也就是从微观到宏观;后来知道整体构造,我再去有宏观到微观,细到每一行代码是怎么写的,为什么这么写。
如果是我,我又会怎么写。举个例子:比如你需要封装一个ImageLoader图片库,你可以想到什么?ImageLoader简单说就是加载图片,显示图片功能。安卓手机oom所以要图片压缩;因为单线程(UI线程)绘制,所以需要线程间通信,整体为一个生产者消费者模型,需要同步异步拉取;因为流量有限,所以需要缓存等等。
这些都是在脑海里的框图。然后再细看,同步异步又是怎么做到的,代码如何实现。异步的本质又是什么?不就是中断机制吗,这又涉及到计算机操作系统,又可以了解中断机制。为什么要中断呢?很大程度上是进程间通信,保护现场,进程间通信又有哪些方式呢?进程又是什么?了解之后,你又会发现android为什么会用binder机制等等。为什么上面我写得那么细呢?因为我觉得可能那才是我的亮点之处,也是各大互联网公司看重的吧。
好吧,这大概就是我的自学之路了,没有导师,我相信你们也可以的。但是这个肯定比外面培训班花的功夫更多吧,差不多一年时间。这也只是我经历今年校招的看法,希望对大家有帮助,至于社招的同学,如果要进入一线互联网公司的话,还需要更加努力。祝大家好运吧~
一些我觉得不错的学习资源
本着为社会做一些事情的想法,欢迎过来白嫖.点击【白嫖】查看!
视频

面试题整理

书籍整理

本文在开源项目:【GitHub 】中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
如果需要PDF版本可以在群文件夹里,自行领取!
-
或者在群文件夹中里,自行下载直达领取链接:【https://links.jianshu.com/go?to=https%3A%2F%2Fjq.qq.com%2F%3F_wv%3D1027%26k%3DBRZhpPkt】
网友评论