2020年【腾讯+百度+字节+阿里】Android一线开发岗面试真题最新汇总(持续更新中...)

腾讯面试真题

网络编程

  1. 我项目中Socket是怎么实现IM通讯的;
  2. Socket通讯,怎么实现图片,大文件传输;
  3. http报文结构;
  4. https中哪里用了对称加密,哪里用了非对称加密,对加密算法(如RSA)等是否有了解?
  5. http,https有什么不同,如何进行加密,各种加密算法的性能;
  6. 你知道的几种网络请求方式,get和post有什么区别,性能比较;
  7. 三次握手,四次挥手;浏览器请求一个网址的过程;

IO

  1. 10G Text文本,怎么读取到页面上;
  2. 封装一个网络框架,考虑哪些问题,使用多线程,下载一个大文件,如何得知文件下载完成

设计模式

  1. 单例模式几种,双层检测单例为啥要进行第二次判断,它一定安全么?
  2. 内部类为什么只会被加载一次。。。。。。。一个问题的延伸至代理模式,装饰者模式

数据结构+算法

  1. Java中你了解几种数据结构;
  2. 那你用过hashtable么,他是怎么实现唯一性的;
  3. 那你说下LinkeMap吧;
  4. 怎么监测链表有没有产生死循环;
  5. 你熟悉哪些算法,他们得时间复杂度是怎么样的;
  6. arrayMap的实现原理
  7. 1~100的int数组,循环打印输出index的为8的倍数的value并删除,要求,效率要高
  8. 设计一个算法,实现输出展示Android系统的所有文件路径;

序列化

  1. Android中Serializable和Parcelable原理,效率等;
  2. intent传递大小限制;怎么传输一直10M的图片;

并发编程

  1. 线程池有几种,锁有几种,线程的原子性等等。。;
  2. 多线程操作;

虚拟机

  1. 虚拟机内存模型,垃圾回收算法,JVM老年代和新生代的比例;
  2. java虚拟机和Dalvik虚拟机的区别

屏幕适配

  1. 怎么实现屏幕适配,dp,px转换关系;
  2. dp适配准确么,为什么不会。

四大组件原理

  1. provider原理;
  2. 广播的通讯原理;

Handler

  1. handle原理,在哪初始化loop,循环为啥不阻塞主线程
  2. handle中怎么实现消息延时发送的;

View

  1. view的绘制流程,从哪开始绘制的,事件分发机制;
  2. 自定义VIew,把一行String字体绘制到画板中间,怎么计算中间位置,怎么计算String字符串长度,高度等;
  3. 事件分发机制,view的事件中onCancle是怎么触发的

性能优化(Bitmap)

  1. 项目中怎么做性能,内存优化的,怎么监测性能,内存抖动的原因;
  2. 从网络加载一个10M的图片;
  3. 怎么读取一张100m的图片;
  4. LruCache原理;

跨进程通信

  1. 跨进程通讯几种方式,怎么实现一次性拷贝;
  2. 你项目中用到跨进程通讯的场景;
  3. binder通讯原理;

MVVM

  1. mvvm原理
  2. databinding的实现原理;mvvm中是怎么实现数据双向绑定的,原理是什么,liveData的原理

组件化

  1. 项目中组件化通讯是怎么实现的,事件总线怎么通讯;
  2. aRouter源码看过么,内部怎么实现的;
  3. 搭建一个组件化框架,思想,考虑哪些问题;

插件化与热修复

  1. 插件化如何加载插件;
  2. classLoade加载机制;
  3. 热修复资源文件的方案,插件化activity的hook点;
  4. 类的生命周期,加载流程;
  5. 热修复一个xml文件;
  6. Android类加载器有几种,分别应用什么场景;

开源框架原理

  1. RxJava的原理;
  2. RxJava会产生内存泄漏么,RxJava怎么实现背压,map和flatmap的区别;
  3. glide原理,生命周期的监听实现;
  4. eventbus原理,线程切换;
  5. eventbus是怎么样实现线程切换的;
  6. Retrofit原理,动态代理实现,动态代理的优缺点;

Framework

  1. 说下系统的启动流程,从电源键按下开始;

阿里面试真理

  1. Activity 的生命周期;
  2. Android 的 4 大启动模式,注意 onNewIntent() 的调用;
  3. 组件化架构思路,如何从一个老项目一步一步实现组件化,主要问实现思路,考察应试者的架构能力和思考能力。
  4. 这一块内容真的很多,你需要考虑的问题很多,哪一步做什么,顺序很重要。
  5. MVC、MCP、MVVP 的区别和各种使用场景,如何选择适合自己的开发架构?
  6. Router 原理,如何实现组件间通信,组件化平级调用数据方式。
  7. 系统打包流程;
  8. APP 启动流程;
  9. 如何做启动优化?
  10. 冷启动什么的肯定是基础,后续应该还有的是懒加载,丢线程池同步处理,需要注意这里可能会有的坑是,丢线程池如何知道全部完成。
  11. 事件分发机制。
  12. 事件分发已经不是直接让你讲了,会给你具体的场景,比如 A 嵌套 B ,B 嵌套 C,从 C 中心按下,一下滑出到 A,事件分发的过程,这里面肯定会有 ACTION_CANCEL 的相关调用时机。
  13. 如何检测卡顿,卡顿原理是什么,怎么判断是页面响应卡顿还是逻辑处理造成的卡顿?
  14. 生产者模式和消费者模式的区别?
  15. 单例模式双重加锁,为什么要这样做。
  16. Handler 机制原理,IdleHandler 什么时候调用。
  17. LeakCanary 原理,为什么检测内存泄漏需要两次?
  18. BlockCanary 原理。
  19. ViewGroup 绘制顺序;
  20. Android 有哪些存储数据的方式。
  21. SharedPrefrence 源码和问题点;
  22. 讲讲 Android 的四大组件;
  23. 属性动画、补间动画、帧动画的区别和使用场景;
  24. 自定义 ViewGroup 如何实现 FlowLayout?如何实现 FlowLayout 调换顺序?
  25. 自定义 View 如何实现打桌球效果;
  26. 自定义 View 如何实现拉弓效果,贝瑟尔曲线原理实现?
  27. APK 瘦身是怎么做的,只用 armabi-v7a 没有什么问题么?
  28. APK 瘦身这个基本是 100% 被面试问到,可能是我简历上提到的原因。
  29. ListView 和 RecyclerView 区别?RecyclerView 有几层缓存,如何让两个 RecyclerView 共用一个缓存?
  30. 如何判断一个 APP 在前台还是后台?
  31. 如何做应用保活?全家桶原理?
  32. 讲讲你所做过的性能优化。
  33. Retrofit 在 OkHttp 上做了哪些封装?动态代理和静态代理的区别,是怎么实现的。
  34. 讲讲轨迹视频的音视频合成原理;
  35. AIDL 相关;
  36. Binder 机制,讲讲 Linux 上的 IPC 通信,Binder 有什么优势,Android 上有哪些多进程通信机制?
  37. RxJava 的线程切换原理。
  38. OkHttp 和 Volloy 区别;
  39. Glide 缓存原理,如何设计一个大图加载框架。
  40. LRUCache 原理;
  41. 讲讲项目开发中遇到的最大的一个难题和挑战;
  42. 说说你开发最大的优势点。出现率同上。

字节面试真题

  1. 什么是ANR,如何避免
  2. 主线程中的Looper.loop()一直无限循环为什么不会造成ANR?
  3. ListView原理与优化
  4. ContentProvider实现原理
  5. 如何使用ContentProvider进行批量操作?
  6. 为什么要使用通过`ContentResolver`类从而与`ContentProvider`类进行交互,而不直接访问`ContentProvider`类?
  7. 介绍Binder机制
  8. 如何自定义View,如果要实现一个转盘圆形的View,需要重写View中的哪些方法?
  9. Android事件分发机制
  10. 如何加载大图片
  11. 布局文件中,layout_gravity 和 gravity 以及 weight的作用。
  12. ListView里的ViewType机制
  13. TextView怎么改变局部颜色
  14. Activity A 跳转到 Activity B,生命周期的执行过程是啥?
  15. Android中Handler声明非静态对象会发出警告,为什么非得是静态的?
  16. ListView使用过程中是否可以调用addView
  17. 属性动画(Property Animation)和补间动画(Tween Animation)的区别,为什么在3.0之后引入属性动画
  18. 有没有使用过EventBus或者Otto框架,主要用来解决什么问题,内部原理
  19. Android里的LRU(Least Recently Used 最近最少使用)算法原理
  20. Service onBindService 和startService 启动的区别
  21. invalidate()和postInvalidate() 的区别
  22. 导入外部数据库
  23. Parcelable和Serializable区别
  24. 在两个 Activity 之间传递对象还需要注意什么呢?
  25. Android里跨进程传递数据的几种方案
  26. 匿名共享内存,使用场景
  27. Application类的作用
  28. 广播注册后不解除注册会有什么问题?(内存泄露)
  29. 属性动画(Property Animation)和补间动画(Tween Animation)的区别
  30. BrocastReceive里面可不可以执行耗时操作?
  31. Android优化工具
  32. TraceView
  33. Systrace
  34. Android动态权限?
  35. ViewPager如何判断左右滑动?
  36. ListView与RecyclerView
  37. SpannableString
  38. APK安装过程
  39. 描述一下Android手机启动过程和App启动过程?
  40. Android手机启动过程
  41. App启动过程
  42. Include、Merge、ViewStub的作用
  43. Asset目录与res目录的区别
  44. System.gc && Runtime.gc
  45. Application 在多进程下会多次调用 onCreate() 么?
  46. Theme && Style
  47. SQLiteOpenHelper.onCreate() 调用时机?
  48. Removecallback 失效?
  49. Toast 如果会短时间内频繁显示怎么优化?
  50. Notification 如何优化?
  51. 应用怎么判断自己是处于前台还是后台?
  52. FragmentPagerAdapter 和 FragmentStateAdapter 的区别?
  53. Bitmap的本质?
  54. SurfaceView && View && GLSurfaceView
  55. 请简述一下你对fragment的理解?
  56. 请简述一下Fragment的生命周期?
  57. LayoutInflater,LayoutInflater.inflate()这两个是什么意思?
  58. Android的多渠道打包你了解吗
  59. 如何对APK瘦身?
  60. Android当前应用跳转到三方应用
  61. JVM、ART、Dalvik的区别和联系
  62. Android中的classLoader相比java中的classLoader有什么区别?
  63. Socket和LocalSocket
  64. HttpClient和URLConnection的区别,怎么使用https
  65. 设计一个网络请求框架(可以参考Volley框架)
  66. 网络图片加载框架(可以参考BitmapFun)

汇总

2020年【腾讯+百度+字节+阿里】Android一线开发岗面试真题最新汇总(持续更新中...)_第1张图片

阿里面试真题部分答案(Android)

2020年【腾讯+百度+字节+阿里】Android一线开发岗面试真题最新汇总(持续更新中...)_第2张图片

2020年【腾讯+百度+字节+阿里】Android一线开发岗面试真题最新汇总(持续更新中...)_第3张图片

由于篇幅较长,建议大家收藏后有时间慢慢阅读,如果文中有什么不正确的地方,可以私信我,我会及时反馈纠正。

不知道面试技巧的朋友

建议阅读:“Android程序员如何在面试中更胜一筹?”

对职业规划迷茫的朋友

建议阅读:“2020年Android开发人员打破寒冬期的利器在哪里?是转行还是进阶?”

我们最好的学习能力就是阅读,希望你们能在文章中找到答案

关注公众号【谈谈Android那些事】,每日分享互联网行业android技术干货!

你可能感兴趣的:(学习,面试,面试,android,移动开发)