2020美团Android面试(附全套面试真题解析)

前言

这些题目是网友去美团等一线互联网公司面试被问到的题目。笔者从自身面试经历、各大网络社交技术平台搜集整理而成,熟悉本文中列出的知识点会大大增加通过前两轮技术面试的几率。

主要分为以下几部分:

(1)Android面试题

(2)Java面试题

(3)高级开发技术面试题

一、Android面试题

Android面试题包括Android基础,还有一些源码级别的、原理这些等。所以想去美团面试,一定要多看看源码和实现方式,常用框架可以试试自己能不能手写实现一下,锻炼一下自己。
(一)Android基础知识点

  • 四大组件是什么
  • 四大组件的生命周期和简单用法
  • Activity之间的通信方式
  • Activity各种情况下的生命周期
  • 横竖屏切换的时候,Activity 各种情况下的生命周期
  • Activity与Fragment之间生命周期比较
  • Activity上有Dialog的时候按Home键时的生命周期
  • 两个Activity 之间跳转时必然会执行的是哪几个方法?
  • 前台切换到后台,然后再回到前台,Activity生命周期回调方法。弹出Dialog,生命值周期回调方法。
  • Activity的四种启动模式对比
  • Activity状态保存于恢复
  • fragment各种情况下的生命周期
  • Fragment状态保存startActivityForResult是哪个类的方法,在什么情况下使用?
  • 如何实现Fragment的滑动?
  • fragment之间传递数据的方式?
  • Activity 怎么和Service 绑定?
  • 怎么在Activity 中启动自己对应的Service?
  • service和activity怎么进行数据交互?
  • Service的开启方式
  • 请描述一下Service 的生命周期
  • 谈谈你对ContentProvider的理解
  • 说说ContentProvider、ContentResolver、ContentObserver 之间的关系
  • 请描述一下广播BroadcastReceiver的理解
  • 广播的分类
  • 广播使用的方式和场景
  • 在manifest 和代码中如何注册和使用BroadcastReceiver?
  • 本地广播和全局广播有什么差别?
  • BroadcastReceiver,LocalBroadcastReceiver 区别
  • AlertDialog,popupWindow,Activity区别
  • Application 和 Activity 的 Context 对象的区别
  • Android属性动画特性
  • 如何导入外部数据库?
  • LinearLayout、RelativeLayout、FrameLayout的特性及对比,并介绍使用场景。
  • 谈谈对接口与回调的理解
  • 回调的原理
  • 写一个回调demo
  • 介绍下SurfView
  • RecycleView的使用
  • 序列化的作用,以及Android两种序列化的区别
  • 差值器
  • 估值器
  • Android中数据存储方式
    2020美团Android面试(附全套面试真题解析)_第1张图片

(二)Android源码相关分析

  • Android动画框架实现原理
  • Android各个版本API的区别
  • Requestlayout,onlayout,onDraw,DrawChild区别与联系
  • invalidate和postInvalidate的区别及使用
  • Activity-Window-View三者的差别
  • 谈谈对Volley的理解
  • 如何优化自定义View
  • 低版本SDK如何实现高版本api?
  • 描述一次网络请求的流程
  • HttpUrlConnection 和 okhttp关系
  • Bitmap对象的理解
  • looper架构
  • ActivityThread,AMS,WMS的工作原理
  • 自定义View如何考虑机型适配
  • 自定义View的事件
  • AstncTask+HttpClient 与 AsyncHttpClient有什么区别?
  • LaunchMode应用场景
  • AsyncTask 如何使用?
  • SpareArray原理
  • 请介绍下ContentProvider 是如何实现数据共享的?
  • AndroidService与Activity之间通信的几种方式
  • IntentService原理及作用是什么?
  • 说说Activity、Intent、Service 是什么关系
  • ApplicationContext和ActivityContext的区别
  • SP是进程同步的吗?有什么方法做到同步?
  • 谈谈多线程在Android中的使用
  • 进程和 Application 的生命周期
  • 封装View的时候怎么知道view的大小
  • RecycleView原理
  • AndroidManifest的作用与理解
    2020美团Android面试(附全套面试真题解析)_第2张图片
    (三)常见的一些原理性问题
  • Handler机制和底层实现
  • Handler、Thread和HandlerThread的差别
  • handler发消息给子线程,looper怎么启动?
  • 关于Handler,在任何地方new Handler 都是什么线程下?
  • ThreadLocal原理,实现及如何保证Local属性?
  • 请解释下在单线程模型中Message、Handler、Message Queue、Looper之间的关系
  • 请描述一下View事件传递分发机制
  • Touch事件传递流程
  • 事件分发中的onTouch 和onTouchEvent 有什么区别,又该如何使用?
  • View和ViewGroup分别有哪些事件分发相关的回调方法
  • View刷新机制
  • View绘制流程
  • 自定义控件原理
  • 自定义View如何提供获取View属性的接口?
  • Android代码中实现WAP方式联网
  • AsyncTask机制
  • AsyncTask原理及不足
  • 如何取消AsyncTask?
  • 为什么不能在子线程更新UI?
  • ANR产生的原因是什么?
  • ANR定位和修正
  • oom是什么?
  • 什么情况导致oom?
  • 有什么解决方法可以避免OOM?
  • Oom 是否可以try catch?为什么?
  • 内存泄漏是什么?
  • 什么情况导致内存泄漏?
  • 如何防止线程的内存泄漏?
  • 内存泄露场的解决方法
  • 内存泄漏和内存溢出区别?
  • LruCache默认缓存大小
  • ContentProvider的权限管理(解答:读写分离,权限控制-精确到表级,URL控制)
  • 如何通过广播拦截和abort一条短信?
  • 广播是否可以请求网络?
  • 广播引起anr的时间限制是多少?
  • 计算一个view的嵌套层级
  • Activity栈
  • Android线程有没有上限?
  • 线程池有没有上限?
  • Android为什么引入Parcelable?
  • 有没有尝试简化Parcelable的使用?
    2020美团Android面试(附全套面试真题解析)_第3张图片

二、Java面试题

熟练掌握java是很关键的,大公司不仅仅要求你会使用几个api,更多的是要你熟悉源码实现原理,甚至要你知道有哪些不足,怎么改进,还有一些java有关的一些算法,设计模式等等。
**(一、)Java **

  • HashMap 和 HashTable 以及 CurrentHashMap 的区别。
  • synchronized 和 volatile 、ReentrantLock 、CAS 的区别。
  • JVM 类加载机制、垃圾回收算法对比、Java 虚拟机结构等。
  • Java 的四大引用
  • Java 的泛型, 的区别。
  • Java 线程有哪些状态,有哪些锁,各种锁的区别。
  • final 、finally、finalize 区别。
  • 接口和抽象类的区别。
  • sleep 、wait、yield 的区别,wait 的线程如何唤醒它?
    2020美团Android面试(附全套面试真题解析)_第4张图片

三、高级开发技术面试题

一、图片

1、图片库对比
2、LRUCache原理
3、图片加载原理
4、自己去实现图片库,怎么做?
5、Glide源码解析
6、Glide使用什么缓存?
7、Glide内存缓存如何控制大小?

2020美团Android面试(附全套面试真题解析)_第5张图片

** 二、网络和安全机制**

1.网络框架对比和源码分析
2.自己去设计网络请求框架,怎么做?
3.网络请求缓存处理,okhttp如何处理网络缓存的
4.从网络加载一个10M的图片,说下注意事项
5.TCP的3次握手和四次挥手
6.TCP与UDP的区别
7.TCP与UDP的应用
8.HTTP协议
9.HTTP1.0与2.0的区别
10.HTTP报文结构
11.HTTP与HTTPS的区别以及如何实现安全性
12.如何验证证书的合法性?
13.https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?
14.client如何确定自己发送的消息被server收到?
15.谈谈你对WebSocket的理解
16.WebSocket与socket的区别
17.谈谈你对安卓签名的理解。
18.请解释安卓为啥要加签名机制?
19.视频加密传输
20.App 是如何沙箱化,为什么要这么做?
21.权限管理系统(底层的权限是如何进行 grant 的)?

2020美团Android面试(附全套面试真题解析)_第6张图片

三、数据库

1.Sqlite升级,增加字段的语句
2.数据库框架对比和源码分析
3.数据库的优化
4.数据库数据迁移问题

2020美团Android面试(附全套面试真题解析)_第7张图片

四、插件化、模块化、组件化、热修复、增量更新、Gradle

1.对热修复和插件化的理解
2.插件化原理分析
3.模块化实现(好处,原因)
4.热修复、插件化
5.项目组件化的理解
6.描述清点击 Android Studio 的 build 按钮后发生了什么

2020美团Android面试(附全套面试真题解析)_第8张图片

五、架构设计和设计模式

1.谈谈你对Android设计模式的理解
2.MVC MVP MVVM原理和区别
3.你所知道的设计模式有哪些?
4.项目中常用的设计模式
5.手写生产者/消费者模式
6.写出观察者模式的代码
7.适配器模式,装饰者模式,外观模式的异同?
8.用到的一些开源框架,介绍一个看过源码的,内部实现过程。
9.谈谈对RxJava的理解
10.Rxjava发送事件步骤
11.RxJava的作用,与平时使用的异步操作来比的优缺点
12.说说EventBus作用,实现方式,代替EventBus的方式
13.从0设计一款App整体架构,如何去做?
14.说一款你认为当前比较火的应用并设计(比如:直播APP,P2P金融,小视频等)
15.谈谈对java状态机理解
16.Fragment如果在Adapter中使用应该如何解耦?
17.Binder机制及底层实现
18.对于应用更新这块是如何做的?(解答:灰度,强制更新,分区域更新)?
19.实现一个Json解析器(可以通过正则提高速度)
20.统计启动时长,标准

2020美团Android面试(附全套面试真题解析)_第9张图片

六、性能优化

1.启动 app 黑白屏优化
2.稳定——内存优化
3.流畅——卡顿优化
4.节省——耗电优化
5.安装包——APK 瘦身
6.冷启动与热启动
7.内存泄漏的场景和解决办法
8. Bitmap 优化
9.LRU 的原理
10.webview 优化
11.如何避免 OOM?
...

2020美团Android面试(附全套面试真题解析)_第10张图片

**七、Android Framework **

1.Android 系统架构
2.View 的事件分发机制?滑动冲突怎么解决?
3.View 的绘制流程?
4.跨进程通信
5.Android 系统启动流程是什么?
6.启动一个程序,可以主界面点击图标进入,也可 以从一个程序中 跳转过去,二者有什么区别?
7.AMS 家族重要术语解释
8.用到的一些开源框架,介绍一个看过源码的,内部实现过程。
...

2020美团Android面试(附全套面试真题解析)_第11张图片

八、Android优秀三方库源码

1.网络底层框架:OkHttp 实现原理
2.网络封装框架:Retrofifit 实现原理
3.响应式编程框架:RxJava 实现原理
4.图片加载框架:Glide 实现原理
5.事件总线框架:EventBus 实现原理
6.内存泄漏检测框架:LeakCanary 实现原理
7.依赖注入框架:ButterKnife 实现原理
8.依赖全局管理框架:Dagger2 实现原理 
9.数据库框架:GreenDao 实现原理

2020美团Android面试(附全套面试真题解析)_第12张图片

简历+社招解答+经典HR面试解析

以上是整理总结的美团面试遇到的真题解析,希望对大家有帮助;同时很多人经常也会遇到很多关于简历制作,职业困惑、HR经典面试问题回答等有关面试的问题。同样我也搜集整理了全套简历制作、金三银四社招困惑、HR面试等问题解析,有疑问,可以提供专业的解答。

2020美团Android面试(附全套面试真题解析)_第13张图片

如何做好面试突击,规划学习方向?

面试题集可以帮助你查漏补缺,有方向有针对性的学习,为之后进大厂做准备。但是如果你仅仅是看一遍,而不去学习和深究。那么这份面试题对你的帮助会很有限。最终还是要靠资深技术水平说话。

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。建议先制定学习计划,根据学习计划把知识点关联起来,形成一个系统化的知识体系。

学习方向很容易规划,但是如果只通过碎片化的学习,对自己的提升是很慢的。

同时我还搜集整理2020年字节跳动,以及腾讯,阿里,华为,小米等公司的面试题,把面试的要求和技术点梳理成一份大而全的“ Android架构师”面试 Xmind(实际上比预期多花了不少精力),包含知识脉络 + 分支细节

2020美团Android面试(附全套面试真题解析)_第14张图片

在搭建这些技术框架的时候,还整理了系统的高级进阶教程,会比自己碎片化学习效果强太多。

2020美团Android面试(附全套面试真题解析)_第15张图片

网上学习 Android的资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。希望这份系统化的技术体系对大家有一个方向参考。

所有的内容被我整理成PDF,感兴趣的小伙伴(Github领取)PDF资料

你可能感兴趣的:(JVM,并发编程,数据传输与序列化,美团,android,面试,java,设计模式)