去了十多家大厂Android面试,offer拿到手软,总结了这些面试经验,堪称offer收割机!!!

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

面试之前

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

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

面试准备

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个最好,有时候可能会赶不上,同时会给人家造成不好的印象,同时对自己太多劳累(面试比工作累多了)。

面试过程

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

百度

  • 这里主要负责的业务是手机百度开发,总共面试了三次。
  • 一面内容:
  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. 了解由点到面,需要把知识连贯起来

中软国际

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

京东到家(总共三面)

  • 一面: 线程,进程,消息,通信,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 相关技术点的学习文档,内容涵盖:Java基础,Android基础,UI控件篇,网络通信篇,架构设计篇,性能优化篇,源码流程篇,新技术篇,大厂面经等等...质量非常高!大家需要进行参考学习的话可以点击这里查看全部内容

第一章 Java基础

  • 静态内部类和非静态内部类的比较
  • 多态的理解与应用
  • java方法的多态性理解
  • java中接口和继承的区别
  • 线程池的好处,详解,单例(绝对好记)
  • 线程池的优点及其原理
  • 线程池的优点(重点)
  • 为什么不推荐通过Executors直接创建线程池
  • 不怕难之BlockingQueue及其实现
  • 深入理解ReentrantLock与Condition
  • Java多线程:线程间通信之Lock
  • Synchronized 关键字原理
  • ReentrantLock原理
  • HashMap中的Hash冲突解决和扩容机制
  • JVM常见面试题
  • JVM内存结构

第二章 Android基础

  • Activity知识点(必问)
  • Fragment知识点
  • Service知识点
  • Intent知识点

第三章 UI控件篇

  • 屏幕适配
  • 主要控件优化
  • 事件分发与嵌套滚动

第四章 网络通信篇

  • 网络协议

第五章 架构设计篇

  • MVP架构设计
  • 组件化架构

第六章 性能优化篇

  • 启动优化
  • 内存优化
  • 绘制优化
  • 安装包优化

第七章 源码流程篇

  • 开源库源码分析
  • Glide源码分析
  • Android面试题:Glide
  • day 20 面试题:Glide面试题
  • 聊一聊关于Glide在面试中的那些事
  • 面试官:简历上如果写Glide,请注意以下几点…
  • Glide OOM问题解决方法汇总
  • OkHttp源码分析
  • Okhttp连接池复用机制
  • Okhttp 流程和优化的实现
  • 一篇让你受用的okhttp分析
  • OkHttp面试之–OkHttp的整个异步请求流
  • OkHttp面试之–HttpEngine中的sendRequest方法详解
  • OkHttp解析大总结
  • Okhttp任务队列工作原理
  • Android高频面试专题 - 架构篇(二)okhttp面试必知必会
  • Android 网络优化,使用 HTTPDNS优化 DNS,从原理到 OkHttp 集成
  • Retrofit源码分析
  • RxJava源码分析
  • RxJava原理与源码分析

第八章 新技术篇

  • 实战问题篇

第九章 面试篇

  • 开源文档
  • 面试题合集

最后还有耗时一年多整理的一系列Android学习资源:Android源码解析、Android第三方库源码笔记、Android进阶架构师七大专题学习、历年BAT面试题解析包、Android大佬学习笔记等等,这些内容均免费分享给大家,需要的小伙伴点击这里免费领取。

你可能感兴趣的:(去了十多家大厂Android面试,offer拿到手软,总结了这些面试经验,堪称offer收割机!!!)