去了十多家大厂Android面试,offer拿到手软,总结了这些面试经验,堪称offer收割机!!!
文章图片
本文主要是我最近面试的总结心得与规划。包含:面试准备,简历建议,投递简历方法,面试问题,面试安排,面试前的准备,如何与面试官的交流,如何与面试官沟通,如何回答问题,期望薪资水平,个人总结等等。
面试之前
我想跟大家说的是跳槽这个东西是好,但是不建议频繁的跳槽,你跳那么一两次还行,可以帮你提升自己的价值。
频发跳槽的话,不光会成为面试官害怕的一个方面,对自己的沉淀也是没有帮助的。同时我不建议裸辞,这样会存在太多的不定性因素,如果面试时间拖得太久,这段时间你没有经济收入,但是你还在支出(房租,日常生活开销)。这样会带来无形的压力,同时如果面试受挫,很容易失去信心,甚至怀疑自己的能力。但是离职也有他的好处,因为,有些公司可能项目非常急,需要迅速上岗,那么你离职的交接办理也会耽误一些时间,那么也会成为面试官考虑的一个因素。所以还是要结合自己的情况而定。
面试准备
1.面试复习
相信大家在面试前都会进行复习和刷面试题等操作,让自己在面试中能够更好的回答面试官提出的问题,面试的更加顺利拿到OFFER。
- 面试之前我是用了半个月的时间进行复习,讲自己之前看过的书籍、做个的一些项目、写过的一些博客和一些java、Android基础进行复习了一遍。后来我发现尽管自己花很久时间去复习,复习的成果在面试过程中体现的效果不是很大。因为不管你复习的多好,可能没过几天就忘记之前看的内容了。所以时间的把控很重要,可以将自己的技术强项知识点进行梳理一下,比如像:framework、性能优化、UI等等……,将自己的技术强项表示出来给面试官看,其他的面试常规知识点利用个一两天时间进行复习牢记就好了,不用等100%掌握才去面试,因为那是不可能的事。你很难复习得过来,自己觉得掌握个70%左右就行了,剩下的就在面试中去回顾吧。
- 不要想着完全不用回顾自己以往学过的东西,也不去准备。就等着面试遍复习,因为即使你当初理解的熟的不能再熟,也要看,因为你永远想不到自己的记忆力消散的有多快,有多可怕。同时当你面试的时候,你就会发现,你根本没有时间去复习。即使你想在地铁上看一下也是不太可能的,因为你会忙着别的或是太累或是导航去下一个地点。而没有时间去复习。
文章图片
2.简历制作
简历是我们面试前给HR和面试官的第一印象分,因为你的简历好与差决定了你是否有面试机会。简历可以说就是你的名片。
【去了十多家大厂Android面试,offer拿到手软,总结了这些面试经验,堪称offer收割机!!!】同时制作简历也是一种学问,一份好的简历往往让人眼前一亮。所以你在简历中要突出重点。
- 技术特长
假设你对项目底层技术比较了解,就可以把自己了解的够深的技术写在上面,比如:Java序列化、泛型与反射、JDK高级动态代理、 Java高级并发原理等,如果你是音视频技术方便是你的强项,也可以写在上面。尽量不要有精通这个词语出现,除非你是真的“精通”。否则就是给自己挖坑。不要写一些太过常见的技能,这样很难体现出你的优势,技能特长有个10-12个左右就可以了。简历只要表达出你的特点,简单明了比较好。其他的大家自己揣摩下就可以了。 - 项目介绍
如果你是实习,那么你就写在学校中做过的一些好的项目。如果你是在职就要有一定公司项目。填写项目介绍的个数控制在2-3个即可。如果你有其他的项目经验也可写在上面,比如前端、后端等等,那么这会是加分项。总之项目介绍不要太啰嗦就行了,重点突出你的强项和有设计到的技术,主要功能的实现,写出你在项目中做了那些部分内容。(这部分要描述好,面试很有可能会从中来提出问题,比如开发中遇到的问题、难点、优化、协作、调优等等) - 其他技能
如果英语有等级做好也写上去,还有自己发的一些博客、GitHub等也要填写一下。
文章图片
- 个人准备
如果你是在大城市,一定要把手机充好电(带着充电宝),因为去哪里都要导航,还有就是提前就多买点吃的,因为你可能为了干面试一天都吃不上饭(深有体会)。带好简历和纸笔。 - 面试安排
如果面试邀请比较多的话,一定要用Excel做好表格,然后尽量把相同地点的安排在一起(虽然给你面试邀请的时候,会规定时间,但是你打电话沟通改时间件,一般都会同意的,大家都理解)。这样你就可以不用来回跑,可以一天面3-4个。还能节省时间和体力。我把我的表格拿出来,你们可以做个参考:
文章图片
大家可以根据自己的情况自己创建,安排和查看都很方便。
- 面试排期
面试多的话,不要一天排超过4个,2-3个最好,有时候可能会赶不上,同时会给人家造成不好的印象,同时对自己太多劳累(面试比工作累多了)。
这一节主要是记录我的一个面试过程,感兴趣的可以继续往下看,不感兴趣的可以直接跳过,不强求。
百度
- 这里主要负责的业务是手机百度开发,总共面试了三次。
- 一面内容:
- java引用,以及引用队列,以及使用场景;
- 拆装箱
- LeakCanary
- map
- 线上性能监控
- SharedPrefrence 遇到的问题
- 手写算法
- 二面内容:
- Handler
- 进程间通信
- 序列化
- 动画,
- native崩溃捕获原理
- 结合项目提问
- Recyclerview的点击事件原理
- 启动一个空的apk,回启动几个线程
- 手写算法
- 三面内容:
- 跳槽原因
- 原来公司规模
- 预期薪资
- 个人优势
- 个人体验心得:
中软国际
- 简历上写的一定要了解,并且知道原理
- 多熟悉项目,找出一些能聊得功能点
- 崩溃捕获,以及解决(java ,native)
- 优化需要知道(大厂都会问)
- 了解由点到面,需要把知识连贯起来
- 岗位业务荣耀手机内置APP-主要负责推送,一共两面
- 一面: 问的项目中哪些用到了hook技术,是怎么实现的,Okhttp底层原理,点击应用图标的启动流程,hashmap在java7和java8的区别,为什么要引入红黑树
- 二面: 项目是怎么搭建的,用到了哪些技术点,arouter用到了什么技术点,是用来解决什么问题,socket底层原理,是如何带领团队的,一个功能是如何从分析需求到落地的
个人体验心得: 尽量围绕简历上的点来刷面试题,不一定都要研究透彻,被问到自己不熟的点,可以尽量尝试着往自己熟悉点带,例如之前我被问到pms是怎么管理package信息的,我就说目前我对pms了解不深,主要也是研究了ams,然后就把自己了解的说一下就好了。京东到家(总共三面)
- 一面: 线程,进程,消息,通信,handler,okhttp
- 二面: 事件分发,java一些基础,算法
- 三面: 聊项目
体验: 除了技术,沟通,理解能力要好阿里巴巴
- 面试的岗位是音视频开发,总共是 3轮技术面+1轮HR面。
- 一面内容:
- MediaCodec连环炮:MediaCodec报错,只有错误码,没有任何其它信息,如何解决?使用MediaCodec遇到了哪些问题?同步使用和异步使用有什么区别?
- 如何计算音频帧,一帧音频帧有多大
- YUV基础知识,相比于RGB减少了多少空间,YUV 各个分量都是0实际渲染出来是什么颜色的,NV21和NV12有什么区别
- MP4是如何存储音视频文件的,它是什么结构
- OpenSL 相关的问题,如何使用。可以干什么不可以干什么
- 结合项目问题
- 二面内容:
- SurfaceView和TextureView区别
- OpenGL ES相关问题,MVP矩阵左乘和右乘有什么区别,什么是外部纹理,为什么叫外部
- OpenGL如何渲染一个View
- VBO是用来干嘛的解决什么问题
- 结合项目问问题
- 三面内容:
其实还有几家小型公司的面试,我就不在此一一的说明了,因为文章篇幅长度有限,所以就挑选了几个自己觉得面的还不错的公司进行跟大家分享。庆幸的是等到了自己想要的 阿里 OFFER。个人感受: 音视频开发感觉OpenGL ES问的比较多,这方面多看看LearnOpenGL这个网站的教程,多加体会。
- 项目是什么架构,如何设计的,为什么这么设计
- 算法题:字符串反转
- 平时如何学习的
面试通用问题回答技巧
自我介绍
这个时候往往是面试官看你简历内容的时候,但是我们的介绍也要简单明了,可以从这几个方面:
- 个人信息:简单的个人信息介绍(名字,年龄等),大学,毕业时间
- 公司介绍:上家工作主要方向,日常做什么工作,你承担什么角色等
- 个人特色:比如你课余时间喜欢看书,写博客等介绍
那我来说,我会在以后的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大佬学习笔记
等等,这些内容均免费分享给大家,需要的小伙伴点击这里免费领取。
文章图片
推荐阅读
- 数据结构与算法(十三)——红黑树1
- 如何用three.js(webgl)搭建3D粮仓、3D仓库、3D物联网设备监控-第十二课
- Java|Java面试突击系列(十二)(数据库分库分表的面试连环炮)
- POSTMAN从入门到精通系列(二十六)(使用标签)
- MyBatis|Spring Boot(十)(Druid的监控统计和多数据源配置)
- 学习笔记(带你十天轻松搞定|学习笔记:带你十天轻松搞定 Go 微服务系列大结局(十)- 分布式事务)
- 微服务之Spring|十、API网关
- 业界观点|深度学习崛起十年(“开挂”的OpenAI革新者)
- 蓝桥刷题冲冲!|【真题】第十一届蓝桥真题
- 蓝桥真题|【蓝桥真题五】带三百人训练了十天精选蓝桥真题,看看他们都练些什么(三门语言题解)