秋招安卓面经合集(头条、MIUI、快手、美团)
双非本科生,校招也投了不少,然而有的简历挂掉,但是大部分都是死在笔试上,虽然自认为笔试答得真的挺好的。截止到现在只面了头条、小米、快手和美团。昨天接到了金山的面试电话,但是我的校招应该结束了,也懒得去面其他公司了。然后通过笔试拿到面试资格的只有拼多多(八月初的笔试现在还没面试通知),其他的都是内推。
下面是自己整理的一些面经,基本我能回忆起来的都写上了,希望能帮到大家。因为我之前在北京美图公司实习,所以下面的都是在北京的现场面试。
头条抖音实习生面试(四面跪)
头条这个是在校招提前批前大概两周面的,是学长直接内推给Leader,虽然最后玄学挂掉了,不过面试体验还算不错。
一面
- 层次遍历二叉树
- 改变数组使其奇数在前偶数在后且相对顺序不变
- Activity四种启动模式
- 俩App的activtiy很奇葩的互相启动来启动去,然后依次按返回键判断当前activity
- 强软弱虚四种启动类型
- Handler原理
- EventBus源码
- 线程通信
- 广播
- 服务的分类
- 如何与服务交互
- 如何终止线程
- 服务所在的线程
- IntentService的原理以及好处
二面
- Binder原理
- 服务相关
- 说说设计模式并且结合Android源码解释
- OkHttp源码深入讲解
- 责任链模式
- 事件分发
- 以及几个一面稍微重合的问题,就不写出来了
三面
旷日持久的Leader面,问的问题是在太多,下面是我回忆起来的一部分。而且Leader面一般问一个问题会问的越来越深,知道你打不出来为止。当时Leader还说我面的不错,然后就给挂掉了。。。
计组
- Arm与X86的区别
- Android使用的是哪儿一个
- RISC与CISC
- 两者的优劣
- 大小端问题
- 原码,反码和补码
- 补码的优势
- 浮点数的表示
- 浮点数的运算
计网
- TCP与OSI相比少了哪儿几层
- 表示层和会话层的功能
- TCP与UDP的区别
- ARQ协议
- 拥塞控制算法
- 路由器与交换机的区别
编译原理
- 并没有学过
软件工程
- 问了好几个名词,然而我都没听说过
数据结构
- HahMap的原理
- 冲突,扩容等。。
- Java中equal与hashCode的意义
- 如果hashCode返回相同的值的后果
- 如果equal返回true造成的后果
- Set,Map讲讲原理
操作系统(问的很细)
- 操作系统的功能
- 进程与线程的区别
- CPU调度的实现
- 线程组成
- TCB的组成
- 线程怎样映射到硬件实现
- 线程同步
- Sync与Lock的区别
- Android多进程
- 如何实现多进程
- 多进程的必要性
- 多进程通信
- 详细讲每种多进程通信以及相应优缺点
- 进程调度
Android
- Glide源码
- Glide与其他图片加载框架的优劣
- 三级缓存机制
- Lru算法
- 详细讲解Glide的图片缓存
Hr面
- 对头条的看法
- 谈谈短视频的未来
一周过去之后给Hr打电话问一下面试结果,Hr说让Leader再考虑考虑,下周一给答复,然后就没有然后了。
快手实习生面试(二面跪)
感觉快手面试画风清奇,难度也不低,跪了也是情理之中。
一面+二面
- 二叉树交叉层次遍历
- Activity四种启动模式
- 任务栈相关
- 消息分发
- 如何使当前消息分发停止
- EventBus扯好久,原理,优劣,使用场景
- MVP,MVC,MVVM的对比,以及如何去改进
- OkHttp源码
- Glide源码
- RxJava基础
- 手写RxJava实现十个请求当请求全部完成打印输出,若有错误打印停止请求,并且处理线程切换
- 手写AsyncTask
- 事件分发机制
- 如何实现一个不规则遮罩层实现遮罩层只盖住一部分,而未遮住部分可以响应事件(可以有多种方法)
- 自定义View流程
- 如何自定义View实现随着百分比改变View的背景颜色(例如下载进度百分之三十,左边百分之三十是黑色,右面为白色)
- 跨进程相关
- Binder原理
小米MIUI面试(五面offer)
一面+二面
一面和二面都很基础,而且很神奇的只问安卓,但是题量很大
- 手写快排
- 最大子序列
- Activity的四个启动方法
- Activity的生命周期
- Fragment的生命周期
- Fragment相比Activity有什么优劣
- Fragment和Activity的交互
- Fragment的使用场景
- 本地广播的用法
- 本地广播的原理
- 如何让广播只发送给特定的App
- Intent如何传递大文件
- Intent传递超出范围的文件的后果
- 如何传递大文件
- 如何避免大图片OOM
- 图片压缩的原理
- Glide源码
- 图片的三级缓存
- Lru算法
- EventBus原理
- RemoteView使用场景及其方法
- RemoteView能使用的View的范围
- Notification能否使用自定义View以及原因
- RemoteView原理
- 简述事件分发机制
- 事件分发中的方法名、方法参数以及不同的返回值的意义
- ListView中如何使不同的Item加载不同的样式
- ListView中convertview的作用以及意义
- RecyclerView与ListView的区别
- 如何解决ListView异步加载图片的问题
- ContentProvider的用法,详细到方法
- 跨进程通信的方式
- AIDL原理
- Binder原理,详细到方法
- 启动一个Server和绑定Server的区别
- 举例Server和绑定Server的不同使用场景
- IntentServer与普通Server的区别
- IntentServer的使用场景
- IntentServer原理
- 如何保证Server不被杀死
- 实现多线程的几种方法
- 几种动画
- 如何自己去实现一个动画,具体到方法
- 属性动画的原理
一面和二面是连着的,然后面完之后面试官告诉我leader不在,让我等消息。。。我当时还以为挂掉了,还好几天后接到了面试电话。
三面
- 两个链表寻找交叉
- 探讨Json解析器的实现(词法分析 语法分析 采用何种数据结构并且为什么等问题)
- 图片的三级缓存
- MVC,MVP,MVVC区别
- Android中使用MVP而不用MVC的原因
- 讲解MVP(手写代码)
- MVVM与DataBinding
- 实现监听手机拍照和截屏,悄悄地将一些数据隐藏进入图片并且可以通过图片恢复数据(写Demo发到指定Leader邮箱)
交叉面
感觉还是有难度的,面完之后面试官告诉我他之前都是面社招的,没面过校招,所以干脆就拿社招那一套面我了。。。面完之后面试官还劝我这么年轻不如去读个研什么的,感觉小米面试官都特别棒。
- Fragment与Activity的生命周期
- Fragment在哪儿个生命周期方法调用后真正加入Activity,在哪儿个生命周期方法getActivity()返回null或者不为null,为什么
- 讲一下实习中觉得比较不错的东西
- 以下是实习项目相关
- 图片压缩
- 图片缓存
- 高斯模糊
- 高斯模糊动态效果
- 以上是实习项目相关
- 双栈实现队列
- Java内存模型
- GC算法
- 项目中遇到的内存泄漏类型
- 解决内存泄漏问题的方法
- MAT
- LeakCanary
- Handler内存泄漏的原因
- 软引用与弱引用
- 虚拟机栈以及栈帧
- Binder原理
- Java中的同步方法
- Sync与Lock的区别
- Sync的原理
- Lock的内部实现
- AQS的内部实现
- CAS
- startActivity框架层实现
- ActivityMamagerService
- ApplicationThread
五面
- 总监大大和你谈人生
美团餐饮面经(三面offer)
美团是前几天hr打电话给了口头offer,说是月末发意向书和offer,不知道稳不稳。
然后美团问的很多问题都和上面的有重叠,所以我就没有都写出来。
一面+二面
- 0~n求1的个数
- n个点,要求画一个圆,使其可以覆盖一般的点
- Sql多表查询
- 消息分发机制原理
- 线程通信
- 四种线程池的配置
- 线程池内部实现
- JMM
- GC算法
- 为什么要Stop The Wrold
- 为什么多次GC会卡顿
- 内存泄露原理以及如何发现内存泄露
- 自定义View
- 举例measureSpec在父布局和当前布局分别使用精确数值和matchparent和wrapcontent的时候分别是哪儿种Mode,里面的数值又分别为多少
三面
- 基本都是开放题目,也没什么固定答案
- 以及谈谈以后的工作
感觉自己的秋招也差不多结束了吧,收到美团口头offer的那天,学校发了保研名单。所以大家觉得安卓的话是选择小米MIUI或者是美团餐饮还是说去保研深造呢?求大家给个建议,现在真的很迷茫。。。
#小米##美团##字节跳动##安卓工程师#