Android笔试面试指南

本篇文章已受权微信公众号 guolin_blog (郭霖)独家发布 本人小楠——一位励志的Android开发者。php

个人公众号:html

公众号:Android开发进阶

前言

最近开始秋招了,最近也陆陆续续看到了不少后辈分享的面试经历,想当年身边的大神也分享过各类各样的(奇葩)面经,自身也看过、经历过,所以有感而发,写一篇总结性的文章,但愿可以帮到正在找工做的朋友们,尤为是针对于正在忙于春招和秋招的大学生,另外也算本身的学习总结、为之后跳槽作准备。程序员

写这篇文章最初的想法是本身最近在研究Android源码的时候,发现一个有趣的问题:面试

为何Intent(或者说Bundle)中携带的数据须要支持序列化呢?
复制代码

对于这个问题,相信不少初学者根本就不会去思考它,看似简单,可是这其中就涉及到了Binder机制的内容。万一被问到,企业仍是可以区分出真正深刻理解Android的人的。首先,Intent是四大组件之间通讯的桥梁,也被称做为信使。Intent能够用于不一样进程间组件的通讯,因为进程间通讯只支持一些比较基本的数据类型以及实现了序列化的类型,所以Intent中的数据须要符合进程间通讯的规范。算法

首先在这里声明:数据库

  1. 下面内容可能涉及一些非本人原创的内容,这里并不是属于广告性质,只要是对你们有所帮助的,我都将分享给你们。
  2. 笔者推荐的文章/书籍通常都比较浅显易懂(尤为是指笔者本身的文章),不会涉及过多深奥的内容,若是须要深刻,请百度一下。
  3. Android技术博大精深,一篇文章不可能总结完。

开始表演.jpg

1、基础知识篇

####1. 虚拟机相关知识基础设计模式

重点关注:性能优化

  1. 虚拟机的内存管理
  2. 虚拟机的垃圾回收
  3. 虚拟机的种类:Java虚拟机、Android两种虚拟机的对比
  4. class与dex文件
  5. Class加载

这里推荐笔者的文章:微信

  1. 虚拟机:www.jianshu.com/p/e00971e07…
  2. class与dex文件:www.jianshu.com/p/2eb518941…
  3. Class加载:www.jianshu.com/p/37cad7a90…

####2. Java基础:网络

尤为须要深刻理解容器、I/O、线程、反射、泛型等。尤为是容器的源码实现。

相关文章网上比较多,笔者只推荐一小部分:

  1. 笔者本身的文章:www.jianshu.com/p/aaf8594e0…
  2. 《Java面试宝典》
  3. 《北京圣思园JAVA视频教程全套》:download.csdn.net/detail/jiex…

####3. Kotlin基础

这里推荐:

  1. Bennyhuo的视频《Kotlin系统入门与进阶》coding.imooc.com/class/108.h…
  2. 也能够直接看笔者看视频总结的文章《Kotlin 学习之旅》:www.jianshu.com/nb/14405738
  3. 更多新知识,关注Bennyhuo的Kotlin公众号,直接微信添加公众号搜“Kotlin”

####4. 数据结构与算法

这里重点关注:

  1. 基本的数据结构
  2. 基本的排序算法
  3. 算法的时空复杂度

推荐:

  1. 书籍:《大话数据结构》
  2. 视频:《小甲鱼数据结构》
  3. 有条件的看动脑学院Danny的《算法数据结构》
  4. 笔者的排序总结:www.jianshu.com/p/7d70a9b4c…
  5. 算法题:牛客网左程云的算法视频、他的相关书籍《程序员代码面试指南》

5. 操做系统基础与计算机网络

这个就不用做太多介绍了,大学的基础课。

其中,值得注意的是:

  1. 操做系统方面的知识:推荐《操做系统面试重难点总结》www.jianshu.com/p/d254b138d…
  2. 计算机网络方面,注意TCP/UDP,三次握手;HTTP/HTTPS等知识

最后,仍是推荐微信公众号『码个蛋』特约做者--Ruhengwww.jianshu.com/u/0fa6f5d09…

6. 设计原则与设计模式、架构

推荐:

  1. 《Android源码与设计模式》,谁看谁知道,好书不解释,一本就够了。
  2. 架构、思想方面的知识,推荐去看潭州学院的架构视频,也推荐上有心课堂学习Stay的架构课程。

7. 版本控制与持续集成、自动化构建、Gradle

  1. 版本控制推荐学习Git和GitHub,能够去看廖雪峰大神的文章。也能够看笔者总结的文章《Git学习笔记》:www.jianshu.com/p/7eb0f4667…。另外,想去手机厂商的朋友,最好也掌握如下Repo。
  2. 持续集成、自动化构建平台搭建:有兴趣的朋友去研究jenkins
  3. Gradle:推荐徐宜生大神的《Android神兵利器》

2、Android面试常问知识篇

Android基础就再也不赘述了,相信你们都比较熟悉,找一个系列的博客或者买本书籍补习便可,也推荐去看黑马的Android视频。重点关注四大组件的生命周期、Activity启动模式、Service等等。

推荐:

  1. 郭霖大神的《第一行代码第二版》
  2. 任玉刚大神《Android开发艺术探索》,这本书讲解面试常见的基本知识之余,做了必定的拓展。

下面主要介绍一下Android基础知识之外的。

1. Android系统架构、源码分析

招聘信息上面常常写“熟悉Android系统架构”、还会常常被问“有没有看过什么源码”,那么到底什么是系统架构呢,参考文章:

  1. 笔者的《Android 源码分析之旅》系列文章,www.jianshu.com/nb/10424206
  2. 包建强的源码分析系列文章《写给Android App开发人员看的Android底层知识》:jax.cnblogs.com/
  3. 《Android开发艺术探索》中关于源码、机制的相关章节
注:做为Android APP开发人员,源码没必要深刻掌握代码每一个细节。可是有些东西,掌握了就会加深对Android的理解,这就是源码的魅力所在,它深深地吸引着笔者。这也是区分各位应聘者的门槛。

至于其它的通常的框架源码的话,例如:

  1. 热修复与插件化框架源码
  2. Android路由、组件化源码
  3. 异步框架
  4. 新的动画框架
  5. 网络请求框架源码(Retrofit的话推荐去有心课堂看视频)
  6. 图片加载框架源码(Glide、Fresco等)
  7. 数据库框架源码(留意2017年新出的框架)

这些其实都应该重点关注一下的,面试的时候大体可以说出一个流程或者原理。侧重点看什么须要根据公司而定,若是公司是搞电商的,那么网络请求、图片加载确定少不了。

每样挑一个比较牛逼、或者比较新的框架去研究便可。最好其它框架也要懂个大体的原理、会使用。

2. 新技术

学习一些插件化、热修复框架,Android路由、组件化、异步框架、新的动画框架。

例如:

  1. 插件化:滴滴(任玉刚)的插件化框架VirtualAPK、奇虎360的插件化框架RePlugin等
  2. 热修复:阿里巴巴第三代非侵入式移动热修复解决方案(注意不是AndFix哦)等
  3. 路由:ARouter等
  4. 组件化:Atlas等
  5. 异步:RxJava、RxAndroid等一系列框架等(推荐有心课堂)
  6. 新的动画框架:Lottie等

以上只是列出一些比较常见、比较新的框架,具体深刻修行须要靠我的。应付面试的话,只须要大体能说出原理、使用体验过也就差很少了。资料网上比较多,就不逐个推荐了。

3. 性能优化

性能优化也是Android面试中常问的点,这里推荐一些相关资料:

  1. 腾讯音乐大神的书籍:《Android应用性能优化最佳实践》
  2. 笔者的系列博客《Android 性能优化之旅》:www.jianshu.com/nb/10374109
  3. Android性能优化官方文档
  4. 《Android开发艺术探索》中的关于性能优化的相关章节

4. 自定义View与动画

这是Android中比较难的一部分知识,须要平时就不断积累、锻炼,相关的文章比较多,就不推荐了。

这里推荐扔物线大神的自定义View文章:hencoder.com/ui-1-1/

5. NDK开发(含JNI)

NDK开发也是用人单位区分应聘者的手段之一,企业不必定要用到,可是能够经过是否掌握NDK来筛选人才。相对来讲,大公司比较喜欢使用NDK技术。

相关推荐文章:

  1. 笔者的《Android NDK开发之旅》系列博客:www.jianshu.com/nb/10785521
  2. 各类C/C++、Linux资料,网上比较多
注:若是想去手机厂商的话,最好懂一些Linux的基本命令、adb命令、Ubuntu/MAC的使用

6. 项目实战

  1. 推荐上菜鸟窝官网随便买一个项目视频学习
  2. 推荐去找个小公司实习或者接个外包
  3. 上网(例如GitHub)找一些成熟的、完整的项目学习,模仿

3、笔试篇

这里推荐你们上牛客网www.nowcoder.com/刷题,笔试离不开上面的基础知识的积累,所以这里再也不赘述。

4、常见招聘网站

下面介绍一些笔者知道的常见的招聘网站:

  1. 智联招聘
  2. 拉勾网
  3. 海投网:这个主要针对应届毕业生,上面不少宣讲会消息
  4. 各个公司的官网的招聘版块

最好都对应装一个APP,及时掌握最新的招聘信息,及时投简历过去、参加宣讲会、笔试。

最后,重点推荐一个网站:看准网,这个网站上面有各类各样、各个公司的面试经历。面试前上去看看,搜一下,每每可以找到不少面经,提早准备面试。

另外,推荐安装一个天眼查APP,随时查询是否是正规的公司!!!这一点很重要,否则的话,当心被骗

5、简历篇

推荐:

  1. 在线简历制做平台:五百丁,最好开一个永久会员,能够参考一下载制做好的简历
  2. 有能力的,找一些比较好的PS格式的简历,本身用PS去修改
  3. 不缺钱的,上淘宝找人作

另外,关于简历的书写与包装,必定要多参考牛逼的人的简历,下面给出两篇参考文章:

  1. 《你的Android简历都差在哪里》:http://www.jianshu.com/p/bc428793c114?mType=Group
  2. 《Android 求职简历》:http://www.jianshu.com/p/5a46c2b7e9f0

最后,晒出当年笔者的渣渣简历(其实也就去年,哈哈):

个人简历.jpg

PS:

  1. 头像(照片)只是展现用(这是展现版本),实际投出去的简历头像千万不能这么吊,由于这是对HR的一种不尊重,这是值得重视的。
  2. 简历与你所准备的内容必定要充实、注重能力与技术,而不是各类校园、社会经历,由于这是技术简历,你不是去应聘销售。
  3. 必定要积极向上,体现你对这个行业的热爱(例如笔者给本身的简历P了好多Android机器人,哈哈)。
  4. 笔者当年的水平也就那样了,别喷!
  5. 简历必定要学会包装。

6、技术面

首先,给出几个注意点:

  1. 面试中必定程度的装逼是须要的
  2. 适当的交谈能力是必须的,这个须要平时多练习
  3. 被问到不懂的时候,没必要强行装逼,能够虚心请教,或者适当转移话题
  4. 态度必定要积极向上,对这个公司充满期待与好奇

下面给出一些推荐资料:

  1. 笔者的《Android面试--纸上谈兵系列》:www.jianshu.com/p/8500d42e3…
  2. 黑马程序员论坛上面的一些面试经历,例如:bbs.itheima.com/thread-1963…bbs.itheima.com/thread-2602…bbs.itheima.com/thread-2235…(笔者当年但是所有都看完,而且用Word文档保存起来了)
  3. 黑马程序员论坛Java板块上面的一些笔记,着重推荐《阳哥的Android面试宝典》:bbs.itheima.com/forum.php?m…。另外还有其余的一些笔记,例如:bbs.itheima.com/forum.php?m…bbs.itheima.com/thread-2247…
  4. 关注微信公众号“安卓笔记侠”,上面的《Android面试一天一题》系列文章以及一些面试实战的文章都挺不错。
  5. 简书上面的Code小生的《Android面试专辑》www.jianshu.com/c/1009682ba…

注意:

《阳哥的Android面试宝典》与黑马程序员出版的书籍《Android 面试宝典》是同样的,有条件的同窗推荐去买本书。书上补充了不少知识,例如简历、面试过程。

7、HR面

终于来到最后一个环节了,过了HR面,你几乎能够拿到Offer了。

HR面中的注意点:

  1. HR主要想知道的你的工做态度、对行业的热爱程度
  2. 各类职场能力:沟通、决策能力等
  3. 穿着得体便可,不能太随便,又不能太正式。
  4. 必定要懂得HR的面试套路,对常见问题要有所准备,尤为针对女HR。

这里,推荐笔者本身写的一篇关于HR面试的文章:《HR面试小总结--不按期更新》www.jianshu.com/p/6ba84767c…,但愿可以帮到你们。

结束语

笔者的水平与能力有限,只能帮你们到这里了,Android知识体系博大精深,一篇文章不可能彻底掌握,这里只介绍了一些面试常见的知识点。

最后,给你们喂点鸡汤:www.jianshu.com/nb/14294090

但愿你们在准备、宣讲会、笔试、面试的过程当中可以驾轻就熟,拿到本身心目之中最理想的Offer。

offer.jpg

若是以为个人文字对你有所帮助的话,欢迎关注个人公众号:

公众号:Android开发进阶

个人群欢迎你们进来探讨各类技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)

相关文章
相关标签/搜索