给Android程序员的一些面试建议

    |     2015年12月30日   |   面试   |     0 条评论   |    1204

应大家邀请写一篇 Android 应用开发面试笔记(不含 ROM、逆向)。面试决定进哪家、什么级别和待遇。作者面试别人的次数更多,下面从面试官视角说怎么把握一场面试。


一、什么是合适的候选者

结合百度面试官经验,公司想要的 Android 程序员大致是:本科及以上(名校更好);2 年及以上经验(名企更好);技术扎实,有追求和激情;沟通协作好。四条里第 3 条最重要。大公司即使岗位用不上那么深,也会问稍深的题来区分人。

沟通并不玄:面试本身就是沟通。听不懂问题、绕弯、转移话题都不好。不会就直接说「不好意思,这个我不太会」,甚至可以请教——面试也是学习。不必全对,大部分答出来且态度好就能过;态度差、技术再好也容易挂。

  • 礼貌和尊重
  • 听懂问题并直接回答
  • 谦虚谨慎、态度友好(坐姿别太随意,别得瑟)

学历不是硬门槛,学校一般但技术极扎实仍可能过。社招要 2 年左右,是因为对象本就该有经验;以百度为例,社招最低大约 T4,对应两年左右。满足「技术 + 态度沟通」就能过;名校名企是加分。不满足年限通常也难满足技术深度,特例没有参考意义。

由此可见,技术是面试结果的决定因素。下面按 Android 拆需要掌握到什么程度。


二、Android 面试要掌握的技术

一场面试不会全是 Android,还有编程基础。分类如下。

类别 描述
数据结构和算法 熟悉或者知道
Java 熟练掌握
Android 熟练掌握
设计模式和架构 熟悉

应用岗不需要极强算法,但也不能零。算法答不好问题不大,前提是 Java、Android 能答漂亮。社招挂在算法往往是 Android 也没答好:校招看基础,社招看深度和业务。设计模式中高级要求不高,单例、工厂、观察者等常见即可。

我对Android的理解 里对技术类别的划分:

类别 描述 开发者所需级别
基本知识点 熟练掌握 初中级
深入知识点 熟练掌握 中高级
基本知识点的细节 掌握 高级
系统核心机制 熟悉、掌握 高级、资深
琐碎的知识点 了解 所有级别

多数人目标是中高级:中级(百度 T4)要基本点 + 深入点;高级(T5)还要细节和系统核心机制。

  1. 基本知识点:四大组件、如何创建 Service、如何布局。必须熟练,难度不高。
  2. 稍微深入:AIDL、Binder、多进程、View 绘制、事件分发、消息队列。高级必须掌握,也是高频题;搞不定达不到百度高级标准。
  3. 基本点的细节:Activity 启动模式和标记位、Service 同时 start+bind 时如何停、AsyncTask 同步异步及使用限制。日常开发常忽略,一问特殊情况就慌。高级需要,看似刁钻答不出也不好看。
  4. 系统核心机制:主线程消息循环、主线程如何和 AMS 跨进程、SystemServer 里各种 Service、AsyncTask 原理。建议高级掌握,能理解运行体系。不是每场都问,技术含量高的大公司可能会问。
  5. 琐碎知识点:打开网页、打电话、发短信、定位、多点触控。重要但不难,现查就能做,面试基本不问。

1 和 5 大家一般都没问题;2、3、4 能 cover,面试题就难倒不了人。技术搞好,沟通态度跟上,通过面试会简单很多。


三、如何学习这些技术

主要指上面 2、3、4。并不轻松:要读源码(很多题答案在源码里);要主动学工作遇不到的技术——小项目更是如此。不知道学什么,就从前面举例开始,它们重要且常考。学习要积累:博客、笔记、Github 开源都可以。

想更快对准面试,可以读《Android开发艺术探索》。书里把 2、3、4 讲得很细。写作初衷是帮人长成高级工程师,后来读者反馈很适合面试,算是无心插柳。内容不多介绍,可看目录、样章和评价,不适合就不必买。

原文出处: 任玉刚(@任玉刚Coder)

一句话总结:社招过不过看技术深度加沟通态度;把 Binder、绘制、事件分发和系统机制吃透,比刷冷门 API 有用。

转载请注明来源:给Android程序员的一些面试建议
本文链接地址:https://ai.zhousir.top/?p=1108
回复 取消