2013一位 Android 中级程序员的跳槽面经,成功拿下大厂 offer
前言
在这个竞争激烈的行业中,只有优秀的 Android 工程师才能够生存,需要我们能够为客户提供的最佳技术和资源,需要有优秀的开发工具,保证以最佳质量以及高效时间来构建。
在同一家公司里呆久了,容易不知道外面市场的行情变化,所以通常建议大家定期去了解一下外面的技术栈行情,即使对于大厂的员工也是如此。
当时群里就有一名Android 中级开发因为一些原因去年离职了,今年找工作,结果没有什么面试机会。
就让我帮忙分析,一般而言没有面试机会基本上就是简历有问题需要修饰。
我就直接让他发一份简历过来,看了一眼就明白了。这个兄弟就是在一家公司呆太久了,他这个简历估计还没有现在应届生的看着舒服。
当时就直接和他说了原因,以及一些现在面试的技巧。
前面文章有写简历的修改和面试前的准备
不到半月,就和我说他现在入职了一家大公司,也说了说他面试就经历,我就顺便分享出来给大家涨涨经验。
面试过程
自我介绍
自我介绍看起来很简单,但是需要你在2分钟内把自己的程序员这几年的项目经历清晰的讲出来。听起来不难,确实对于现在一直在面试的人来说很简单,可是如果你很久没有面试了就会结结巴巴,这样一来给人的第一印象就不好。
这位兄弟自己找的朋友进行模拟面试的时候,自我介绍就栽了。不过多说几遍后也是不成问题。
笔试,刷过题的就不是问题。
项目经历
难点基本上是这一关,而且不同以往。如今的面试官都喜欢项目和八股文结合问。
这个项目我看你用到了啥啥之类的,你是怎么运用的,问完就话锋一转问底层。
Android面试躲不过Handler和Binder
在项目中,各模块代码运行在不同的进程(线程)中,想要真正理解安卓的这几大服务,势必要掌握安卓的通信机制,而安卓最主要的两个通信机制就是Handler和Binder。
Binder机制在Android中的地位举足轻重,我们需要掌握的很多原理都和Binder有关:
系统中的各个进程键的通信
Android系统启动过程
AMS、PMS的原理
四大组件的原理(比如Activity的启动)
插件化原理
系统服务的Client端和Server端的通信原理(比如MediaPlayer和MeidaPlayerService)
可以说Binder机制是掌握系统底层原理的基石。Handler的地位也是同样的原理。
现在的业界有一句话是这样说的:技术好的未必弄得懂底层,但是底层基础好的学起技术来很快。所以,大公司在挑选公司人才的时候,更加看重的是应聘者对底层原理的掌握和理解。
项目经验这方面他自己之前做过准备 基本上问题都能回答,技术面也就没有什么难度。
HR面试
有些人可能会认为这一关面试无关紧要,一般来说技术面试过了就基本上稳了。
但是如果你面试的是大厂,那你就要小心了。这些负责招人的有可能就是你们的技术老大或者部门负责人。
他(她)是有一票否则权的,而且也会问你一些技术问题。
没有拿到offer之前都应该持正态度。
面经虽然有参考性,但是最重要的还是你自身的技术水平如何,作为一个 Android 开发者,不仅要打好自身基础,更重要的是要建立起自己的知识体系, 你要知道知识是碎片化的,建立知识体系会让自己对技术的运用更加融会贯通,往“T 型”人才发展;
技术上的成长往往是会花费很多时间的,但是利用这些时间帮你技术上更上一层台阶进入大厂,岂不妙哉?
所以这里也就没有放面试题。
现在的知识点就是那些,基本上,翻来覆去就是那些换汤不换药的问法。但是现在大家上班要写业务代码,下班又是家庭琐碎,要想自己静下心来好好学习根本不可能,仅仅只是有用信息的筛选就足够麻烦。
不如掌握Framework的这些底层原理,这里分享一份Framework的学习资料!
扫码领取完整文档
《Android Framework 开发揭秘》
目录
第一章 系统启动流程分析
● 第一节 Android启动概览
● 第二节 init.rc解析
● 第三节 Zygote
● 面试题
第二章 Binder解析
● 第一节 宏观认识Binder
● 第二节 binder的jni方法注册
● 第三节 binder驱动
● 第四节 数据结构
● 第五节 启动service_manager
● 第六节 获取service_manager
● 第七节 addService流程
● 第八节 Binder面试题全解析
第三章 Handler解析
● 第一节 源码分析
● 第二节 难点问题
● 第三节 Handler常见面试题
第四章 AMS解析
● 第一节 引言
● 第二节 Android架构
● 第三节 通信方式
● 第四节 系统启动系列
● 第五节 AMS
● 第六节 AMS面试题解析
第五章 WMS解析
● 第一节Activity与Window相关概念
● 第二节 Android窗口管理服务WindowManagerService计算Activity窗口大
● 第三节Android窗口管理服务WindowManagerService对窗口的组织方式分析
● 第四节 Android窗口管理服务WindowManagerService对输入法窗口(Input
● 第五节 Android窗口管理服务WindowManagerService对壁纸窗口(Wallpap
● 第六节Android窗口管理服务WindowManagerService计算窗口Z轴位置的过程分析
● 第七节Android窗口管理服务WindowManagerService显示Activity组件的启
● 第八节Android窗口管理服务WindowManagerService切换Activity窗口(A
● 第九节 Android窗口管理服务WindowManagerService显示窗口动画的原理分析