Android面经分享(猫眼、字节、最右),耗时大半个月,斩获一家Offer

作者:小石

春节假期结束差不多有大半个月了,而我在这个时间段里面试了几家大小不一的公司,其中还有大厂。在这里我拿出跟大家简单的总结一下,希望对大家有所帮助。

首先 简历 是很重要的一个因素,面试过程中的提到的问题,一般都是基于你的 简历 进行的。一般面试中的前几题不会很难,面试官会先从基础开始提问,从中考察你的知识体系的完备程度,接着会考察你的极限,最后还会考察一些软技能,比如你的学习能力、协作能力、沟通能力、分析解决未知问题的能力、抗压能力等。

前期准备工作


想必大家都应该会在面试之前进行复习相关知识点,然后自行复盘自己的项目经历,把亮点都发掘出来。复习周期个人建议是二个月到四个月,时间不宜太久,久了就容易懈怠或者闭门造车,三个月的时候最好出去开始试水,检验一下自己的学习效果。

复习计划的制定和进度的把控也很重要,可以参考别人的学习计划去学习,再根据自己的实际情况去做适当的调整。

Android 面试知识点梳理,面试复习文档可直接去我 GitHub:https://github.com/733gh/Android-T3 参考学习。

面试真题

1.猫眼

一面 (技术面)

1.自我介绍
2.Handler是用来做啥的
3.每个线程都能有自己的Handler吗
4.Fragment和Activity之间传递数据
5.Activity加载Fragment的方式
6.add一个Fragment的时候已经有一个Fragment的话,对之前的Fragment的生命周期的影响
7.ActivityA启动ActivityB的生命周期回调
8.Activity的启动模式(分别用于什么场景)
9.onSaveInstance和onReStoreInstance作用
10.ViewModel怎么实现的
11.ViewModel是不是一直存在内存中(比如我开启了很多页面,或者ViewModel持有Bitmap这样的对象)
12.Android用过哪些布局
13.View的绘制会经过哪些(onMeasure,onLayout,onDrow)
14.让View重新绘制的方法(重绘时,onMeasure会调用几次)
15.onMeasure会执行几次
16.ConstraintLayout经常用到的属性
17.guaidline为什么不会在布局上显示
18.事件分发机制
19.Android中线程挂了进程会崩溃吗?
20.RxJava用过了哪些操作符

二面(技术面)

1.自我介绍
2.问了一些项目里面的东西,聊聊是干啥的
3.为什么要用MVVM
4.数据变更UI自动更新怎么实现的,用的DataBinding吗
5.什么是观察者模式,有什么好处
6.什么情况下用责任链模式?哪里遇到过?有什么好处?
7.怎么实现的责任链模式
8.为什么okHttp里面用到责任链模式
9.用户可以自定义多个拦截器吗
10.有网状态下的缓存和无网状态下的缓存一样吗
11.缓存是自己做的还是okhttp做的
12.可以手写一些sql吗
13.room是什么类型的数据库
14.room是怎么实现的,为什么不要写sql呢
15.livedata粘性事件
16.jetpack还用过哪些
17.navigation用来做什么
18.TCP UDP区别
19.为什么需要三次握手和四次挥手

三面 (非技术面)

2.字节跳动

一面

1.自我介绍+介绍项目
2.Activity生命周期,每个回调方法的作用是什么?
3.事件的分发机制
4.内存泄漏
5.遇到过滑动冲突吗?滑动冲突的解决方法
6.如何进行单元测试,如何保证App稳定 ?
7.说一说Android中如何查看一个对象的回收情况 ?
8.Apk的大小如何压缩 ?
9.如何通过Gradle配置多渠道包?
10.插件化、组件化、热修复原理分析

二面

1.深挖项目
2.Activity 生命周期,A启动B两个状态分别是什么 ,A的onStop一定会执行吗?
3.surfaceView 和普通view的区别
4.Bitmap高效加载* 线程之间的通信方式handler
5.内存泄漏
6.为什么handler可以线程切换
7.Rxjava map关键字的作用是什么
8.怎么获取view的宽高,如何确定值是准确的,说了view.post()补充viewTreeObserverOnGlobalLayoutListener
9.场景题:头条列表有多个不同的card,使用RecyclerView怎么解耦getViewType,获得不同的card
说了用个管理类映射,面试官说用注解、反射,依赖注入。

三面

1.项目深挖
2.ARouter路由原理
3.如何管理过多的路由表?
4.看视频的时候网络请求很慢怎么优化?
5.说说HTTP3.0有什么改进?
6.App上线后用户使用时卡顿怎么查看是什么原因?

3.最右APP

1.讲一下View的测绘流程
2.由View的绘制流程拓展到自定义View,讲如果你要自定义一个流式标签布局你会去设计哪些内容暴露给外界,以及会在上面提到的View的三个方法里做哪些相关的工作
3.讲一些Android手势事件处理
4.由上面的延伸,如果你要设计一个双击的监听listener,你会怎么设计
5.上面那个问题我讲了两种方案,选了其中一种详细讲了一下然后并在面试官的引导下作了相关的优化
6.讲一下你自己处理过的比较复杂的手势处理
7.如果让你自己做一个像ScrollView那样的View,你怎么设计
8.讲讲Android的消息机制
9.针对上面的机制,我们可不可以利用它的特性来检测ANR,讲一下方案
10.讲讲死锁的发生条件以及如何避免死锁
11.讲讲jvm内存模型
12.讲讲Java的四种引用类型,什么时候会被回收,项目里怎么用的
13.讲讲UDP和TCP的区别
14.讲讲HTTPS和HTTP的区别
15.HTTPS能抓包吗,既然能抓包它为什么还安全
16.讲讲activity的生命周期
17.讲讲activity异常状态下的生命周期有哪些
18.讲讲broadcastreceiver的应用场景
19.上面回答涉及到了应用内广播,我提了一句一般应用内广播的话现在都用EventBus之类的总线代替,然后问了一下懂不懂EventBus的实现原理,回答不懂然后问如果让你设计一个事件总线框架你会怎么设计,思路是什么
20.Service一般用来干什么,什么情况下用什么样的Service

参考复习文档

Android 核心知识点

Android 知识点大全

Android 面试题整理

面试复习文档可直接去我 GitHub:https://github.com/733gh/Android-T3 参考学习。

猜你喜欢

转载自blog.csdn.net/u012165769/article/details/114706653