曾经身为一名Android面试官的我,如今去别的公司面试被虐成狗!我也有今天7
Posted 冬天的毛毛雨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了曾经身为一名Android面试官的我,如今去别的公司面试被虐成狗!我也有今天7相关的知识,希望对你有一定的参考价值。
作者:曾熊
前言
最近加入了 BIDU(百度) 某部门(具体保密,下文简称B),遂一群周遭好友来讨要面经;
其实自己过去在前东家也负责很多面试工作,对于这种内容猛一想还是保密相对好些,然鹅仔细想想涉及的东西很多是比较针对我所擅长的方向,未必和大多数人都能重合,而那些公共的基础部分也是目前市场上一个合格的android工程师所该必备的,所以整个面经分享我还是决定写出来,只是换个没那么直接的方式,更多当成是一篇指导性的文章吧,毕竟面试还是靠硬实力,一篇面经如果真对你的实力有所提升那也算是我为招人企业做了点实在的贡献,何乐而不为呢?
这确乎是我经历过的最艰难的面试,引言我也有提到,我本身就负责过很多面试,而且从我毕业半年后的16年底开始负责面试,实习、校招、社招大大小小近百次面试,也算是曾和一些高手过招,另外由于前公司的高要求面试难度确乎是高于BAT的,我深谙其中难度定级和目标定位
但这次面完“B”还是让我感觉:之前面试难度是定低了呀当然这感觉很大程度上也是基于其中二面的面试官,他本身的实力、面试风格等确乎让我鸭梨山大
好了回归正题,下面是面经分享(包括在前东家工作之前面试收录整理的两家面经,后为自己的指导性意见):
一、网易云音乐
凌晨十二点,打开我的 网抑云 ,写下了这令人难过的面经,生而为人,我很抱歉…
一面
1、项目介绍。
2、Handler消息传递机制。一个线程可以有几个Looper?
3、Android里有哪些布局?如何选取合适的布局。
4、MVC和MVP的区别?
5、TCP和HTTP的联系?TCP为什么要第三次握手。
6、HTTP和HTTPS的区别。HTTP有哪些状态响应码。HTTP如何实现分段传输。
7、final可以修饰哪些?被final修饰都会怎样?被final变量置为null之后,值还能不能再改变?
8、Java的Error和Exception的区别?Error,程序可不可以处理?有哪些Error、哪些Exception?
9、Android里有哪些设计模式?
10、用过哪些框架?OKhttp的设计和源码有了解吗?
二、京东
一面
- 1、TCP 和 HTTP的关系?socket与他们的关系?
- 2、进程和线程的区别?线程的轻量级的体现在哪里?
- 3、死锁发生的条件。
- 4、linux中如何创建进程和线程。
- 5、什么是缺页?内存、磁盘?为什么会发生OOM?
- 6、Java的synchronized的用法?为什么它是重量级锁?有哪些轻量级锁?
- 7、Java 堆和栈的区别?分别如何管理空间的?
- 8、Java如何做内存回收?哪些对象可以回收?
- 9、深拷贝与浅拷贝的区别。
- 10、垃圾回收算法有没有了解?说一种。
- 11、了解哪些设计模式?
- 12、说一下树的层序遍历?
- 13、是否了解SOLID原则?(面试完自己去查才知道是设计模式的原则) 单一职责原则(SRP) 开放封闭原则(OCP) 里氏替换原则(LSP) 接口隔离原则(ISP) 依赖倒置原则(DIP)
二面
- 1、什么是线程阻塞?如何在程序中避免阻塞?信号量的作用。
- 2、进程间通信方式?
- 3、c++的虚函数的原理。
- 4、为什么析构函数要声明为虚函数
- 5、如何在一颗树中找到第一个比某数值大的结点。
- 6、long转化为double数值会不会变化。
- 7、大端存储与小端存储
百度
一面:
具体涉及的方面如下(有些我感觉随口就能答上的忘记了- -):
1、自我介绍:我具体怎么答的略过,总之注意几个点:说简历上没有的、有亮点的、跳槽原因等,从各个点上尽力彰显自己优势、技术特长
2、https 和 http的区别?对称加密与非对称加密的区别?
3、JNI的调用过程?Android JNI包加载的代码?
4、不通过AS,由源码打包成APK的流程是否有了解。
5、包访问权限——可以包内访问,不能包外访问,应该如何设置?
6、有没有使用过Fragment?
7、Android 的 Activity的启动方式?生命周期?
8、点击多个重叠View的事件分发机制?
9、Bitmap的可能问题?用过Bitmap哪些函数?(OutOfMemoryError)
10、了解过哪些图像压缩算法?
11、wbmp图像格式有没有了解过?
二面:
真是要了我半条命,耗时近2小时……
1、自我介绍
2、Android的四大组件?什么是content provider。
3、activity的启动模式?
4、service的两种启动方式?两种方式生命周期的差异。
5、显示Intent和隐式Intent。Intent可以传递的数据类型。【隐式定义Action、Data、Category;基本数据类型和Parcelable】
6、持久化存储方法。【SharedPreferences、SQLite、共享文件、ContentProvider】
7、IPC通信。AIDL。【Socket、ContentProvider、AIDL、管道、共享内存、Messenger】
8、多线程。线程的状态有哪些?
9、有哪些线程池?
10、知道哪些锁?synchronized。ReentrantLock用过吗。【可重入锁】
11、Android子线程与主线程的通信方式?【Handler、AsyncTask、runOnUiThread】
12、Java的四种引用。
13、String和StringBuilder的区别。
14、HashMap的结构?遍历方法。keySet()? keySet(), values(), entrySet()
15、Android布局的include、merge标签【布局优化】
16、Android中的像素单位。【dp, px】
17、Android序列化 【Parcelable】
18、Android 两种IO流 【字节流、字符流】
19、Android动画的类型。【视图动画、帧动画、属性动画】
20、Java 类加载机制。双亲委派模型。
三面:
整个Android端负责人面,可能是二面太太要命了,这面相比之下感觉在休息……
上来还是互相介绍,然后有个算法题解决个实际问题,因为我很快用知识迁移的思想把生产者消费者问题的解法用过来,讲的也很透彻,手写代码就省了,随后还是问问偏思想性的东西工程架构、之前提到的接口暴露又老生常谈,不过之前答的不太好我突然还是用知识迁移想了个好办法解决,对方也听后看似比较满意;
再然后还是擅长方向,因为二面真是被虐惨了,另外考虑到三面负责人的身份更关注一个人思想性、系统性的东西,所以毫不犹豫说了定移动端架构解决方案、前后台接口涉及那套,这个应该是很少有面试者会说的一点,我发现我说完面试官眼前放光2333~
随即问题就是设计个IM客户端以及数据库架构吧,类似微信,偏上层业务部分的会话、联系人、通知、公众号如何存、分几张表,架构每一层都是啥,互相怎么交互工作?
还有是提个公司旗下产品做的不好的点,吐槽一下(有理由根据说服对方即可,最好是人难以意识到的点)。最终基本就是了解公司情况嘞,全聊完他都没商量就直接告知hr来跟我谈了,到这里基本可以知道就是稳了,国内公司hr很少有挂掉人的,尤其对于百度这种缺人的地方,移动端又是稀缺中的稀缺~
HR面:
这面就是偏闲聊了,问问跳槽原因、个人爱好、个人职业规划、目前薪酬、跳槽薪酬要求,福利同步一下;
这面稍微注意一个点吧,就是你首先要真诚,然后基于此尽量展示给对方的是你有活力、有上进心、对自己有想法也有期待、对于你来面试的地方也有兴趣;
你给她的好感会帮助你在定薪过程中让她为你多多美言,当然主要还得看技术面,但这些小技巧也是有助力的,最终验证也是符合这点的,总的算起来我的薪资涨幅超过60%,二期要求最高直到40%,另外我还被赋予了选组的权力和期权,我感觉这里面或多或少都和我展示给hr以及前几轮面试官的我的精神面貌有关,有些认可是在面试过程中很多小细节(身体姿势、不经意的点头、微笑、手势、话语声调突变等)能看出来的~
!!!备注下,有些面试内容和考察点已经忘记的也就没往上写,整体的面试题量还是大过上述这些的!!!
再献上我个人面试别人经验以及这次面试经历的一点要领总结吧:
对于社招,面试技术方向的,除了人工智能、算法那些其他真的不太看重学历,很多时候大家所认为的学历敲门砖本质上是企业为了节省面试成本所额外加入的坎,社招更多还是看工作经历和你的成长。
这行业有句老话叫:从不看你起点在哪儿,而是看你能跑多快,那些还在为这点担心的更多是你自己还跑得不够快或跑错了方向,这是前提;
然后是方法,技术开发无论哪个方向都避不开的是计算机本源原理,有些很简单的情形就是本源原理的缩影,网络的分层,计算机体系结构上的分功用部件,你可能想过其中的联系?
百度相对于BAT 是更多高手的聚集地,他们对于这一点和从这点上发散出来的能力的考察只会比BAT有多无少,所以无论是何方向,内力的修炼永远排在第一位,具体的方向指示以一种具体招式将内力转化为伤害输出出来,很多人认为基础便是内力,其实也不全是,基础很多时候是那些死的知识,这些只是修炼内力的原料,要练成得把他们活用起来转化自己认识其他内容的基础、形成适用于自己修炼、探寻、思考的方法论,以一种独有的方式把这套知识体系灌输于自身,才能算是真正的内力,待你练成这点,哪怕真的遇见功力更深厚的高手依旧能应对自如,正如我二面遇到的面试官,HR和我介绍说他在Android领域的深度和广度在北京能排上前几名,现在他是我的leader……
感谢大家能耐着性子看完啰里啰嗦的面经
最后
笔者在面试前,从网上收集了一些 Android 开发相关的学习文档、面试题、Android 核心笔记等等文档,进行了复习,在此分享给大家,希望能帮助到大家学习提升,如有需要参考的可以直接去我 GitHub地址:https://github.com/733gh/Android-T3 访问查阅。
以上是关于曾经身为一名Android面试官的我,如今去别的公司面试被虐成狗!我也有今天7的主要内容,如果未能解决你的问题,请参考以下文章
3年测试经验面试,薪资要求19K,我一问,连应届生都不如···