身为一名阿里面试官告诉你,面对不同阶段的Android 工程师我们都会问哪些问题?

先介绍一下自己的情况,2013年java转到Android开发,在小厂待过,也去过华为,OPPO等大厂待过,18年四月份进了阿里一直到现在。被人面试过,也面试过很多人,有实习生的,也有社招的,也有校招的,下面就从这三个来说吧:

实习生

对于实习生而言的话,可能对于android方面的要求并不是特别的高,比较注重基础,但是基本的得会,比如:

  • 四大组件基本的概念以及使用。

  • Activity的生命周期流程,这是最基本的,但是你得清楚到底是啥时候调用各个方法,如一个页面(A)当前正在跟用户交互,弹出一个Dialog后,A的各个回调方法的流程调用情况等。

  • 数据存储的方式,五大存储方式的基本使用。

  • 掌握网络通信中httpClient和HttpUrlConnection基本使用,任何网络框架都是从最简单的写起,所以这个必须要知道。

  • 熟悉json解析,JsonObject,JsonArray等等的各种使用。

  • 会导入第三方库。

  • 线程(Thread,Runnable)的使用。

  • 主线程和其他线程的交互(Handler,AsyncTask)。

校招

对于校招而言的话,主要是对于计算机基础能力的考察,尤其bat等公司更甚,当然android方面也是需要的,主要考察的方面是:

  • 熟练掌握操作系统原理

  • 熟练掌握计算机网络

  • 熟练掌握数据结构以及算法

  • 良好的java基础

  • Android基本的都要会,在此基础上需要掌握一定的源码方面的知识,比如handler源码,AsyncTask源码,触摸事件机制,view的事件分发机制,清楚他们是如何由0到1完成各自的工作的。

  • 阅读过相关开源项目,对开源项目做过校正或者贡献的,Github好多小星星的~

社招

再讲之前先吐槽一下某大型互联网照片处理类公司(B)的HR,说好的校招,结果把我安排到社招相关去了,哔了狗了。

对于社招方面,个人了解的也比较少,主要是经历了B这个公司的面试,所以就面试的内容来讲讲吧,抛砖引玉好了,个人觉得社招尤其注重你在工作项目中的对于代码整体框架的整体认识以及熟练掌握程度:

  • 对于源码有一定的研究,Binder机制的理解,熟练自定View,能够对开源库进行再次的封装,改写等等,AWS,WWS等等有一定的认识。

  • 阅读过开源项目源码,清楚开源项目的构建历程,优缺点等。

  • 设计模式的理解与运用。

  • 对于上任公司项目的理解,能够清楚的讲解自己编写代码的思路。

  • 独立解决Bug的能力,优化代码的能力,重构代码的能力。

  • 良好的计算机基础。

最最重要的一点,我觉得是:对于技术是否有热情,有求知欲,愿意去尝试,去了解新的技术,这是我认为最重要的一点。

面试时需要掌握的一些技巧

一、语言表达能力

不管是在开发的过程中,还是平时的工作,大家都需要把问题描述清楚,交流无障碍,不然会给双方乃至多方造成困扰。

二、独立思考能力

开发过程中,问题是少不了的,我们一般会出些题考量一下面试者的思维方式和思维能力。

比如:出一些智力题和算法题。有时候我们还会问应试的人一个问题有多少种解法。

三、技术专业能力

包括java、Android、算法什么的,最好是既有技术的深度又有技术的广度,即“T型人才”,了解的多,而且有自己的专精领域。

技术方面主要从以下几个方向进行考察:

java:抽象类、接口、自动装配、反射、异常、注解、文件读写、线性安全、java 虚拟机、代码规范相关等等。

Android:handler的机制、自定义View、进程通信、事件处理、网络处理、内存优化、插件化思想、设计模式、类加载器等等。

算法:几大排序选一个、链表、二叉树等等。

具体问什么问题,怎么问,这个是不固定的,得根据应聘者的简历上面的面的描述,比如做过哪些项目,读过哪些源码,个人博客这些。然后就是要结合我们公司的项目和应聘者的意向岗位来进行提问。

以上仅仅针对个人情况写的,有什么写的不对的地方还请大家多多指正。

面试复习资料

针对以上情况,我这里把我花费大半年整理的系统学习资料及路线分享出来,希望寒冬的环境下也能带去一份温暖。

那么重点就来了,怎么复习呢?

首先你需要有一个知识点轮廓,对着这个轮廓不停的扩展、延伸,自己查漏补缺。因为虽然知识点就这么多,但是面试官的提问方式还是千奇百怪的,所以你需要通过知识点做相应的延伸,才能融会贯通。

道理其实大家都知道,但是实施起来就遇到了问题,所以这里我推荐最简单的方式:

脑图 + 书 + 视频

什么意思呢?具体解释一下,首先你需要有一个全面的知识点脑图,然后遇到不懂的地方就看书,千万不要去看博客,毕竟博客门槛真的太低了,最后要配合一些高质量的视频,用来巩固知识和开拓视野。

脑图已经给你整理好了,可以根据这个图自行进行查漏补缺和规划:

接下来就需要梳理知识,提升储备了!(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.五角星数表示面试问到的频率,代表重要推荐指数

视频呢?也给你整理了,够意思吧。

视频包含:

1、IPC机制相关面试题视频解析
2、项目相关视频解析
3、性能优化相关面试题视频解析
4、JVM从入门到着迷
5、源码相关试题视频解析
6、BAT面试总结分析

以上内容均放在了开源项目:github 中已收录,大家可以自行获取(或者关注主页扫描加微信获取)也可以【简信】我获取。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章