前言
最近有很多学弟学妹私信我,咨询Android学习路线的问题。我结合最近自己手机整理的秋季校园招聘中Android岗的面试经验,做个总结,仅代表个人看法,希望可以帮助到学弟学妹们!
一、企业要求
任职要求
下面是我在招聘网站上发现的几个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可以暂时不做了解,涉及跨进程的数据交互。当了解了跨进程通信后再学习。
二、推荐书籍
说实话,大三刚开始的时候我还是不能完整回答任何一个问题的。在用心学习阅读了很多Android方面的书籍之后,我的技术水平才真得得到了很大的提高。 这里我推荐一些我认为非常不错的Android发方面的书籍,推荐同学们认真阅读、学习与了解。
《Android开发艺术探索》
《Android进阶之光》
《Android进阶解密》
大神级直接推荐《深入理解Android内核涉及思想》,比较深涉及到Android`内核比较多,没有一定功力很难懂。《深入理解Android内核涉及思想》
下面总结的所有校招Android高频问题,在上面这些书中都有完整的答案,我认为是必读的书。每本书中都有相互重复的章节,可以有选择性的阅读。
三、Android校招高频考点
高频考点①(★★★★★)
UI:自定义View,View绘制流程,View事件分发机制,Android动画
1.如何用自定义View的方式实现一个圆角控件(大体思路) 2.View的三大绘制流程,每一步的作用 3.如何处理滑动事件冲突 4.几种Android动画的区别5.四大组件是基础,面试必问。
高频考点②(★★★★★)
网络相关:常用网络框架的底层原理以及实现细节。
1.你了解目前目前流行的的网络框架Retrofit和Okhttp的实现细节吗? 2.Retrofit的实现原理?动态代理技术了解多少? 3.OkHttp的五层拦截链分别是哪些?OkHttp中的缓存如何实现的?
高频考点③(★★★★★)
多线程编程:
Android中提供的实现多线程的HandlerThread,AsyncTask,IntentService等方法
1.他们的区别,适用场景,实现的原理 2.线程同步的几个方法,阻塞同步和非阻塞同步了解多少。 3.线程池有没有了解过,优缺点有哪些,任务队列呢? 4.Handler,MessageQueue,Message,Looper了解吗?
高频考点④(★★★★★)
多线程编程: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指令的使用
四、学习路线总结
0. 所有零基础的小白同学,初步入职计算机学习的开始步骤都跟猪学长之前写过的内容是一样的。都是算法数据结构刷题训练 计算机基础知识学习。
- 算法数据结构在扎实掌握了基本知识之后,大概需要在leetcode刷100 - 300道左右中等难度的题。这个数量不是必须的,主要看个人的编程能力,差一些的同学就多做一些。
2. 然后需要计算机基础知识如数据结构,计算机网络,数据库,操作系统。
3. 后面就要开始初步了解Android开发技术栈,首先推荐从《Android开发艺术探索》和《Android进阶之光》两本书开始学习入手,新接触Android编程的同学,大概需要啃几个月的时间。
4.简历上至少需要两个拿得出手的项目,图书管理系统就可以pass了。假设之前没有比较厉害的项目,要花几个月的做几个Android相关的项目。
5. 现在已经2020年10月了,距离春招还有半年左右的时间,其实时间真不多了。下面关于项目有两个额外的建议:项目带动学习这个就是一边做项目一边学习相关技术。(上上之选)开源项目来帮您开源项目改改,深入源码分析。(时间不够可以尝试一下)
6. 大三上学期课程还是挺多的,加上上学期是网课,大家都懂的。
所以到2021/01/22,还有大概四个月,周末时间大概有一个月。如果抓紧一些,大概可以挤出两个月空闲时间吧。时间真的很紧啊!
7. 现阶段最重要的仍是提高技术和做项目吧。加油,送给学习Android的学弟学妹们。
五、碎碎念
小编这份Android学习攻略,最早初版是写于去年2020年9月给一位读者的学弟学妹们的,因此才有了上面学习路线中的第5第6条。
虽然他来自一个双非的普本学校。但是在他的带领下,他的学弟学妹们中就有咋今年2021年,互联网22届暑期实习生招聘中,再次斩获大厂offer。
这就是优秀的学长给自己本校学弟学妹做了一个优秀的榜样与激励!!!
全文同学们如果仔细阅读完,就会知道,任何一个在校招中有机会进大厂的同学,无一例外都是在背后付出了极大的努力与辛苦的。
你大学期间做过的所有努力,敲过的每一行代码,认真看过的每一本技术书籍,努力研究过的每一个项目。都会在你将来的校招面试中,展现出来。
面试前复习路线参考
接下来分享的系统学习资源以详解各大互联网公司的 Android 常见面试题为主线,从面试的角度带你介绍必备知识点,以及该知识点在项目中的实际应用。
帮你在现在的基础上,重新梳理和建立 Android 开发的知识体系。无论是你短期内想提升 Android 内功实力,突破自己工作中的能力瓶颈,还是准备参加 Android 面试,都会在这份资料中有所一些收获。
从架构基础开始,分了8个模块来逐步从基础进阶到架构师的环节:
多余的话就不讲了,接下来将分享面试的一个复习路线,如果你也在准备面试但是不知道怎么高效复习,可以参考一下我的复习路线,有任何问题也欢迎一起互相交流,加油吧!
首先是超级详细得不能再详细的Android开发学习思维导图,因为图片实在是太大了,所以我就只把二级目录的内容放出来。
接下来就需要梳理知识,提升储备了!(Android移动架构师七大专题学习资源)
- 架构师筑基必备技能:深入Java泛型 注解深入浅出 并发编程 数据传输与序列化 Java虚拟机原理 反射与类加载 动态代理 高效IO
- Android高级UI与FrameWork源码:高级UI晋升 Framework内核解析 Android组件内核 数据持久化
- 360°全方面性能调优:设计思想与代码质量优化 程序性能优化 开发效率优化
- 解读开源框架设计思想:热修复设计 插件化框架解读 组件化框架设计 图片加载框架 网络访问框架设计 RXJava响应式编程框架设计 IOC架构设计 Android架构组件Jetpack
- NDK模块开发:NDK基础知识体系 底层图片处理 音视频开发
- 微信小程序:小程序介绍 UI开发 API操作 微信对接
- Hybrid 开发与Flutter:Html5项目实战 Flutter进阶
知识梳理完之后,就需要进行查漏补缺,所以针对这些知识点,我手头上也准备了不少的电子书和笔记,这些笔记将各个知识点进行了完美的总结。
然后再是通过源码来系统性地学习
只要是程序员,不管是Java还是Android,如果不去阅读源码,只看API文档,那就只是停留于皮毛,这对我们知识体系的建立和完备以及实战技术的提升都是不利的。
真正最能锻炼能力的便是直接去阅读源码,不仅限于阅读各大系统源码,还包括各种优秀的开源库。
刷大厂面试题备战,增加大厂通过率
历时半年,整理了这份市面上最全面的安卓面试题解析大全。
1.可以通过目录索引直接翻看需要的知识点,查漏补缺。 2.五角星数表示面试问到的频率,代表重要推荐指数
以上这些内容均免费分享给大家,需要完整版的朋友,点这里可以看到全部内容。或者点击 【这里】 查看获取方式。
万丈高楼平地起,成功只能靠自己!