【Android】学习路线与建议

牧云@^-^@ 提交于 2020-09-30 11:53:05

简介:大四学生党一枚!主攻Android开发,转游戏客户端开发中
语录取乎其上,得乎其中,取乎其中,得乎其下,以顶级态度写好一篇的博客。

最近有很多学弟学妹私信我,咨询Android学习路线的问题,结合今年秋招Android岗的面试经验,做个总结,仅代表个人看法。

一.企业要求

1.1 任职要求

下面是我在招聘网站上发现的几个Android工程师的任职要求

腾讯社招
1、具备Android应用层调试分析能力,快速定位解决anr、crash等问题;
2、对Android开发相关的事件处理、内存处理、多线程编程、网络通讯及性能优化有深入理解;
3、熟悉Android应用框架和Android GUI库。
4、有过Android系统应用软件的开发。
5、有良好的源码阅读能力和编码习惯
网易社招
1、计算机及相关专业本科以上学历,2年以上Android相关开发经验
2、熟悉Android平台的开发技术,如UI,网络,性能和内存优化等
3、了解各类常用开源框架实现原理,并能灵活运用;
4、扎实的计算机专业基础,熟悉常用的数据结构、算法、设计模式
5、熟悉网络编程,熟练掌握tcp/udp等协议相关知识
6、具备良好的学习能力,自主分析和解决问题能力,以及良好的沟通协作能力

重点:从上面的要求中详细提取了一些Android从中阶迈向高阶必备的技能。友情提示:基础不牢,地动山摇。四大组件都不熟悉的童鞋可以先不要看下面的内容。

如果觉得自己四大组件掌握的还可以的同学,请回答以下几个问题

1.Activity的启动模式与标志位分别有?每种启动模式的使用场景。
2.Activity的生命周期,onStart和onResume的区别,Activity A跳转到Activity B,生命周期如何?
3.广播的几种类型?粘性广播了解过吗?静态注册和动态注册的区别。
4.关于Service,startService和bindService的区别。
5.ContentProvider可以暂时不做了解,涉及跨进程的数据交互。当了解了跨进程通信后再学习。

1.2 推荐书籍

说实话,大三的我是不能完整回答任何一个问题的,建议阅读《Android开发艺术探索》《Android进阶之光》《Android自定义View实战》《Android进阶解密》
下面的问题,在这些书中都有完整的答案,我认为是进阶必读的书。每本书中都有相互重复的章节,可以有选择性的阅读。

大神级直接推荐《深入理解Android内核涉及思想》,比较深涉及到Android`内核比较多,没有一定功力很难懂。

1.3 细分Android

  • UI:自定义View,View绘制流程,View事件分发机制,Android动画(★★★★★

1.如何用自定义View的方式实现一个圆角控件(大体思路)
2.View的三大绘制流程,每一步的作用
3.如何处理滑动事件冲突
4.几种Android动画的区别
5.四大组件是基础,面试必问。



  • 网络相关:常用网络框架的底层原理以及实现细节。(★★★★★

你了解目前目前流行的的网络框架Retrofit和Okhttp的实现细节吗?
1.Retrofit的实现原理?动态代理技术了解多少?
2.OkHttp的五层拦截链分别是哪些?OkHttp中的缓存如何实现的?

  • 多线程编程:Android中提供的实现多线程的方法(★★★★★

比如HandlerThread,AsyncTask,IntentService等方法
1.他们的区别,适用场景,实现的原理
2.线程同步的几个方法,阻塞同步和非阻塞同步了解多少。
3.线程池有没有了解过,优缺点有哪些,任务队列呢?
4.Handler,MessageQueue,Message,Looper了解吗?



  • 性能优化:各项指标优化让app达到最佳运行效果。(★★★★

1.启动和响应速度优化:阿里魔镜检测首帧显示时间,耗时方法检测
2.网络优化:网络缓存,长链接,链路复用,连接池。
3.内存优化:内存泄漏内存溢出等,业界常用的解决方案
4.UI优化:三大常用布局,线性,约束和相对布局,按需加载。
5.Apk安装包体积减小的优化。



  • 建议(★★★★

架构方面:MVP和MVVM(MVP必须要了解)
路由:ARouter框架(可以了解,加分项)
存储:数据持久化的解决方案,序列化与反序列化的原理。
底层原理:反射,动态代理,注解等。(必须了解,造轮子离不开的东西)
技术:Kotlin和Flutter(对于校招生应该是加分项,可以了解一下。)
阅读源码的能力:可以拿OkHttp,View的源码练手。
编程风格:可复用,可扩展,比如Java中的多态,接口,抽象等等。
代码管理仓库:git指令的使用






二.技术深度

上面的知识掌握以后,技术广度可以,还有需要注意学习的地方。

  • Android

1.Zygote,Launcher进程
2.AMS,WMS,Context的理解
3.IPC和Binder(IPC进程间通信)
上面处理IPC和Context,其他可以选择性掌握,也不一定都会问。这部分内容都是比较难的。


  • Java

1.Java虚拟机
2.Java多态的原理
3.反射,动态代理,注解
4.Java运行时内存
关于Java的深度远不止这些,建议阅读《深入了解Java虚拟机》这本书。



三.建议

现在已经10月了,距离春招还有半年左右的时间,其实时间真不多了。

假设串行执行:
1.《Android开发艺术探索》和《Android进阶之光》两本书大概需要啃一个月。
2.计算机基础知识如数据结构,计算机网络,数据库,操作系统突击复习半个月。
3.算法大概需要在leetcode刷几十道中等难度的题。时间未知
4.简历上至少需要两个拿得出手的项目,图书管理系统就可以pass了。假设之前没有比较厉害的项目,要花一个月做项目。
大三上学期课程还是挺多的,加上上学期是网课,大家都懂的。所以到2021/01/22,还有大概四个月,周末时间大概有一个月。如果抓紧一些,大概可以挤出两个月空闲时间吧。

时间真的很紧啊
  • 项目带动学习

这个就是一边做项目一边学习相关技术。(上上之选)

  • 开源项目来帮您

开源项目改改,深入源码分析。(时间不够可以尝试一下)

现阶段最重要的仍是提高技术和做项目吧。加油,送给学习Android的学弟学妹们。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!