2021 年如何学习 Android,一位 5 年中大厂老哥跟你聊聊
本文首发我的微信公众号:程序员徐公
大家好,我是程序员徐公,加上实习,有五年中大厂经验。今天,我们一起来聊一聊如何自学 Android。
光阴似箭,日月如梭,时间真的过得飞快。 加上实习,从事 Android 开发,差不多有 5 年了,在这里,我分享一下我的经验,在 Android 的学习路上,我是站在巨人的肩膀上成长起来的。
大概分为三个部分
一、Android 职业规划
二、Android 学习路线
三、如何进入大厂
Android 成长生涯

1-3 年
前 3 年,我觉得是我们成长最快的时候。
尤其是刚开始工作的一年,刚开始接触项目,我们会接触到很多新知识,比较网络框架的封装,Android 架构 MVVN,MVC,MVP 等。
这段时期是我们进步最快的时候,因为很多东西我们都不会,我们会逼着自己去学习。
第二到第三年,也是我们成长的关键时期。这时候,在项目中,我们基本会自己独立负责需求。这时候的我们,大多数基本功能都可以自己独立实现。需要注意的是代码风格和代码思维的培养。
代码风格,指的是编码习惯。比如方法命名,方法的合理拆分,适当添加注解,注释。听起来可能会很虚,但是千万别小看这些细节。反正我在组里见过一些工作五六年的,代码一坨一坨的,像 si 一样。
代码思维,有点类似于人的视野和思考方式吧。很多时候,实现某个效果,有很多种方案。我们为了应付需求,可能会随便选择一种,没有去了解其他方案。而这恰恰错过了我们成长的最佳时期。
记住,永远别给自己设限,或许在编程的路上会遇到很多问题,但是总会有解决方法的,而这取决你的态度。
3-5 年
这个时期,不出意外,我们基本都是高级工程师了。这时候大多数人会遇到瓶颈,不知道学些什么好。好像什么都会,但是不够深入。我也遇到这样的情况,现在正在深挖。
这方面我暂时也给不了太多意见,只能说,选择一个方向,静下心来,去学习,相信能收获到我们想要的。
学习方向有很多,比如 Android 性能优化(启动,卡顿, Crash 治理), JNI C++,gradle 打包,编译速度,音视频等等,这些都是大的方向。
最近写的一些文章,自我感觉还行,有兴趣的可以看看。
Android 启动优化(二) - 拓扑排序的原理以及解题思路
Android 启动优化(三)- AnchorTask 开源了
Android 启动优化(四)- AnchorTask 是怎么实现的
Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了
5 年之后
大多数技术人,一般会有以下方向。
- 第一:成为技术大神,比如架构师,及技术专家等。
- 第二:技术管理,比如技术总监等。
- 第三:技术转型,如转项目管理,产品等,你牛逼的话,说不定下一个张小龙就是你(哥们,想多了,那有这么容易)。
- 第四:自主创业,做自媒体等
我目前来说,可能会选择第一条路吧,成为一名技术专家。

在技术的路上,或许会很累,很难,可那又怎样呢
35 岁中年职业危机,很多职业都有,不仅仅局限于程序员。
从本质上面说,自身竞争力下降占很大原因。毕竟,优秀的人才从来不缺少机会。
既然选择了,便只顾风雨兼程。
为了未来有更多的选择,从现在开始,朝着自己的目标努力奋斗吧,书写属于自己的人生。
Android 学习路线
下面,说一下 Android 的学习路线,不会很具体,主要是从大的方面来说,感兴趣的可以看一下。

搭建基本的开发环境,敲下 Hello world
首先你配置好电脑开发环境。首先需要配置 Java,AndroidStudio 的开发环境。
现在的 IDE 对比几年前的,真的是方便多了,可以自动帮我们配置好环境变量。还记得当年刚开始配环境的时候,折腾了两三天。在配置变量的时候,有时候英文的逗号输成中文的,在 cmd 窗口输入 Java,一直提醒没有这个命令,一把鼻涕一行泪。
依稀还记得,当配置完环境之后,敲下第一段程序 Hello world 时的那份喜悦。
掌握基本的语法和常用的数据结构
第一:你要先掌握基本的语法,可以从一些书籍开始学起。跟着书本慢慢敲,从第一个程序 Hello World 慢慢敲起,万丈高楼平地起。
由于 Android 是用 java 或者 kotlin 语言开发的,建议优先掌握 java 语言。这里推荐两本书籍。
- java 编程思想,一本很经典的 java 书籍
- java 剑指 offer,面试神器。校招的时候,有很多面试题目,里面都有涉及到。
第二:掌握基本的语法之后,常用的数据结构,数组,链表,队列,栈。这些基本的概念和语法要知道。还有线程,文件 IO 操作,网络操作。
学完这些之后,Java 的基本知识你大概掌握了,这时候建议你动手写一些小项目或者 Demo,比如坦克大战,计算器等,这些网上都有代码。想跟着视频一起学的话,推荐马士兵的视频,可以在我的微信公众号 程序员徐公 回复”Java“,会将教程发给你
Android 学习入门
掌握这些之后,你可以去看一些 Android 入门的书籍或者一些视频。
书籍我推荐郭霖的第一行代码,目前出了第三版了,写得真不错。
视频的话,我推荐你可以看黑马的 Android 视频,里面会从一些基本语法讲起,接着是项目实战,会手把手教你实现简单的新闻客户端,360 手机卫士等等。
想获取黑马视频资料的话,可以去我的微信公众号程序员徐公回复"黑马"两字,会将教程发给你。

Android 进阶
学习完基本的知识之后,可以去看看任玉刚的 Android 开发艺术探索,虽然是几年前出版的,但真的是精华。
接着,可以关注一些架构,性能优化方面的。
- MVC, MVP, MVVN
- 内存泄露怎么检测,常见的内存泄露有哪些
- 怎么检测 ANR,有哪些手段呢,优缺点是什么
- 怎么捕获 Crash,Java Crash 和 native crash 有哪些不同呢
- Android 检测启动时间,启动优化怎么做,常见的 Android 启动优化手段有哪些
- Android gradle,是怎样打包的,怎样提高编译速度
这里推荐几篇不错的文章。
Android 启动优化(二) - 拓扑排序的原理以及解题思路
Android 启动优化(三)- AnchorTask 开源了
Android 启动优化(四)- AnchorTask 是怎么实现的
Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了
关注前沿技术
关注前沿技术,可以去一些论坛,公众号上面逛逛。
论坛的话,推荐掘金,CSDN
Android 技术公众号的话,推荐鸿洋,郭霖的公众号,当然还有我的公众号程序员徐公。文章的质量算是比较高的。
最后,有空的时候多去 github 或者 google 官网 看看,有什么新技术,一般第一时间会更新。
如何进入大厂
面试是一个双向选择的过程,我们要保持足够的自信。
在我看来,要进入大厂,有 4 点最重要。
- 编程能力,包括常用技术以及常用技术的原理,毕竟招人,是来干活的,不是来当爹的。
- 技术深度,在大厂,分工越来越越明确,职责越来越细。很多时候,需要的是某一个技术领域的人才,而不是什么都懂一点的全才。
- 算法。
- 软技能,沟通能力等
如何学习算法
现如今,如果你想进入大厂,腾讯,阿里,头条,拼多多等,不管是社招还是校招,肯定都会面试到算法的。
相信很多人有这样的想法,面试的时候早火箭,工作的时候拧螺丝。确实,这种情况非常常见,我也认同。但没办法,谁叫我们想进入大厂呢。
不过,这种情况也可以理解。怎么在几轮面试中确定面试者的水平呢? 肯定是考察算法,基础这些,原理这些。
虽然这些代表不了全部,但起码能在一定程度上代表了面试者的水平能力。要知道,编程语言其实都是想通的,编程思维和算法能力才是核心。
掌握了原理,编程思维,切换到另外一门语言其实是很快的。这也就是面试官喜欢考察算法和原理的原因。
至于要怎么学习算法,我简单归纳一下
第一:要了解基本的数据结果,数组,链表,Map,Set,二叉树等,了解他们的优缺点,时间复杂度,空间复杂度等
第二:要掌握一些常见的算法,递归,迭代,八大排序,二分查找,贪心算法等
第三:掌握一种算法,不仅要知道 what,还要知道 why(分析各种算法的优缺点),比如 topK问题,有常见的几种解决方案,排序,快排思想,海量数据堆排序
第四:刚开始学的时候,可能会比较吃力,可以先刷题,慢慢找感觉,从易到难。
- 比如,第一天,你刷这道算法题的时候看不懂,先不用着急,很多人都是这样过来的,先搜一下答案,看一下别人是怎么解决的。
- 看懂了之后,自己用代码写一遍,跑一遍。这很重要,很多时候,你以为你自己懂了,但当你在写的时候是写不出来的,在你动手写代码时,会不断加深你的印象
- 第二天,自己再写一遍,加深印象
第五:学好算法不是一日之功,需要长期的积累。建议的做法是每天做一两道题,题目不在多,贵在于理解。坚持一两个月,你会发现你的感觉逐渐好起来了。
找到我
我是站在巨人的肩膀上成长起来的,同样,我也希望成为你们的巨人。觉得不错的话可以关注一下我的微信公众号程序员徐公,在此感谢各位大佬们。主要分享
- 公众号程序员徐公回复黑马,获取 Android 学习视频
- 公众号程序员徐公回复徐公666,获取简历模板,教你如何优化简历,走进大厂
- 公众号程序员徐公回复面试,可以获得面试常见算法,剑指 offer 题解
- 公众号程序员徐公回复马士兵,可以获得马士兵学习视频一份
- 公众号程序员徐公回复Java 电子书,可以获得我精心整理的 Java 电子书一份
希望我们可以成为朋友,成长路上的忠实伙伴!
2021 年如何学习 Android,一位 5 年中大厂老哥跟你聊聊的更多相关文章
- 2021年正确的Android逆向开发学习之路
2021年正确的Android逆向开发学习之路 说明 文章首发于HURUWO的博客小站,本平台做同步备份发布.如有浏览或访问异常或者相关疑问可前往原博客下评论浏览. 原文链接 2021年正确的Andr ...
- 从零开始学习Android(一)Android环境的搭建
好久没有开始写博客了,最近开始学习Android,所以想把学习的笔记都一一记录下来.一来是方便自己以后资料的查询,其次也是给Android新手朋友进行学习使用,再次也希 望得到高手的指点.废话少说,我 ...
- 《IT蓝豹》吹雪花demo,学习android传感器
吹雪花demo,学习android传感器 吹雪花demo,学习android传感器,嘴巴对着手机底部吹一下就会出现飘着雪花效果. 算是学习android传感器效果.本例子主要是通过android.me ...
- 如何学习Android系统源码(转)
一. Android系统的源代码非常庞大和复杂,我们不能贸然进入,否则很容易在里面迷入方向,进而失去研究它的信心.我们应该在分析它的源代码之前学习好一些理论知识,下面就介绍一些与Android系统相关 ...
- 想学习Android开发
最近被别人说知识面窄,心里受伤了.准备学学Android开发,如果能在手机里运行自己写的app,那是多么high ~~~ Android开发需要看什么资料呢? 说明:本人一直从事windows下的C+ ...
- 一起来学习Android自定义控件1
概述 Android已经为我们提供了大量的View供我们使用,但是可能有时候这些组件不能满足我们的需求,这时候就需要自定义控件了.自定义控件对于初学者总是感觉是一种复杂的技术.因为里面涉及到的知识点会 ...
- 10个很棒的学习Android 开发的网站(转)
看到江湖旅人 写的<10个很棒的学习iOS开发的网站 - 简书>,所以就忍不住写Android 啦,也希望对大家有帮助.我推荐的网站,都是我在学习Android 开发过程中发现的好网站,给 ...
- 学习android学习必备的java基础知识--四大内部类
学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...
- 深入学习Android有关网络连接的内容
基于实际项目中碰到的些许问题,开始重新深入学习Android网络连接有关知识. Android的4.1.2版本的AndroidHttpClient模块setSoTimeout之后实际超时时间和设置的时 ...
- android学习——android架构
android架构:在了解全局的情况下进行细致化的分析才能更有效的学习android的运行原理,才能更深刻的理解android开发: 1.架构图直观 2.架构详解 2.1.Linux Kernel 2 ...
随机推荐
- 飞码LowCode前端技术系列:如何便捷快速验证实现投产及飞码探索
本篇文章从数据中心,事件中心如何协议工作.不依赖环境对vue2.x.vue3.x都可以支持.投产页面问题定位三个方面进行分析. 一.数据中心,事件中心设计 飞码是数据驱动+事件驱动的产品,考虑到飞码运 ...
- C#12中的Primary Constructors(主构造函数)
什么是主构造函数 把参数添加到class与record的类声明中就是主构造函数.例如 class Person(string name) { private string _name = name; ...
- Codeforces Round #697 (Div. 3) A~E题解
写在前边 状态及其不佳,很累很困,还好\(unrated\)了 链接:Codeforces Round #697 (Div. 3) A. Odd Divisor 链接:A题链接 题目大意: 判断一个数 ...
- [ABP] PostgreSQL在.NET 6.0使用DateTime类型抛出异常:timestamp with time zone
今晚操起久违的 ABP 框架搭了个新项目: .NET 运行时版本:6.0.3 ABP 版本:v5.2.0-rc.2 版本. 数据库:PostgreSQL v10.x 一顿操作猛如虎,直接用 dotne ...
- 自定义springboot-starter 动态数据源
自定义springboot-starter 动态数据源 如果使用的是spring或springboot框架,spring提供了一个实现动态数据源的一个抽象类AbstractRoutingDataSou ...
- 轻松应对复杂集成场景!用友U8API开发适配
在企业上云的大趋势下,U8+ 全面转向互联网方向,深入融合云应用,一站式提供财务.营销.制造.采购.设计.协同.人力等领域的"端 + 云"服务,并通过软硬一体化.产业链协同的策略全 ...
- [ARC145D] Non Arithmetic Progression Set
Problem Statement Construct a set $S$ of integers satisfying all of the conditions below. It can be ...
- ROW_NUMBER 开窗函数优化方案(Oracle && PostgreSQL 性能比对)
帮朋友优化一条很简单的窗口函数 ROW_NUMBER() OVER() , Oracle 迁移 PostgreSQL项目. 原始SQL和执行计划 STUDENT_BAK 表我模拟的数据,3千万行数据. ...
- 华企盾DSC启动服务器提示“发生系统错误5”
解决方法:没有管理员权限 导致,需要以管理员权限运行服务器安装包,覆盖安装一下
- 强!推荐一款自动化神器Autolt:不再重复工作
随着互联网不断发展,它给我们带来便利的同时,也带来了枯燥.重复.机械的重复工作.今天,我要和大家分享一款老牌实用的自动化工具:AutoIt,它能够让你告别繁琐的重复性工作,提高工作效率. 这里透露一下 ...