有了这篇 Android 面试葵花宝典, 你就离进入大厂不远了

19800653ea3125a1b909557fa0c34c1e8682f73d11e512e6076e645891e6966b.png

跳槽,这在 IT 互联网圈是非常普遍的,也是让自己升职加薪,走上人生巅峰的重要方式。那么作为一个普通的 Android 程序猿,我们如何才能斩获大厂 offer 呢?

疫情向好、面试在即,还在迷茫踌躇中的后浪们,如何才能在面试中让自己脱颖而出,让面试官眼前一亮?

下面,我将结合我过往的面试经历来帮大家分析,在 Android 大厂面试过程中,我们需要注意的关键点以及我们需要做怎样的准备。

本文适合人群: 刚毕业的大学生、缺乏面试经验的求职者、致力于在大厂社招中寻找 Android 相关机会的开发者等。

文章末尾我将分享几篇干货满满的面试文章以及资料给大家,记得一定要好好收藏哦!!

面试前的准备

在这部分,我将详细讲解面试前我们需要做哪些方面的工作,以保证我们在面试过程中更加顺利。

准备一份漂亮的简历

一份漂亮的简历就是你进入大厂的敲门砖。

网上有很多教程教大家如何写出一份漂亮的简历,这里我就不做重复劳动了,直接分享给大家一个简历模板:https://github.com/geekcompany/ResumeSample

今天我就要逆向思维讲解一下什么样的简历是糟糕的,这里大家一定要检查一下自己的简历有没有如下的毛病:

自我介绍要背得滚瓜烂熟

自我介绍可以说是面试的必要环节,无论你参加什么形式的面试,面试官一定会首先让你做一个简单的自我介绍,所以自我介绍这一关一定要准备充分,最好做到烂熟于心。

自我介绍不是简历的重复背诵。我们在做自我介绍的时候,一定要把握好重点,切忌过长或者过短。

自我介绍的过程,也是一个自我推销的过程。你可以把面试官当作你的顾客,而把你自己当作推销的产品。你要做的就是使用最真诚的方式,把你个人的工作经验、优点、能力与面试公司的岗位需求紧密结合起来,让面试官相信招这个人进来确实可以分担工作的压力。

那么我们在做自我介绍的时候,需要介绍哪些内容呢?下面我简单列举一些内容供大家参考:

自我介绍不易过长,准备 2~3 分钟即可。与此同时,你平时还需要多加练习,根据不同的公司、不同的场合以及面试的不同岗位,进行不同内容的自我介绍。

面试前多刷刷面试题

面试前多刷面试题,是对面试最起码的尊重。

虽然我在这里不提倡大家临时抱佛脚,但是适当地抱一抱佛脚也比那些什么都不准备,就直接裸面的人要好很多,至少你的态度是端正的。

临近年终,很多人开始蠢蠢欲动了,这段时间面试的时候,我就经常能够面到几个啥都不准备,直接甩两膀子就过来面试的。面试基本上是一问三不知,要么就是说之前看过忘了...更有甚者直接就说,我就是出来面个试感受一下面试气氛以及最新行情的...

拜托,能不能给予面试最起码的尊重?你来面试也是需要花费面试官时间的,简单准备一下不香嘛?万一你运气好,恰好这家公司职位扩充,降低面试要求了呢?你这么随便,岂不是把白花花的机会全都给浪费掉了嘛!

面试前先了解一下应聘的公司及职位

提前了解一下应聘的公司及职位内容,可以避免一些不必要的尴尬:

“你知道我们公司是做什么的吗?”

“emm...”

“你知道我们这个岗位的工作内容吗?”

“emm...”

(老哥!你真的是来面试的吗?!)

如果你是面试官,你会用一个都不知道公司和岗位职责是什么的人吗?这至少说明了 2 个问题:

所以我们在面试前,一定要先在网上搜索一下应聘公司的详细资料以及职位信息:百度、脉脉、企查查、看准网,企业官网等都可以获取到。

那么提前了解这些信息对我们面试会有哪些方面的帮助呢?

image

面试过程中需要注意的点

保持良好的心态

只要我们在面试之前做好充足的准备,那么我们就应该有足够的信心去面对接下来的各种提问,我们唯一需要做的就是保持良好的心态,下面我简单归纳几点:

注意基本礼仪

无论任何时候,我们在与别人交谈的过程中都应当遵守最基本的礼仪。

合理运用表达技巧

一个人的语言表达艺术标志着你的成熟和素养。尤其是在大厂中,很多问题其实是可以通过沟通来解决的,所以一个人的语言表达能力往往也是面试官需要考核的内容。

我们应该学会在面试过程中合理运用表达技巧,去凸显自己的语言表达能力。

那么我们应该怎么做呢,这里我仅仅是简单列举一些供大家参考:

多做一些积极的沟通

我们在面试过程中,难免会遇到一些我们平时从未接触过的内容,如果这个时候你只是简单地回复"我没做过"、"我不了解"、"之前工作没有这方面的要求"之类的消极回答,最终的面试总评可能会被标上不善于思考和分析问题,从而导致面试分数大打折扣,因为没有哪个面试官是喜欢不善于思考和分析的应聘者的,尤其你应聘的还是一个研发岗位。

这里我建议大家在面试过程中最好还是多做一些积极的回答,少做一些消极的回答,除非你对这个问题是彻底不了解。

这里我们可以先和面试官通个气,表明自己平时对这块接触得不多,不过可以简单分析一下。如果这个时候面试官没有明确你不需要继续进行下去的话,你就可以简单思考和分析一下,然后提出你的观点。如果遇到一些好一点的面试官,说不定还会提醒你一下,或者和你一起分析,这就非常棒了。

面试禁忌

我们在面试的过程中,一定要注意避雷,以下列举出来的禁忌一定不要去尝试触碰!

image

Android 技术面试一般涉及的要素

上文主要讲解了一些面试通用的技巧,下面就让我来简单讲解一下 Android 技术面试中主要涉及的内容有哪些。

Java 基础

面试 Android 岗位,Java 基础那是必问的。如果项目中使用 kotlin 比较多的话,可能还会问一些 kotlin 相关的问题。

Java, 作为一门基础语言,考核的是应聘者是否具备扎实的基本功。很多培训班或者非科班出身的人,经常会栽在这一环节。一般这个环节的问题答不上来的话,基本上是提前结束了。

那么常见面试的 Java 基础问题有哪些呢?下面我们简单列举一些供大家参考:

以上基本上是面试 Android 岗位的常见考点,所以我们必须重视对 Java 语言的学习和理解,即便你在平时工作中使用 kotlin 较多,也不能忽视对 Java 基础知识的巩固和学习。

设计模式

设计模式其本身其实也是属于 Java 基础范畴的,只不过部分大厂对设计模式的要求较高,所以会单独拧出来进行考察。

很多大厂都喜欢招那些对代码有洁癖,有高追求的人进来。在他们眼里,追求的并不是这个功能如何实现,而是这个功能如何更好地实现。只要性能不佳或者扩展性不够强的话,结局基本上就是推翻重构。

其实设计模式的考核因人而异,面试官并不会过于为难你,因为设计模式其本身就是个非常虚的东西,很多人即使是了解设计模式,在平时的工作中也不一定会使用它们。所以设计模式的考核更多的是加分项,并不是必要项,所以即使答不上来其实也是没什么关系的。

但是如果你在简历中写了**"熟悉/精通常用的设计模式"**的时候,那么你就要小心了,因为你可能将会面临一波直击灵魂深处的拷问。

那么设计模式一般会考察哪些内容呢?下面我们简单列举一些供大家参考:

以上我只是简单列举了一些设计模式常见的考点,因为设计模式的考核相对灵活,因此还是以实际应用场景为主。

例如,面试官可能会问你:简单列举几个你常用的设计模式,谈谈它们的优缺点以及使用的场景。

这个时候,大多数做 Android 开发的人脑海里可能只剩下单例模式、观察者模式这些个常常被他们滥用的设计模式。

这里我并不推荐大家说这两种设计模式,为什么呢?因为这两种设计模式并不能很好地诠释设计模式的美。而且你要知道任何东西听多了,人的心理是受不了的,这很容易导致面试官心态崩溃。

就拿我来说,只要一有人无脑回答单例模式或者观察者模式的时候,我都会情不自禁地提高问题的难度。你要知道,就是一个简简单单的单例模式,我也能给你问到心态崩溃。

所以听我的劝,不要一提到设计模式,你脑海里就只剩下单例模式或者观察者模式,多了解了解其他设计模式,对你会有很大的帮助。

注意:对设计模式不够了解的,可以参考我开源的 architect-java 项目,里面有我自己整理的一些简单的算法和设计模式的讲解,可以说非常实用。

Android 基础

Android 基础,不用说这是面试 Android 岗位必须要问的内容。要是连这个都答不上来,基本你的面试就提前结束了。

Android 基础是任何 Android 面试都需要考核的内容。不过这也是按级别而定,一般高级开发工程师的面试,Android 基础只是一笔带过。

那么 Android 基础有哪些呢?下面我们简单列举一些供大家参考:

以上内容是作为一名合格 Android 开发工程师所必备的知识点,也是常见的考点,请务必每条都要清楚掌握,这样你在面试过程中才能游刃有余。

Android 源码分析

Android 源码分析,算是要求较高的考核。不过这在大厂面试中非常普遍,因为很多大厂对 Android 源码的分析和理解都有相当高的要求。

那么常见的 Android 源码分析有哪些呢?下面我们简单列举一些供大家参考:

阅读源码是一件相对枯燥的事情,如果平时工作中涉及不到的话就很难坚持下去,因此需要非常强的毅力。不过话又说回来,如果你能够熟练地掌握 Android 源码的话,那么就非常有机会进入大厂了。

Android 进阶技能

这部分一般是对 Android 高级开发工程师的考核,主要涉及的点主要是一些性能优化,技术细节方面的问题。

要想成为一名高级开发工程师,性能优化以及架构设计永远都是绕不开的话题。做技术如果只是广而不深的话,是不可能成为一名高级开发工程师的。只有不断提升自己的不可替代性,才能提高自己的价值。

那么常见的 Android 进阶技能有哪些呢?下面我们简单列举一些供大家参考:

以上只是 Android 进阶技能的一小部分通用性技术,除此之外还有很多细分领域相关的进阶技能。总之,如果这项技术是你掌握而其他人普遍不了解的,那么它就属于进阶技能。

新技术研究

Android 这些年的技术发展基本上已经趋向成熟,所以对于新技术的研究也并不是那么看中,可能面试官就是随口问一下,想要知道你的学习欲望强不强罢了。

那么有什么新的技术可以在业余时间进行研究呢?下面我们简单列举一些供大家参考:

上面的内容,其实很多已经算不上新技术了,如果你现在还不了解的话,那么你最好花点时间了解一下,否则我只能说你是真的 out 了。

开源项目源码分析

开源项目源码分析和 Android 源码分析一样,也是考核应聘者对原理的理解。如果仅仅只是会使用而不对其原理加以了解的话,那么你也只能算是达到初级水平,这样是无法进入到大厂的。

那么开源项目的源码分析我们应该怎么做呢?首先我们需要带着问题一点点阅读源码,搞清楚其内部的实现逻辑,然后梳理出其大致的设计架构,画出 UML 图,最后总结出其中运用到的设计模式和思想。

那么有哪些优质的开源项目值得我们去研究其源码呢?下面我们简单列举一些供大家参考:

以上我列举的基本上都是我们平时开发过程中经常使用到的开源项目,认真研究和分析他们的设计思想和精髓,并积极运用到我们平时的编码当中去,可以让我们的技术得到质的飞跃!

算法

部分大厂对 Android 开发工程师的算法也是有一定要求的,这部分没有什么好说的,打开 LeetCode 去多刷刷题就可以了。

虽说 Android 开发工程师也需要掌握一定的算法,不过和那些专业做算法的相比肯定是没那么高的要求的,我们并不需要把 LeetCode 的每道题都刷一遍,只要把一些简单和中等难度的题刷一遍就可以了。

那么常见的 Android 算法题有哪些呢?下面我们简单列举一些供大家参考:

一个好的算法可能极大地提升应用的性能,如果你平时有心的话就会发现在 Android 源码中也经常能看到算法的身影,感兴趣的可以阅读一下 SparseArray 的源码。

Android 面试资料分享

资料不在于多,而在于精。下面我就简单分享一下曾经对我帮助比较大的几个面试资料。

最后

今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。不过光是看完而不去付出行动,或者直接进入你的收藏夹里吃灰,那么我写这篇文章就没多大意义了。所以看完之后,还是多多行动起来吧!

可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了 Android 中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。

另外,如果你有任何 Android 面试方面的问题,欢迎微信搜索公众号:【我的 Android 开源之旅】,届时我将回答你的疑惑!

我是 xuexiangjys,一枚热爱学习,爱好编程,致力于 Android 架构研究以及开源项目经验分享的技术 up 主。获取更多资讯,欢迎微信搜索公众号:【我的 Android 开源之旅】

  • Android

    Android 是一种以 Linux 为基础的开放源码操作系统,主要使用于便携设备。2005 年由 Google 收购注资,并拉拢多家制造商组成开放手机联盟开发改良,逐渐扩展到到平板电脑及其他领域上。

    310 引用 • 308 回帖 • 450 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    287 引用 • 1378 回帖 • 123 关注

广告 我要投放

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...