前言
阿里,我是在BOSS上投的简历,之前也投过一次,简历都没通过筛选,后来让前辈帮我改了一下简历,重新投另一个部门,获得了面试机会。5月15日,中午HR打电话过来预约了下午4点半面试,说会在线笔试,让我准备好。
一面:70分钟
突击电话面试
正思考着项目功能模块,阿里面试官打来了电话,开始了阿里一面。 阿里面试官自我介绍,介绍了5分钟左右,部门的情况,主要的业务。
提问开始:
- 你是如何理解Android操作系统的。
- 是否熟悉framework层,如果熟悉,那就对framework做个简介。
- 是否熟悉多线程,如果熟悉,介绍下线程。
- 对象锁和类锁是否会互相影响,会举例子让你判断锁的使用是否恰当,并说出原因。
- 是否熟悉Lopper架构,如果熟悉说下其原理,如果你自己实现,你会怎么实现。这里主要考察阻塞消息队列原理,和其变形。
- 自定义控件原理,及消息分发流程。
- binder工作原理。
- ActivityThread,Ams,Wms的工作原理。
- 如果工作中需要修改framework,你如何寻找切入点。
- 较为前沿的技术。如flutter方向
二面:50分钟(P9面)
早上面试官发来短信,约了晚上面试。
- 问 i和i 区别
- makefile文件代码,写代码
- 隐藏与重写的区别
- linux基本命令使用 如:如何查询帮助文档(man),如何查处文件(fiind),常用命令
- 进程间通信有几种,效率如何
- 什么是嵌入式实时操作系统, Android操作系统属于实时操作系统吗?
- tcp/ip有几层
- 一条最长的短信息约占多少byte?
- p2p和SMTP分别在哪层
- android中的动画有哪几类,它们的特点和区别是什么?
- 多态概念(父类引用子类参数)
- handler机制的原理
- java写1 N的和
- 数据结构与算法如排序,二叉树1
- MVC概念(为什么有DAO层,什么作用)
- GC回收机制
- 说说mvc模式的原理,它在android中的运用
- android项目 自述
- java的进程与线程维护
- Activity的生命周期
三面:25分钟(P9交叉面)
面试官介绍
面试官介绍自己是中间件部门的,这轮是交叉面。 感觉面试官很和蔼,很有耐心。更多的是让我自己去讲述所学的知识。
- 刚拿到你的简历,先做个自我介绍;
- 项目相关,很多细节
- 平时自己是怎么自学的(这就是全部的学习手段吗?)
- 你是怎么找到相关的资料的
- 平时用百度还是谷歌
- 技术问题不是查谷歌更好一些吗?
- 近一年,在学习和项目上比较困难的事情,怎么解决的,结果怎么样
- 有和其他人合作项目的经历吗
- 说一下你印象比较深,时间比较长,与他人合作的项目,你在其中负责的部分,成效如何,这个项目里最困难的部分,你如何解决的
- 在学校期间压力最大的时间,遇到了什么事情,你是怎么解决的
- 平时有什么兴趣爱好
- 简历是主动投的,还是百度自己找过去的,为什么要投百度简历,你能为百度带来什么
- 对城市有什么倾向吗
- 有收到其他offer吗,或者有面过其他家吗
- 如果两家公司都给了offer你会怎么选择,为什么这么选择
反问
- 公司目前的技术栈(百度APP极速版,双端开发维护)
- 职业发展方面有什么建议(应届生不要太看重钱,期望不要太高,不要浮躁)
- 后面还有流程吗(可能会有HR面)
- 有啥评价(端上经验是张白纸,可能连门都没入<恐怖事件>)
感受:
其实我投简历的时候,都不太敢投递阿里。因为在阿里一面前已经过了字节的三次面试,投阿里的简历一直没被捞,所以以为简历就挂了。
特别感谢一面的面试官捞了我,给了我机会,同时也认可我的努力和态度。
对比我的面经和其他大佬的面经,自己真的是运气好。别人8成实力,我可能8成运气。
所以对我而言,我要继续加倍努力,弥补自己技术上的不足,以及与科班大佬们基础上的差距。希望自己能继续保持学习的热情,继续努力走下去。
最后
不知不觉自己已经做了几年开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。
最后为了帮助大家深刻理解Android相关知识点的原理以及面试相关知识,这里放上相关的我搜集整理的24套腾讯、字节跳动、阿里、百度2019-2020面试真题解析,我把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包知识脉络 诸多细节。
还有 高级架构技术进阶脑图、Android开发面试专题资料 帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习。
网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。