21年最接地气的 Android 面试总结心得

Posted 涂程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了21年最接地气的 Android 面试总结心得相关的知识,希望对你有一定的参考价值。

前言

首先更大家大致讲述一下我的基本情况,本人是从一所不知名的二本学院毕业,在大学期间基本没怎么学习,主要是忙着玩和感情方面的事,总之和一般的大学生差不多,自己对未来没有什么明确的目标和方向,每天除了上课就是怎么开心怎么过。后面的得知大四要实习,看到一些学长学姐们就要比较困难,自己才慢慢的开始担忧自己的未来,在大学读时学的专业是计算机应用技术,当初选这个专业也是因为想着明天可以坐在电脑面前玩游戏。后面自己在一些招聘网上搜索了一下专业对口的职业,才发现这个行业的工资水平都挺高的,但他们对技术水平的要求也比较高,自己看到上面的要求的技能点,基本都有听过,但自己都不怎么会。于是开始花心思学习,通过自己的一年多的学习,在最后选择了做android开发。

在大四的时候开始来北京工作。一直到现在。公司模板化比较严重,工作难度适中。但是我也非常感谢这家公司,因为他肯要我,同时因为工作难度不大,也让我有更多的空闲时间去学习,去充实自己。

废话我就不多说了,本文主要是我最近面试的总结心得与规划。包含:面试准备,简历建议,投递简历方法,面试问题,面试安排,面试前的准备,如何与面试官的交流,如何与面试官沟通,如何回答问题,期望薪资水平,个人总结,今后规划,个人以后方向等等。

面试之前

我想更大家说的是跳槽这个东西是好,但是不建议频繁的跳槽,你跳那么一两次还行,可以帮你提升自己的价值。

频发跳槽的话,不光会成为面试官害怕的一个方面,对自己的沉淀也是没有帮助的。同时我不建议裸辞,这样会存在太多的不定性因素,如果面试时间拖得太久,这段事件你没有经济收入,但是你还在支出(房租,日常生活开销)。这样会代来无形的压力,同时如果面试受挫,很容易失去信心,甚至怀疑自己的能力。但是离职也有他的好处,因为,有些公司可能项目非常急,需要迅速上岗,那么你离职的交接办理也会耽误一些时间,那么也会成为面试官考虑的一个因素。所以还是要结合自己的情况而定。

面试准备

1.面试复习
相信大家在面试前都会进行复习和刷面试题等操作,让自己在面试中能够更好的回答面试官提出的问题,面试的更加顺利拿到OFFER。

  • 面试之前我是用了半个月的时间进行复习,讲自己之前看过的书籍、做个的一些项目、写过的一些博客和一些java、Android基础进行复习了一遍。后来我发现尽管自己花很久时间去复习,复习的成果在面试过程中体现的效果不是很大。因为不管你复习的多好,可能没过几天就忘记之前看的内容了。所以时间的把控很重要,可以将自己的技术强项知识点进行梳理一下,比如像:framework、性能优化、UI等等……,将自己的技术强项表示出来给面试官看,其他的面试常规知识点利用个一两天时间进行复习牢记就好了,不用等100%掌握才去面试,因为那是不可能的事。你狠难复习得过来,自己觉得掌握个70%左右就行了,剩下的就在面试中去回顾吧。
  • 不要想着完全不用回顾自己以往学过的东西,也不去准备。就等着便面试遍复习,因为即使你当初理解的熟的不能再熟,也要看,因为你永远想不到自己的记忆力消散的有多快,有多可怕。同时当你面试的时候,你就会发现,你根本没有时间去复习。即使你想在地铁上看一下也是不太可能的,因为你会忙着别的或是太累或是导航去下一个地点。而没有时间去复习。

2.简历制作

简历是我们面试前给HR和面试官的第一印象分,因为你的简历好与差决定了你是否有面试机会。简历可以说就是你的名片。

同时制作简历也是一种学文,一份好的简历往往让人眼前一亮。所以你在简历中要突出重点。

  • 技术特长
    假设你对项目底层技术比较了解,就可以把自己了解的够深的技术写在上面,比如:Java序列化、泛型与反射、JDK高级动态代理、 Java高级并发原理等,如果你是音视频技术方便是你的强项,也可以写在上面。尽量不要有精通这个词语出现,除非你是整的“精通”。否则就是给自己挖坑。不要写一些太过常见的技能,这样很难体现出你的优势,技能特长有个10-12个左右就可以了。简历只要表达出你的特点,简单明了比较好。其他的大家自己揣摩下就可以了。
  • 项目介绍
    如果你是实习,那么你就写在学校中做过的一些好的项目。如果你是在职就要有一定公司项目。填写项目介绍的个数控制在2-3个即可。如果你有其他的项目经验也可写在上面,比如前端、后端等等,那么这会是加分项。总之项目介绍不要太啰嗦就行了,重点突出你的强项和有设计到的技术,主要功能的实现,写出你在项目中做了那些部分内容。(这部分要描述好,面试很有可能会从中来提出问题,比如开发中遇到的问题、难点、优化、协作、调优等等
  • 其他技能
    如果英语有等级做好也写上去,还有自己发个的一些博客、GitHub等也要填写一下。

简历制作总结: 至于其他的对大家应该没有难度。同时适当的包装无可厚非,求职者想找个好工作,面试官想找个好员工。对方就像相亲一样。一定会把你的低摸个清楚的。如果相亲的时候的没问题,等孩子都有了那就晚啦。哈哈,我就是这个意思。包装的目的是为了增加HR的通过率。这样才会有面试机会,对我们这种渣渣来说,面试机会比面试通过与否更重要。因为面试邀请都没有,你准备有个P用。

大家如有需要简历模板的可以私信回复【简历】两字既可。

面试准备
  • 个人准备
    如果你是在大城市,一定要把手机充好电(带着充电宝),因为去哪里都要导航,还有就是提前就多买点吃的,因为你可能为了干面试一天都吃不上饭(深有体会)。带好简历和纸笔。

  • 面试安排
    如果面试邀请比较多的话,一定要用Excel做好表格,然后尽量把相同地点的安排在一起(虽然给你面试邀请的时候,会规定时间,但是你打电话沟通改时间件,一般都会同意的,大家都理解)。这样你就可以不用来回跑,可以一天面3-4个。还能节省时间和体力。我把我的表格拿出来,你们可以做个参考:

    大家可以根据自己的情况自己创建,安排和查看都很方便。

  • 面试排期
    面试多的话,不要一天排超过4个,2-3个最好,有时候可能会赶不上,同时会给人家造成不好的印象,同时对自己太多劳累(面试比工作累多了)。

面试过程

这一节主要是记录我的一个面试过程,感兴趣的可以继续往下看,不感兴趣的可以直接跳过,不强求。

拟合未来

  • 这公司面试体验很好,一共三轮面试,技术面二面,HR一面。
  • 一面: 自定义view、Handler机制、组件化和插件化、HashMap的源码、retrofit和okhttp的源码用到了哪些设计模式、NDK静态库和动态库编译流程、openGL渲染模式、Android中的动画有哪些它们之间的区别、谈谈mvvm。
  • 二面: 讲之前做的项目负责哪块,根据业务采用什么架构、使用过哪些设计模式,项目中遇到哪些棘手的问题,如何解决的。
  • 三面: HR整体问下以前公司的情况等问题
  • 总体下来基本面试官都是根据简历来问的。体验心得就是要对自己以前做的项目也好好梳理,提前组织好语言,挖掘项目闪光点。

百度

  • 这里主要负责的业务是手机百开发,总共面试了三次。
  • 一面内容:
  1. java引用,以及引用队列,以及使用场景;
  2. 拆装箱
  3. LeakCanary
  4. map
  5. 线上性能监控
  6. SharedPrefrence 遇到的问题
  7. 手写算法
  • 二面内容:
  1. Handler
  2. 进程间通信
  3. 序列化
  4. 动画,
  5. native崩溃捕获原理
  6. 结合项目提问
  7. Recyclerview的点击事件原理
  8. 启动一个空的apk,回启动几个线程
  9. 手写算法
  • 三面内容:
  1. 跳槽原因
  2. 原来公司规模
  3. 预期薪资
  4. 个人优势
  • 个人体验心得:
  1. 简历上写的一定要了解,并且知道原理
  2. 多熟悉项目,找出一些能聊得功能点
  3. 崩溃捕获,以及解决(java ,native)
  4. 优化需要知道(大厂都会问)
  5. 了解由点到面,需要把知识连贯起来

apus(总共三面)

  • 一面: 问了java基础,java synchronized和volatile 关键字的作用,问了hashMap数组大小为什么是2的次方,如果经过一次扩容,元素下标会变吗,sharedPreference commit与apply的区别,还有apply为什么会造成anr,view的绘制流程,如何检测应用帧率,gradle的一些知识(没答出来,具体问题忘了)
  • 二面: 可能是看我对view的绘制流程比较了解 就主要问了这一块的内容,测量、布局、绘制,然后拿出了一个效果,问我怎么实现
  • HR面: 公司是北京和郑州这边协同办公,经常要和那边协作,如果出了问题,如何解决
  • 个人感受: 基础要熟悉,如果一面有哪一个方向回答的好的话,二面就可能深入到那个方向深入的问

中软国际

  • 岗位业务荣耀手机内置APP-主要负责推送,一共两面
  • 一面: 问的项目中哪些用到了hook技术,是怎么实现的,Okhttp底层原理,点击应用图标的启动流程,hashmap在java7和java8的区别,为什么要引入红黑树
  • 二面: 项目是怎么搭建的,用到了哪些技术点,arouter用到了什么技术点,是用来解决什么问题,socket底层原理,是如何带领团队的,一个功能是如何从分析需求到落地的
  • 个人体验心得: 尽量围绕简历上的点来刷面试题,不一定都要研究透彻,被问到自己不熟的点,可以尽量尝试着往自己熟悉点带,例如之前我被问到pms是怎么管理package信息的,我就说目前我对pms了解不深,主要也是研究了ams,然后就把自己了解的说一下就好了。

杭州红花朵朵(总共三面)

  • 一面: Fragment和Activity生命周期联动,及Fragment显示与隐藏的一些方法,Handler原理, View绘制流程,事件分发,APP从安装到启动都做了什么,设计模式相关。
  • 二面: 线程都有那些状态,线程锁相关的东西,对称与非对称加密,HTTPS请求过程,数组,链表,红黑树二叉树等一些数据结构相关的东西,还有一些开放性的问题
  • HR面: 自由回答
  • 个人体验: 基础最重要,不仅要会用,还要知道其中的原理。

京东到家(总共三面)

  • 一面: 线程,进程,消息,通信,handler,okhttp
  • 二面: 事件分发,java一些基础,算法
  • 三面: 聊项目
  • 体验: 除了技术,沟通,理解能力要好

阿里巴巴

  • 面试的岗位是音视频开发,总共是 3轮技术面+1轮HR面。
  • 一面内容:
  1. MediaCodec连环炮:MediaCodec报错,只有错误码,没有任何其它信息,如何解决?使用MediaCodec遇到了哪些问题?同步使用和异步使用有什么区别?
  2. 如何计算音频帧,一帧音频帧有多大
  3. YUV基础知识,相比于RGB减少了多少空间,YUV 各个分量都是0实际渲染出来是什么颜色的,NV21和NV12有什么区别
  4. MP4是如何存储音视频文件的,它是什么结构
  5. OpenSL 相关的问题,如何使用。可以干什么不可以干什么
  6. 结合项目问题
  • 二面内容:
  1. SurfaceView和TextureView区别
  2. OpenGL ES相关问题,MVP矩阵左乘和右乘有什么区别,什么是外部纹理,为什么叫外部
  3. OpenGL如何渲染一个View
  4. VBO是用来干嘛的解决什么问题
  5. 结合项目问问题
  • 三面内容:
  1. 项目是什么架构,如何设计的,为什么这么设计
  2. 算法题:字符串反转
  3. 平时如何学习的
  • 个人感受: 音视频开发感觉OpenGL ES问的比较多,这方面多看看LearnOpenGL这个网站的教程,多加体会。

其实还有几家小型公司的面试,我就不在此一一的说明了,因为文章篇幅长度有限,所以就挑选了几个自己觉得面的还不错的公司进行跟大家分享。庆幸的是等到了自己想要的 阿里 OFFER

面试通用问题回答技巧

自我介绍

这个时候往往是面试官看你简历内容的时候,但是我们的介绍也要简单明了,可以从这几个方面:

  • 个人信息:简单的个人信息介绍(名字,年龄等),大学,毕业时间
  • 公司介绍:上家工作主要方向,日常做什么工作,你承担什么角色等
  • 个人特色:比如你课余事件喜欢看书,写博客等介绍

个人职业规划
那我来说,我会在以后的1-3年学好java基础,数据结构与算法,主动去了解后台开发,同时在公司业务方面的Android方向深入,坚持看书写博客,再学一门语言等

向面试官提问

  • 对这次面试做个总结和对我评价(其实就看也看出是否有意向)
  • 根据面试,您觉得我的能力是否能够胜任贵公司的工作
  • 您觉得我哪方面知识需要深入学习或者我的不足在那些方面,今后我该注意什么
    这些问题不仅能帮助你,还能对这次面试做到心中有数。

个人总结

其实面试也是个学习过程,之前没有好好理解,在这些面试之后平时不注意,需要学习的方面就显露出来了。这样也能知道自己的不足。也能帮助自己以后的职业规划的学习方向。

今后计划

准备好好工作,静下心来,好好沉淀自己,多总结开发的问题,提升自己个人能力,虽然Android现在不那么景气 ,但是既然决定做Android那就好好去学习,去深耕技术。

最后我整理了一些 Android 面试中比较常见的知识点和Android 相关技术点的学习文档,并记录在我 GitHub中大家点击下方小卡片查看进行参考学习



以上是关于21年最接地气的 Android 面试总结心得的主要内容,如果未能解决你的问题,请参考以下文章

Android面试内容整理(持续收录中)

程序员面试有哪些小窍门?最接地气的程序员面试面试技巧总结

2021年最接地气的Java工程师飞升成神之路

一份很接地气的高级PHP工程师面试题

找工作难,面试失败的核心原因已经找到

2020年最鲜出炉 一线互联网公司Java高级面试题总结(含解析)