本文只对面试过程分享,至于简历编写、具体重点知识复习等不做讨论
一、面试情况
笔者一共经历了4轮面试,其中:
- 一面(电话技术面)
- 二面(电话技术面)
- 三面(视频技术面)
- 四面 (技术总监+HR交叉视频面)
阿里的流程相对而言较慢,需要足够的耐心才行!
二、面试题
部分已经遗忘,请谅解!
一面
- 讲一下你最有印象的项目(代表性),过程中会穿插一些子问题;
javawait api:在main函数中 调用string.wait()会出现什么情况,为什么?java nio知识linux条件变量- 操作系统相关命令是否熟悉,进程间管道通讯
http GET POST DELETE方法含义,PUT和POST区别(幂等 | 非幂等)- 网络层协议:
tcp&udp,https握手过程? 如何防攻击的 - 算法:堆排序实现、两个超大文件求交集
- 手机来电显示的推销黑名单是如何实现的?
二面
- 根据简历上做过的项目发问。 e.g: 为什么要自定义实现
ImageLoader,LruCache实现原理;LinkeHashMap是如何保证有序的?Bitmap#recycle到底释放了啥?Handler原理,Looper#loop之后,消息是如何插入到消息队列的? - 组件化解耦 如何实现的?
- 进程保活机制,谈了下
Jobscheduler。根据现有的方案如何更加优雅实现保活(不流氓) - 长连接这块有积累吗?
- 网络库是如何封装的,实现了哪些功能
Http缓存,实际项目中用到的缓存策略- 内存泄漏,
java几种引用方式,jvm内存模型,java堆和java栈的区别,程序计数器有多少个? - 进程间通信?Android为什么用
Binder - 美团的
walle实现原理 Arouter原理Tinker热修复,为什么选择Tinker, 热修复基础原理ActivityWindowView三者之间关系EventBus原理- 混合式开发,
js和java互调 ,了解哪些混合式开发框架,RN的优缺点
三面
重点挖掘所做项目本身,这里就不一一列举了
- 对所做项目深入挖掘进行提问 e.g
jenkins - 热修复原理:类加载方案、底层替换方案、
Instant Run方案 - 新技术、新动态的了解情况
- 一致性hash算法原理
- 数据结构:动态规划 实现整数序列的最大连续子序列问题
- 团队的一个情况介绍,组内 意见不一致,如何解决的?
四面
- 总监:也会考察项目本身、沟通能力、解决问题能力
- HR面:(不过多阐述)
以上的一些面试题,仅供参考,每个人情况不同,所问的肯定也不一样!!!
三、总结
面试前的准备
- 纵向深入、横向拓展。除了Android专业方向外,时下的热门技术(e.g 混合式跨平台框架 ....)也需要关注、学习,保持一个拥抱变化,客观看待、接纳的心态;计算机原理、网络,操作系统也需要关注,这些基础学科还是很重要的,关于这点很多人持有不同看法,这里笔者搬运一个小马哥演讲视频 ,详细戳我
- 抛弃掉
一口吃成大胖子的思想。部分面试者想尽可能多的把一些知识点复习完,其实这不太可能实现,所以心态要摆正! - 简历上的项目需要重点关注
- 模拟面试,可以找一些信得过的小伙伴进行一次“演练”;视个人情况而定
- 小试牛刀。大部分面试者都会找一些小公司“练练手”找找感觉,然后再去自己心仪那家面试。司空见惯,值得一试!
面试后的体会
- 心态很重要,偶尔紧张怎么办?正常现象,即使面试失败,就当作一次学习的经历罢了!
- 不要轻易说“不知道”(前提:一知半解的问题)。尽可能把你所了解的表述出来,有些面试官可能会引导你去思考。实在不懂得就主动去请教
- 尽可能的主动,除了回答好问题本身,也可以适当对知识面进行拓展
- 适当表达出你想加入贵公司的意愿
鄙人的一些挫见,如有不到之处,望道友海涵
本文分享了一位开发者在阿里巴巴经历的四轮面试过程,包括电话技术面和视频面,涉及项目经验、Java、Linux、网络协议、算法、Android开发、热修复原理等多个领域的深入考察。

433

被折叠的 条评论
为什么被折叠?



