本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布
本人小楠——一位励志的Android开发者。
我的公众号:
公众号:Android开发进阶前言
最近开始秋招了,最近也陆陆续续看到了很多后辈分享的面试经历,想当年身边的大神也分享过各种各样的(奇葩)面经,自身也看过、经历过,因此有感而发,写一篇总结性的文章,希望能够帮到正在找工作的朋友们,尤其是针对于正在忙于春招和秋招的大学生,另外也算自己的学习总结、为以后跳槽做准备。
写这篇文章最初的想法是自己最近在研究Android源码的时候,发现一个有趣的问题:
为什么Intent(或者说Bundle)中携带的数据需要支持序列化呢?
对于这个问题,相信很多初学者根本就不会去思考它,看似简单,但是这其中就涉及到了Binder机制的内容。万一被问到,企业还是能够区分出真正深入理解Android的人的。首先,Intent是四大组件之间通信的桥梁,也被称作为信使。Intent可以用于不同进程间组件的通信,由于进程间通信只支持一些比较基本的数据类型以及实现了序列化的类型,因此Intent中的数据需要符合进程间通信的规范。
首先在这里声明:
- 下面内容可能涉及一些非本人原创的内容,这里并非属于广告性质,只要是对大家有所帮助的,我都将分享给大家。
- 笔者推荐的文章/书籍一般都比较浅显易懂(尤其是指笔者自己的文章),不会涉及过多深奥的内容,如果需要深入,请百度一下。
- Android技术博大精深,一篇文章不可能总结完。
一、基础知识篇
1. 虚拟机相关知识基础
重点关注:
- 虚拟机的内存管理
- 虚拟机的垃圾回收
- 虚拟机的种类:Java虚拟机、Android两种虚拟机的对比
- class与dex文件
- Class加载
这里推荐笔者的文章:
- 虚拟机:http://www.jianshu.com/p/e00971e07e14
- class与dex文件:http://www.jianshu.com/p/2eb518941681
- Class加载:http://www.jianshu.com/p/37cad7a901b1
2. Java基础:
尤其需要深入理解容器、I/O、线程、反射、泛型等。尤其是容器的源码实现。
相关文章网上比较多,笔者只推荐一小部分:
- 笔者自己的文章:http://www.jianshu.com/p/aaf8594e02eb
- 《Java面试宝典》
- 《北京圣思园JAVA视频教程全套》:http://download.csdn.net/detail/jiexiaoai/5760705
3. Kotlin基础
这里推荐:
- Bennyhuo的视频《Kotlin系统入门与进阶》http://coding.imooc.com/class/108.html
- 也可以直接看笔者看视频总结的文章《Kotlin 学习之旅》:http://www.jianshu.com/nb/14405738
- 更多新知识,关注Bennyhuo的Kotlin公众号,直接微信添加公众号搜“Kotlin”
4. 数据结构与算法
这里重点关注:
- 基本的数据结构
- 基本的排序算法
- 算法的时空复杂度
推荐:
- 书籍:《大话数据结构》
- 视频:《小甲鱼数据结构》
- 有条件的看动脑学院Danny的《算法数据结构》
- 笔者的排序总结:http://www.jianshu.com/p/7d70a9b4c3da
- 算法题:牛客网左程云的算法视频、他的相关书籍《程序员代码面试指南》
5. 操作系统基础与计算机网络
这个就不用作太多介绍了,大学的基础课。
其中,值得注意的是:
- 操作系统方面的知识:推荐《操作系统面试重难点总结》http://www.jianshu.com/p/d254b138de03
- 计算机网络方面,注意TCP/UDP,三次握手;HTTP/HTTPS等知识
最后,还是推荐微信公众号『码个蛋』特约作者--Ruhenghttp://www.jianshu.com/u/0fa6f5d09040
6. 设计原则与设计模式、架构
推荐:
- 《Android源码与设计模式》,谁看谁知道,好书不解释,一本就够了。
- 架构、思想方面的知识,推荐去看潭州学院的架构视频,也推荐上有心课堂学习Stay的架构课程。
7. 版本控制与持续集成、自动化构建、Gradle
- 版本控制推荐学习Git和GitHub,可以去看廖雪峰大神的文章。也可以看笔者总结的文章《Git学习笔记》:http://www.jianshu.com/p/7eb0f4667cc1。另外,想去手机厂商的朋友,最好也掌握以下Repo。
- 持续集成、自动化构建平台搭建:有兴趣的朋友去研究jenkins
- Gradle:推荐徐宜生大神的《Android神兵利器》
二、Android面试常问知识篇
Android基础就不再赘述了,相信大家都比较熟悉,找一个系列的博客或者买本书籍补习即可,也推荐去看黑马的Android视频。重点关注四大组件的生命周期、Activity启动模式、Service等等。
推荐:
- 郭霖大神的《第一行代码第二版》
- 任玉刚大神《Android开发艺术探索》,这本书讲解面试常见的基本知识之余,作了一定的拓展。
下面主要介绍一下Android基础知识以外的。
1. Android系统架构、源码分析
招聘信息上面经常写“熟悉Android系统架构”、还会经常被问“有没有看过什么源码”,那么到底什么是系统架构呢,参考文章:
- 笔者的《Android 源码分析之旅》系列文章,http://www.jianshu.com/nb/10424206
- 包建强的源码分析系列文章《写给Android App开发人员看的Android底层知识》:http://jax.cnblogs.com/
- 《Android开发艺术探索》中关于源码、机制的相关章节
注:作为Android APP开发人员,源码不必深入掌握代码每个细节。但是有些东西,掌握了就会加深对Android的理解,这就是源码的魅力所在,它深深地吸引着笔者。这也是区分各位应聘者的门槛。
至于其它的一般的框架源码的话,例如:
- 热修复与插件化框架源码
- Android路由、组件化源码
- 异步框架
- 新的动画框架
- 网络请求框架源码(Retrofit的话推荐去有心课堂看视频)
- 图片加载框架源码(Glide、Fresco等)
- 数据库框架源码(留意2017年新出的框架)
这些其实都应该重点关注一下的,面试的时候大致能够说出一个流程或者原理。侧重点看什么需要根据公司而定,如果公司是搞电商的,那么网络请求、图片加载肯定少不了。
每样挑一个比较牛逼、或者比较新的框架去研究即可。最好其它框架也要懂个大致的原理、会使用。
2. 新技术
学习一些插件化、热修复框架,Android路由、组件化、异步框架、新的动画框架。
例如:
- 插件化:滴滴(任玉刚)的插件化框架VirtualAPK、奇虎360的插件化框架RePlugin等
- 热修复:阿里巴巴第三代非侵入式移动热修复解决方案(注意不是AndFix哦)等
- 路由:ARouter等
- 组件化:Atlas等
- 异步:RxJava、RxAndroid等一系列框架等(推荐有心课堂)
- 新的动画框架:Lottie等
以上只是列出一些比较常见、比较新的框架,具体深入修行需要靠个人。应付面试的话,只需要大致能说出原理、使用体验过也就差不多了。资料网上比较多,就不逐个推荐了。
3. 性能优化
性能优化也是Android面试中常问的点,这里推荐一些相关资料:
- 腾讯音乐大神的书籍:《Android应用性能优化最佳实践》
- 笔者的系列博客《Android 性能优化之旅》:http://www.jianshu.com/nb/10374109
- Android性能优化官方文档
- 《Android开发艺术探索》中的关于性能优化的相关章节
4. 自定义View与动画
这是Android中比较难的一部分知识,需要平时就不断积累、锻炼,相关的文章比较多,就不推荐了。
这里推荐扔物线大神的自定义View文章:http://hencoder.com/ui-1-1/
5. NDK开发(含JNI)
NDK开发也是用人单位区分应聘者的手段之一,企业不一定要用到,但是可以通过是否掌握NDK来筛选人才。相对来说,大公司比较喜欢使用NDK技术。
相关推荐文章:
- 笔者的《Android NDK开发之旅》系列博客:http://www.jianshu.com/nb/10785521
- 各种C/C++、Linux资料,网上比较多
注:如果想去手机厂商的话,最好懂一些Linux的基本命令、adb命令、Ubuntu/MAC的使用
6. 项目实战
- 推荐上菜鸟窝官网随便买一个项目视频学习
- 推荐去找个小公司实习或者接个外包
- 上网(例如GitHub)找一些成熟的、完整的项目学习,模仿
三、笔试篇
这里推荐大家上牛客网https://www.nowcoder.com/刷题,笔试离不开上面的基础知识的积累,因此这里不再赘述。
四、常见招聘网站
下面介绍一些笔者知道的常见的招聘网站:
- 智联招聘
- 拉勾网
- 海投网:这个主要针对应届毕业生,上面很多宣讲会消息
- 各个公司的官网的招聘版块
最好都对应装一个APP,及时掌握最新的招聘信息,及时投简历过去、参加宣讲会、笔试。
最后,重点推荐一个网站:看准网,这个网站上面有各种各样、各个公司的面试经历。面试前上去看看,搜一下,往往能够找到很多面经,提前准备面试。
另外,推荐安装一个天眼查APP,随时查询是不是正规的公司!!!这一点很重要,不然的话,小心被骗
五、简历篇
推荐:
- 在线简历制作平台:五百丁,最好开一个永久会员,可以参考一下载制作好的简历
- 有能力的,找一些比较好的PS格式的简历,自己用PS去修改
- 不缺钱的,上淘宝找人做
另外,关于简历的书写与包装,一定要多参考牛逼的人的简历,下面给出两篇参考文章:
- 《你的Android简历都差在哪里》:http://www.jianshu.com/p/bc428793c114?mType=Group
- 《Android 求职简历》:http://www.jianshu.com/p/5a46c2b7e9f0
最后,晒出当年笔者的渣渣简历(其实也就去年,哈哈):
我的简历.jpgPS:
- 头像(照片)只是展示用(这是展示版本),实际投出去的简历头像千万不能这么吊,因为这是对HR的一种不尊重,这是值得重视的。
- 简历与你所准备的内容一定要充实、注重能力与技术,而不是各种校园、社会经历,因为这是技术简历,你不是去应聘销售。
- 一定要积极向上,体现你对这个行业的热爱(例如笔者给自己的简历P了好多Android机器人,哈哈)。
- 笔者当年的水平也就那样了,别喷!
- 简历一定要学会包装。
六、技术面
首先,给出几个注意点:
- 面试中一定程度的装逼是需要的
- 适当的交谈能力是必须的,这个需要平时多练习
- 被问到不懂的时候,不必强行装逼,可以虚心请教,或者适当转移话题
- 态度一定要积极向上,对这个公司充满期待与好奇
下面给出一些推荐资料:
- 笔者的《Android面试--纸上谈兵系列》:http://www.jianshu.com/p/8500d42e3c91
- 黑马程序员论坛上面的一些面试经历,例如:http://bbs.itheima.com/thread-196394-1-1.html、http://bbs.itheima.com/thread-260207-1-1.html、http://bbs.itheima.com/thread-223527-1-1.html(笔者当年可是全部都看完,并且用Word文档保存起来了)
- 黑马程序员论坛Java板块上面的一些笔记,着重推荐《阳哥的Android面试宝典》:http://bbs.itheima.com/forum.php?mod=viewthread&tid=345460&highlight=%E9%9D%A2%E8%AF%95。另外还有其他的一些笔记,例如:http://bbs.itheima.com/forum.php?mod=viewthread&tid=345460&highlight=%E9%9D%A2%E8%AF%95、http://bbs.itheima.com/thread-224764-1-1.html
- 关注微信公众号“安卓笔记侠”,上面的《Android面试一天一题》系列文章以及一些面试实战的文章都挺不错。
- 简书上面的Code小生的《Android面试专辑》http://www.jianshu.com/c/1009682ba4cb
注意:
《阳哥的Android面试宝典》与黑马程序员出版的书籍《Android 面试宝典》是一样的,有条件的同学推荐去买本书。书上补充了很多知识,例如简历、面试过程。
七、HR面
终于来到最后一个环节了,过了HR面,你几乎可以拿到Offer了。
HR面中的注意点:
- HR主要想知道的你的工作态度、对行业的热爱程度
- 各种职场能力:沟通、决策能力等
- 穿着得体即可,不能太随便,又不能太正式。
- 一定要懂得HR的面试套路,对常见问题要有所准备,尤其针对女HR。
这里,推荐笔者自己写的一篇关于HR面试的文章:《HR面试小总结--不定期更新》http://www.jianshu.com/p/6ba84767c5d3,希望能够帮到大家。
结束语
笔者的水平与能力有限,只能帮大家到这里了,Android知识体系博大精深,一篇文章不可能完全掌握,这里只介绍了一些面试常见的知识点。
最后,给大家喂点鸡汤:http://www.jianshu.com/nb/14294090
希望大家在准备、宣讲会、笔试、面试的过程中能够得心应手,拿到自己心目之中最理想的Offer。
offer.jpg如果觉得我的文字对你有所帮助的话,欢迎关注我的公众号:
公众号:Android开发进阶我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)。
网友评论