程序员徐公

微信公众号:程序员徐公

0%

大家好,我是程序员徐公,加上实习,总共有五年中大厂经验了。公众号”程序员徐公

今天,站在一个过来人的身份,来聊一聊到底该如何自学 Android。今天的文章不会很具体,主要是各个阶段学习的一些注意事项,以及一些坑。因为我认为,授人以鱼不如授人以渔

目录大概如下

  • Java SE 基础
  • Android 基础
  • Android 进阶
  • Android 学习心得
  • 如何写好自己的简历
  • 小结

Java SE 基础

学些 Android 之前,你必须要有 Java 基础,不然你是学习不下去的。

Java基础

首先我们要掌握 Java 的一些基础概念和语法,比如什么是面向对象,继承,封装,多态分别是什么。

  • Java 基本数据类型
  • Java 变量类型
  • Java 集合
  • Java 多线程
  • Java IO 流
  • Java 网络编程
  • Java 反射
  • Java 泛型
  • Java 注解

这一块中,有三个是非常重要的,也是面试经常问到的,这里简单介绍一下。

  1. 集合
  2. 多线程
  3. 网络

集合

Map:HashMap(最重要)、LinkedHashMap(Lrucache 算法实现最重要的一部分)、ConcurrentHashMap、Hashtable(基本被废弃)、

List:ArrayList(最重要)、LinkedList

Set:HashSet(最重要)、TreeSet

多线程

线程生命周期

创建线程的三种方式:继承 Thread、实现 Runnable;实现 Callable

ThreadPoolExecutor(线程池)

锁:synchronized 和 Lock

Java 学习书籍推荐

这里主要推荐两本数据,

  1. 《Thinking In Java》:Java经典书籍,不必说;
  2. 《Effective Java》:Java进阶必备书籍
  3. Java 编程思想,一本很经典的书籍,初学者可以看,但不建议细看,可以作为工具书来查看

我自己平时整理了一些 Java 常用的数据,想要的话可以在我的公众号 程序员徐公 回复 **”Java 电子书”**,会自动将电子书发给你。

Java 学习视频

小结:

1、刚开始学 Java 的时候

2、看第一遍时会比较慢,第二遍会快一点,已经掌握的知识可以快速带过。

3、有疑问的知识多看几遍,也可以网上看点博文辅助理解,实在看不懂的可以先记下来,后面学到一定程度可能就理解了。

4、对于重点知识,可以做笔记来加深自己的理解,也方便后续自己复习。

5、Java基础、集合、多线程是核心中的核心。


Android 基础

Android 基础大概可以分为一下几个部分

  1. AndroidStudio 安装和基本使用
  2. Android 基础 UI 学习
  3. Android 四大组件学习
  4. Android 五大布局学习
  5. 等等,这里就不一一罗列了

基础 UI 学习

1)、Android初级控件的使用:

TextView控件的使用
Button控件的使用方法
EditText控件的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法

2)、 控件的布局方法:

LinearLayout
FrameLayout
RelativeLayout
ContrainsLayout (约束布局)

3)、Android高级控件的使用:

ListView的使用方法
GridView的使用方法
Adapter的使用方法
ScrollView的使用方法
RecyclerView

基础的东西有很多,建议集合书籍一起学习吧,这里主要推荐郭霖的第一行代码,写得是真不错。

初学者刚学习的时候,可能会碰到一些问题,一时半会无法解决,建议你先百度或者 Google 搜索一下,问一下身边的人。如果还不会的话,可以加一下身边的人多问问。

如果想看视频的话,我这里有一套 Android 黑马教学视频,质量还不错,不过是几年前的,目录如下,有需要的话可以看一下。

获取方式,关注我的微信公众号程序员徐公,回复黑马两字。


Android 进阶

Android 进阶,学习方向有很多,比如 Android 性能优化(启动,卡顿, Crash 治理), JNI C++,gradle 打包,编译速度,音视频等等,这些都是大的方向。

  1. 性能优化(布局优化,启动优化、内存优化、电量优化、APK 瘦身等)
  2. 组件化(路由,SPI 等)
  3. 动态化(热修复,插件化等)
  4. 跨平台(RN,Flutter,现在会跨平台的还是挺吃香的,尤其是面试阿里系的)

最近写的一些文章,自我感觉还行,有兴趣的可以看看。

Android 启动优化(一) - 有向无环图

Android 启动优化(二) - 拓扑排序的原理以及解题思路

Android 启动优化(三)- AnchorTask 开源了

Android 启动优化(四)- AnchorTask 是怎么实现的

Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了

Android 启动优化(六)- 深入理解布局优化


Android 学习路上的一些心得

1-3 年

前 3 年,我觉得是我们成长最快的时候。

尤其是刚开始工作的一年,刚开始接触项目,我们会接触到很多新知识,比较网络框架的封装,Android 架构 MVVN,MVC,MVP 等。

这段时期是我们进步最快的时候,因为很多东西我们都不会,我们会逼着自己去学习。

第二到第三年,也是我们成长的关键时期。这时候,在项目中,我们基本会自己独立负责需求。这时候的我们,大多数基本功能都可以自己独立实现。需要注意的是代码风格和代码思维的培养

代码风格,指的是编码习惯。比如方法命名,方法的合理拆分,适当添加注解,注释。听起来可能会很虚,但是千万别小看这些细节。反正我在组里见过一些工作五六年的,代码一坨一坨的,像 si 一样。

代码思维,有点类似于人的视野和思考方式吧。很多时候,实现某个效果,有很多种方案。我们为了应付需求,可能会随便选择一种,没有去了解其他方案。而这恰恰错过了我们成长的最佳时期。

记住,永远别给自己设限,或许在编程的路上会遇到很多问题,但是总会有解决方法的,而这取决你的态度。

3-5 年

这个时期,不出意外,我们基本都是高级工程师了。这时候大多数人会遇到瓶颈,不知道学些什么好。好像什么都会,但是不够深入。我也遇到这样的情况,现在正在深挖。

这方面我暂时也给不了太多意见,只能说,选择一个方向,静下心来,去学习,相信能收获到我们想要的

学习方向有很多,比如 Android 性能优化(启动,卡顿, Crash 治理), JNI C++,gradle 打包,编译速度,音视频等等,这些都是大的方向。

最近写的一些文章,自我感觉还行,有兴趣的可以看看。

Android 启动优化(一) - 有向无环图

Android 启动优化(二) - 拓扑排序的原理以及解题思路

Android 启动优化(三)- AnchorTask 开源了

Android 启动优化(四)- AnchorTask 是怎么实现的

Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了

Android 启动优化(六)- 深入理解布局优化

5 年之后

技术人的四大出路,你适合哪一个

大多数技术人,一般会有以下方向。

  • 第一:成为技术大神,比如架构师,及技术专家等。
  • 第二:技术管理,比如技术总监等。
  • 第三:技术转型,如转项目管理,产品等,你牛逼的话,说不定下一个张小龙就是你(哥们,想多了,那有这么容易)。
  • 第四:自主创业,做自媒体等

程序员改如何写好自己的简历

一位5年中大厂程序员,从他自身经历出发,总结了一些经验,写得非常不错。

本文送四个纬度出发,优化你的简历- 突出你的亮点

  • 展现自己的个人技能,
  • 已项目为主题,展现自己的技术能力和项目贡献
  • 量化你的项目,给出数字化结果

最后,文中还贴心贴出了简历模板,想进大厂的球友们可以看看。

https://mp.weixin.qq.com/s/cqVo6UQqnWZtKdZ6mJt93w

小结

最后,如果选择编程,一定要耐得住寂寞。学习编程的路上,有时候很枯燥,切忌三天打渔。两天晒网。黑马 Android 52 期学习视频,不加密的,免费分享给大家最后,如果选择编程,一定要耐得住寂寞。学习编程的路上,有时候很枯燥,切忌三天打渔。两天晒网。

我的 5 年 Android 学习之路,那些年一起踩过的坑

如果觉得对你有所帮助的话,可以关注我的微信公众号程序员徐公,5 年中大厂工作经验。

  • 公众号程序员徐公回复黑马,获取 Android 学习视频
  • 公众号程序员徐公回复徐公666,获取简历模板,教你如何优化简历,走近大厂
  • 公众号程序员徐公回复面试,可以获得面试常见算法,剑指 offer 题解
  • 公众号程序员徐公回复马士兵,可以获得马士兵学习视频一份

本文首发我的微信公众号:程序员徐公,微信公众号程序员徐公回复徐公666,可以获得简历模板

前言

在平时开发过程中,我们经常需要截图和录制视频,尤其是客户端开发和测试。

可能有一些人的姿势是这样的。在电脑上开个模拟器,使用第三方工具后进行截图和录屏。还有一种最原始的方式,在手机上截图和录制视频,然后再通过 QQ 等工具发送到电脑,这多累呀。

其实,有一种很简便的方式,那就是说通过别名和 adb,一个简单命令,让你快速截图和录制视频,如 adbshot, adbrecord。下面让我们一起来看一下,怎么实现?

adb 命令和录制视频

adb 命令截图

第一种方法

1
2
3
4
#(保存到SDCard)
adb shell /system/bin/screencap -p /sdcard/screenshot.png
# 从SD卡导出到电脑,注意/Users/junxu 为电脑路径,必须存在
adb pull /sdcard/screenshot.png /Users/junxu

如果你想删除手机上的图片,那么你可以使用这个命令来删除

1
adb shell rm /sdcard/screen.png

开始录制命令:

1
adb shell screenrecord --time-limit 10 /sdcard/demo.mp4

说明:录制手机屏幕,视频格式为mp4,存放到手机sd卡里,默认录制时间为180s

mac 设置别名

1、基本语句

1
alias lts ="cd /Users/junxu/Desktop/sh"

2、修改文件

1
vi ~/.bash_profile

加入 alias lts="cd /data"

保存

3、使别名命令生效

1
source ~/.bash_profile

4、在命令行输入lts 就可以达成 cd /Users/junxu/Desktop/sh的效果

配合别名,快速截图和录屏

截图

增加截图别名

1
alias adbshot="sh /Users/junxu/Desktop/sh/shot.sh"

截图 SH 脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/bash
# Android截图,定位和预览默认开启,如果想关闭,可以注释

echo "第一个参数为:$1";

dd=`date +%Y-%m-%d-%H-%M-%S`
pwd=`pwd`
adb shell screencap -p /sdcard/screenshot.png
adb pull /sdcard/screenshot.png
adb shell rm /sdcard/screenshot.png
mv screenshot.png $dd.png
echo "截图已保存为当前目录下的"$pwd$dd.png
# 修改图片尺寸,长或宽最大不超过960,等比缩放
echo "压缩图片..."
sips -Z 960 $pwd/$dd.png
# 定位到文件
open ./$dd.png -R
# 打开预览
open -a Preview $dd.png
# 复制到剪切板
osascript -e 'on run args' -e 'set the clipboard to POSIX file (first item of args)' -e end $pwd/$dd.png
echo "截图已复制到剪切板"

记得给 SH 脚本增加可执行权限。

1
chmod +x /Users/junxu/Desktop/sh/shot.sh

录屏

增加录屏别名

1
alias adbrecord="sh /Users/junxu/Desktop/sh/record.sh"

录屏脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash
# Android录屏
time=$1

if [ ! $time ]; then
time=5
echo "IS NULL"
else
echo "NOT NULL"
fi

dd=`date +%Y-%m-%d-%H-%M-%S`"-$time"
echo "dd is $dd"
pwd=`pwd`
adb shell screenrecord --time-limit $time /sdcard/screenrecord.mp4
adb pull /sdcard/screenrecord.mp4
adb shell rm /sdcard/screenrecord.mp4
mv screenrecord.mp4 $dd.mp4
echo "$1秒视频已保存为当前目录下的"$dd.mp4
# 定位到文件
open ./$dd.mp4 -R
# 复制到剪切板
osascript -e 'on run args' -e 'set the clipboard to POSIX file (first item of args)' -e end $pwd/$dd.mp4
echo "$1秒视频已复制到剪切板"

记得给 SH 脚本增加可执行权限。

1
chmod +x /Users/junxu/Desktop/sh/record.sh

其他常用 adb 常用别名

1
2
3
alias adbtop="adb shell dumpsys activity top | grep "ACTIVITY" "
alias adbd="adb devices"
alias adbs="adb shell"

小结

写这篇文章的目的,是想告诉大家,有别名这个概念。对于开发者来说,配置一些自己常用的别名,真的是很方便,可以快速提高效率。大家如果觉得不错的话,可以关注我的微信公众号程序员徐公

  1. 公众号程序员徐公回复黑马,获取 Android 学习视频
  2. 公众号程序员徐公回复徐公666,获取简历模板,教你如何优化简历,走进大厂
  3. 公众号程序员徐公回复面试,可以获得面试常见算法,剑指 offer 题解
  4. 公众号程序员徐公回复马士兵,可以获得马士兵学习视频一份

程序员该如何写好自己的简历,一位 5 年中大厂老哥跟你聊聊

我的 5 年 Android 学习之路,那些年一起踩过的坑

Android 启动优化(七) - JetPack App Startup 使用及源码浅析

Android 启动优化(六)- 深入理解布局优化

本文首发我的微信公众号:程序员徐公,微信公众号程序员徐公回复徐公666,可以获得简历模板

前言

大家好,我是程序员徐公,双非本科,某中大厂程序员,加上实习,恰好有 5 年的程序员生涯。

从实习到校招,中途踩过不少坑。在职场中有一些自己的心得,今天,跟大家一起来聊聊,程序员应该如何写好自己的一份简历。

前段时间,有一些粉丝私信我说,明年我想进大厂,今年想开始准备,有什么建议嘛?

我回复他的第一句话说,先整理好自己的简历,再进行下一步的计划。为什么这么说呢?

第一:整理简历的过程,其实是一次复盘总结。在这过程中,我们会知道自己哪些地方做得好的,哪些做得不好的,这样才能针对性地进行复习。

第二:挺多人,简历写不好,在筛选简历的时候,直接被 pass,连面试的机会都没有,这是很可惜的。

第三:简历写不好,没突出重点,面试官很难从短短的一个小时之内,发现你的亮点,空有一身才华,却得不到展现,多可惜呀。

下面,就让我们一起来聊一聊,对于技术人来说,怎样才算是一份好的简历?

一、突出你的亮点

一份简历,简单来说,主要分为四部分

  1. 个人基本信息
  2. 过往履历
  3. 个人技能
  4. 项目经历

而 HR,面试官在筛选简历的时候,很有可能不超过一分钟,在这短短的 60 秒时间之内,如果要脱颖而出,简历一定要突出你的亮点,让人耳目一新,彰显自己的才能。

对于程序员来说,个人亮点,我们可以从以下及方面着手,比如说。

  1. 解决了什么疑难杂症,如解决了 top crash, crash 率降低了 0.1% 等
  2. 性能上面带来了多少提升,如编译速度的提升,提升了多少,降低了多少 min等
  3. 你在这个项目作出了什么成绩,比如主导搭建了代码扫描框架,自动扫描,提高代码质量,减少 review 成本。

千里马常有,而伯乐不常有。一定要重视简历,让简历能够反映你的真实水平,先不说做到锦上添花,至少不要拖后腿。

二、展现自己的个人技能

个人技能这块,也是简历中必不可少的一部分。

第一,先说最重要的一点,按照掌握的程度分为几个等级,精通,熟悉,掌握,了解,强烈建议不要写精通,道理你懂的。

第二:不熟悉的点不要写到简历上面,否则就是给自己挖坑。

比如,你只是使用了网络库 OkHttp,你在简历上面写熟悉/掌握 Okhttp。恭喜你,兄弟,你给自己埋下了一颗定时炸弹。面试官可能会问你各种原理的,Okhttp 的设计原理是怎样,拦截器是怎样设计的,有什么优缺点,连接池等等?

说到这,想起了当年实习生面试的时候,写了某开源库,一问三不知。

第三:技能要具体,突出重点,让面试官有话可问

反例:

熟悉 Java

正例:

熟悉类加载,并使用类加载技术开发了一个模块化框架

面试其实是一个双向的选择过程,简历上面技能写得具体,面试官看到了,可能会往这个方面提问题,这是非常 nice 的,我们恰好可以展现自己的特长。

相反,如果简历上面写得不具体,面试官找不出想问的点,那可能就会往他/她擅长的方面问,这时候,对于求职者来说,是非常吃亏的。

因为每个人都有擅长和不擅长的技能,不可能面面俱到。

第四,写的技能一定要跟你应聘的岗位相关,不相关的不要写上去

比如,你应聘的是 Android 开发工程师,你在简历上面写一堆后端技能。匹配度不高,简历可能会 pass。

当然,也不是不可以写与应聘岗位不相关的技能,只是说简历要跟我们应聘的岗位匹配度高一点。这样,简历筛选通过的几率比较高。

最后,专有名词一定要写对,这体现一个人的专业素养和细心。比如 Java,不要写成 java,android 不要写成 Android

三、以项目为主体,展现自己的技术能力和项目贡献

我们可以从以下思路,以项目为主体,设计我们的简历。

如图,大概分为以下层级

  1. 项目名称,开始时间和结束时间,在项目中担任的角色
  2. 项目简介,说清楚这个项目主要是做什么的,有多少量级,尽量不要超过一行,切忌不要超过两行
  3. 项目职责,个人的建议,主要分为两大块,一个是技术职责,一个是业务职责。这样面试官能够很清楚的知道,你在项目中做了什么。

项目职责,这一块是最重要的,也是展现我们能力的时候,尤其要重视。

在写一块的时候,建议分点论述,这样显得调理清晰。

  • 比如你解决了项目的什么疑难杂症,带来了什么收益。这块在面试当中也经常被问到,项目中你有遇到什么技术难点嘛,是怎么解决的?这块回答好了,可以给我们的面试加很多分
  • 做了什么性能优化?这块可以有很多,根据自己擅长的领域和项目经历加上去即可。比如启动优化,编译速度优化,APK 瘦身等
  • 你在这个项目中作出了什么成绩?这块要结合我们项目中的情况来说,比如你推动了 MVVM 框架,组件化的落地等

量化你的项目,给出数字

量化我们的项目,给出数字化结果,可以提高简历的专业度和说服力,给面试官和 hr 留下深刻的印象。

例子一

改写前:应用 xx 技术,解决了 top N 奔溃

改写后:应用 xx 技术,解决了 top N 奔溃,crash 率降低了 0.1% 等

例子二

改写前:应用 xx 技术,减少了内存泄露的发生

改写后:应用 xx 技术,减少了内存泄露的发生,内存 top 值极少了 xxM

例子三:

改写前:结合使用 xx,实现了 app 登录和个人资料的自动填充

改写后:结合使用 xx,实现了 app 登录和个人资料的自动填充,提高了多少的转化率

四、注意事项

写简历,有一些新手会经常犯一些错误,下面简单列举一下

  1. 简历要用 PDF 格式,不要用 Word 格式,有兼容性问题,可能会乱码
  2. 简历命名,建议已这样的格式命名,昵称-应聘岗位-联系方式,这样可以一目了然
  3. 简历不要太长,尽量控制在两页之内。主要重点介绍你最近做过的项目或者你觉得自己做得比较好的项目
  4. 不要在简历中写之前的待遇和期望待遇。
  5. 如果平时有写博客,可以将博客地址写在简历上面,这是一个加分项。不过,如果你的博客上面只是单纯记流水账,就不要写上去了,反而容易减分。Github 也是同样的道理。

暂时就想起这么多了,以后记得再补充,对了,我整理了一份简历模板,想获取的话,可以在我的微信公众号程序员徐公回复徐公666

五、小结

写好一份简历,有很多技巧,排版,量化数据等,但有一点最重要的是,自身要有底子,要有实力。不然,简历写得再好,一切都是泡沫。

十年磨一剑,铁杵磨成针。不管什么行业,想要脱颖而出,坚持是最重要的。唯有日复一日的坚持与打磨,才能走得更高更远。

以上,是我对如何写好简历的一些看法,觉得写得不错的,可以点个赞哦。微信公众号后台回复徐公666,可以获得我整理的简历模板一份。

推荐阅读

个人总结

我的 5 年 Android 学习之路,那些年一起踩过的坑

职场上这四件事,越早知道越好

今天,说三件小事

技术人的未来在哪里

致刚入职场的你 - 程序员的成长笔记

关注我的公众号程序员徐公,回复 徐公666 获取简历模板,回复 黑马 ,获取黑马视频教程。

光阴似箭,日月如梭,时间真的过得飞快。
加上实习,从事 Android 开发,差不多有 5 年了,在这里,我分享一下我的经验,在 Android 的学习路上,我是站在巨人的肩膀上成长起来的。

大概分为三个部分

一、Android 职业规划
二、Android 学习路线
三、如何进入大厂
三、Android 学习资料分享

Android 成长生涯

1-3 年

前 3 年,我觉得是我们成长最快的时候。

尤其是刚开始工作的一年,刚开始接触项目,我们会接触到很多新知识,比较网络框架的封装,Android 架构 MVVN,MVC,MVP 等。

这段时期是我们进步最快的时候,因为很多东西我们都不会,我们会逼着自己去学习。

第二到第三年,也是我们成长的关键时期。这时候,在项目中,我们基本会自己独立负责需求。这时候的我们,大多数基本功能都可以自己独立实现。需要注意的是代码风格和代码思维的培养

代码风格,指的是编码习惯。比如方法命名,方法的合理拆分,适当添加注解,注释。听起来可能会很虚,但是千万别小看这些细节。反正我在组里见过一些工作五六年的,代码一坨一坨的,像 si 一样。

代码思维,有点类似于人的视野和思考方式吧。很多时候,实现某个效果,有很多种方案。我们为了应付需求,可能会随便选择一种,没有去了解其他方案。而这恰恰错过了我们成长的最佳时期。

记住,永远别给自己设限,或许在编程的路上会遇到很多问题,但是总会有解决方法的,而这取决你的态度。

3-5 年

这个时期,不出意外,我们基本都是高级工程师了。这时候大多数人会遇到瓶颈,不知道学些什么好。好像什么都会,但是不够深入。我也遇到这样的情况,现在正在深挖。

这方面我暂时也给不了太多意见,只能说,选择一个方向,静下心来,去学习,相信能收获到我们想要的。

学习方向有很多,比如 Android 性能优化(启动,卡顿, Crash 治理), JNI C++,gradle 打包,编译速度,音视频等等,这些都是大的方向。

最近写的一些文章,自我感觉还行,有兴趣的可以看看。

Android 启动优化(一) - 有向无环图

Android 启动优化(二) - 拓扑排序的原理以及解题思路

Android 启动优化(三)- AnchorTask 开源了

Android 启动优化(四)- AnchorTask 是怎么实现的

Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了

Android 启动优化(六)- 深入理解布局优化

5 年之后

技术人的四大出路,你适合哪一个

大多数技术人,一般会有以下方向。

  • 第一:成为技术大神,比如架构师,及技术专家等。
  • 第二:技术管理,比如技术总监等。
  • 第三:技术转型,如转项目管理,产品等,你牛逼的话,说不定下一个张小龙就是你(哥们,想多了,那有这么容易)。
  • 第四:自主创业,做自媒体等

我目前来说,可能会选择第一条路吧,成为一名技术专家。

在技术的路上,或许会很累,很难,可那又怎样呢

35 岁中年职业危机,很多职业都有,不仅仅局限于程序员。

从本质上面说,自身竞争力下降占很大原因。毕竟,优秀的人才从来不缺少机会。

既然选择了,便只顾风雨兼程。

为了未来有更多的选择,从现在开始,朝着自己的目标努力奋斗吧,书写属于自己的人生。


Android 学习路线

下面,说一下 Android 的学习路线,不会很具体,主要是从大的方面来说,感兴趣的可以看一下。

搭建基本的开发环境,敲下 Hello world

首先你配置好电脑开发环境。首先需要配置 Java,AndroidStudio 的开发环境。

现在的 IDE 对比几年前的,真的是方便多了,可以自动帮我们配置好环境变量。还记得当年刚开始配环境的时候,折腾了两三天。在配置变量的时候,有时候英文的逗号输成中文的,在 cmd 窗口输入 Java,一直提醒没有这个命令,一把鼻涕一行泪

依稀还记得,当配置完环境之后,敲下第一段程序 Hello world 时的那份喜悦。

掌握基本的语法和常用的数据结构

第一:你要先掌握基本的语法,可以从一些书籍开始学起。跟着书本慢慢敲,从第一个程序 Hello World 慢慢敲起,万丈高楼平地起

由于 Android 是用 java 或者 kotlin 语言开发的,建议优先掌握 java 语言。这里推荐两本书籍。

  1. java 编程思想,一本很经典的 java 书籍
  2. 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 启动优化(二) - 拓扑排序的原理以及解题思路

Android 启动优化(三)- AnchorTask 开源了

Android 启动优化(四)- AnchorTask 是怎么实现的

Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了

Android 启动优化(六)- 深入理解布局优化

关注前沿技术

关注前沿技术,可以去一些论坛,公众号上面逛逛。

论坛的话,推荐掘金,CSDN

Android 技术公众号的话,推荐鸿洋,郭霖的公众号,当然还有我的公众号程序员徐公。文章的质量算是比较高的。

最后,有空的时候多去 github 或者 google 官网 看看,有什么新技术,一般第一时间会更新。


如何进入大厂

面试是一个双向选择的过程,我们要保持足够的自信。

在我看来,要进入大厂,有 4 点最重要。

  1. 编程能力,包括常用技术以及常用技术的原理,毕竟招人,是来干活的,不是来当爹的
  2. 技术深度,在大厂,分工越来越越明确,职责越来越细。很多时候,需要的是某一个技术领域的人才,而不是什么都懂一点的全才。
  3. 算法。
  4. 软技能,沟通能力等

如何学习算法

现如今,如果你想进入大厂,腾讯,阿里,头条,拼多多等,不管是社招还是校招,肯定都会面试到算法的。

相信很多人有这样的想法,面试的时候早火箭,工作的时候拧螺丝。确实,这种情况非常常见,我也认同。但没办法,谁叫我们想进入大厂呢。

不过,这种情况也可以理解。怎么在几轮面试中确定面试者的水平呢?
肯定是考察算法,基础这些,原理这些

虽然这些代表不了全部,但起码能在一定程度上代表了面试者的水平能力。要知道,编程语言其实都是想通的,编程思维和算法能力才是核心。

掌握了原理,编程思维,切换到另外一门语言其实是很快的。这也就是面试官喜欢考察算法和原理的原因。

至于要怎么学习算法,我简单归纳一下

第一:要了解基本的数据结果,数组,链表,Map,Set,二叉树等,了解他们的优缺点,时间复杂度,空间复杂度等

第二:要掌握一些常见的算法,递归,迭代,八大排序,二分查找,贪心算法等

第三:掌握一种算法,不仅要知道 what,还要知道 why(分析各种算法的优缺点),比如 topK问题,有常见的几种解决方案,排序,快排思想,海量数据堆排序

第四:刚开始学的时候,可能会比较吃力,可以先刷题,慢慢找感觉,从易到难

  • 比如,第一天,你刷这道算法题的时候看不懂,先不用着急,很多人都是这样过来的,先搜一下答案,看一下别人是怎么解决的。
  • 看懂了之后,自己用代码写一遍,跑一遍。这很重要,很多时候,你以为你自己懂了,但当你在写的时候是写不出来的,在你动手写代码时,会不断加深你的印象
  • 第二天,自己再写一遍,加深印象

第五:学好算法不是一日之功,需要长期的积累。建议的做法是每天做一两道题,题目不在多,贵在于理解。坚持一两个月,你会发现你的感觉逐渐好起来了。

https://github.com/gdutxiaoxu/Android_interview

Android 学习资料分析

黑马 52 期不加密视频

获取方式在微信公众号 “程序员徐公” 回复“黑马” 两字

01、安卓基础+JNI (14天)
02、Android应用开 发-代码版本管理和实战(1天)
03、android案例与项目_手机安全卫士(12天)
04、自定义控件与视图(2天)
05、android项目 实战_智慧北京(6天)
06、android项 目实战_谷歌应用市场(6天)
07、android进阶 高阶案例-QQ5.0特效专辑(2天)
08、android游戏开发_ 植物大战僵尸(3天)
09、android案例与项目_ 百度地图(1天_ 补充)
10、android项目实战_智能短信管理(3天_ 补充)
11、Android
_WebView&HTML5开发(1天 _补充)

Java 马士兵视频

获取方式在微信公众号 “程序员徐公” 回复“java” 两字

第一部分:J2se学习视频内容包括:

尚学堂科技_马士兵_JAVA视频教程_JDK5.0_下载-安装-配置
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第01章_JAVA简介_源代码_及重要说明
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_递归补充
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第02章_基础语法
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第03章_面向对象
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第04章_异常处理
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第05章_数组
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第06章_常用类
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第07章_容器
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第08章_IO
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第09章_线程
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第10章_网络
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_第11章_GUI
尚学堂科技_马士兵_JAVA视频教程_J2SE_5.0_专题_日期处理
尚学堂科技_马士兵_JAVA视频教程_J2SE_专题_正则表达式

第二部分:j2se练习项目视频内容包括:

第二部分:j2se练习项目视频内容包括:

尚学堂科技_马士兵_在线聊天系统雏形视频教程_java_eclipse
尚学堂科技_马士兵_坦克大战视频教程_java_eclipse
尚学堂科技_马士兵_坦克大战图片版
尚学堂科技_马士兵_JAVA_坦克大战网络版视频教程
尚学堂科技_马士兵_snake_贪吃蛇内部视频

小结

以上是我这些年来, Android 学习路上的一些简单分享。在 Android 的学习路上,我是站在巨人的肩膀上成长起来的,同样,我也希望成为你们的巨人。

希望我们可以成为朋友,成长路上的忠实伙伴!

Android 黑马学习视频

目录

  • 01、安卓基础+JNI (14天)
  • 02、Android应用开 发-代码版本管理和实战(1天)
  • 03、android案 例与项目_手机安全卫士(12天)
  • 04、自定义控件与视图(2天)
  • 05、android项目实战_ 智慧北京(6天)
  • 06、android项目实战_谷歌应用市场(6天)
  • 07、android进阶高阶案例-QQ5.0特效专辑(2天)
  • 08、android游戏开发_植物大战僵尸(3天)
  • 09、android案例与项目_ .百度地图(1天_ 补充)
  • 10、android项目实战_ 智能短信管理(3天_ 补充)
  • 11、Android_ WebView&HTML5开发(1天 补充)

获取方式

百度云链接

Android 学习 + 面试指南:

如果链接过期了,可以关注我的微信公众号“程序员徐公”,回复“黑马“两字,会自动发给你

  1. 公众号程序员徐公回复黑马,获取 Android 学习视频
  2. 公众号程序员徐公回复徐公666,获取简历模板,教你如何优化简历,走进大厂
  3. 公众号程序员徐公回复面试,可以获得面试常见算法,剑指 offer 题解
  4. 公众号程序员徐公回复马士兵,可以获得马士兵学习视频一份