Android 面试题 200 道 :全面解析

马上就到跳槽的黄金时期,不知道准备跳槽的朋友们准备好接受面试官的考验了吗?如果没有,你还在为寻遍万千无一无所获而烦恼吗?本篇 Chat 虽不能为大家找工作打包票,但是却能让大家在准备面试的时候事半功倍,不用再浪费时间找面试题搜索答案了,你想要的我都有。

获取答案,扫码参与

https://gitbook.cn/gitchat/activity/5d415a1b60cd852172cb8557

本 Chat 也包含 Java 的基础知识和 Kotlin 语法知识,具体如下:

  1. Java 语法必备

  2. Kotlin 基础知识

  3. Android 应用开发相关面试题解析

  4. Android 音视频开发面试题解析

  5. Android 底层开发面试题解析

  6. Android 向开发面试题解析

Java 基础

  1. 简要说说常见编码和字节占用数
  2. String、StringBuffer 与 StringBuilder 的区别
  3. HashMap 和 Hashtable 有什么区别?
  4. ArrayList 和 LinkedList 有什么区别?
  5. 什么是自动装箱拆箱
  6. Object 有哪些公用方法?
  7. Java 的四种引用,强弱软虚,用到的场景。
  8. 抽象类与接口的区别
  9. 匿名内部类使用的参数为什么要是 final 的
  10. Java 中实现多态的机制是什么?
  11. 线程 sleep 和 wait 有什么区别
  12. 闭包和局部内部类的区别
  13. 进程和线程的区别
  14. 序列化有哪些方式
  15. Serializable 和 Parcelable 的区别
  16. 静态属性和静态方法是否可以被继承?是否可以被重写?
  17. 成员内部类、静态内部类、局部内部类和匿名内部类的理解
  18. 说说你对 Java 反射的理解
  19. 说说你对 Java 注解的理解
  20. Java 虚拟机的工作原理
  21. Java 虚拟机和 Dalvik 虚拟机的区别
  22. 哪些情况下的对象会被垃圾回收机制处理掉?
  23. 并发集合了解哪些?
  24. 集合类以及集合框架
  25. 容器类介绍以及之间的区别
  26. List 和 Map 的实现方式以及存储方式
  27. HashMap 的实现原理
  28. HashMap 源码理解
  29. HashMap 几种遍历方式的实现
  30. HashSet 与 HashMap 怎么判断集合元素重复
  31. 数组和链表的区别
  32. 堆和树的区别
  33. 堆和栈在内存中的区别是什么
  34. 什么是深拷贝和浅拷贝
  35. 手写链表逆序代码
  36. 在 Java 中,什么时候用重载,什么时候用重写?
  37. 使用工厂模式最主要的好处是什么?
  38. 说一下泛型原理,并举例说明
  39. 泛型中 extends 和 super 的区别
  40. 什么是泛型中的限定通配符和非限定通配符
  41. HTTP 响应的结构是怎么样的?
  42. HTTP 和 HTTPS 的区别
  43. 开启线程的三种方式?
  44. 谈谈你对多线程同步机制的理解?
  45. 如何控制某个方法允许并发访问线程的个数?
  46. 什么导致线程阻塞?
  47. 谈谈对 Synchronized 关键字,类锁,方法锁,重入锁的理解
  48. 谈谈 volatile 关键字的作用
  49. Synchronized 和 volatile 关键字的区别
  50. Synchronized 与 Lock 的区别
  51. 死锁的四个必要条件?
  52. 怎么避免死锁?
  53. 什么是线程池,如何使用?
  54. 多线程断点续传原理

Kotlin 面试题

  1. 你有使用过 Kotlin 来开发 Android 应用吗?说说 Kotlin 和 Java 有什么区别?
  2. Kotlin 如何与 Java 混编
  3. 协程
  4. 说一下 Kotlin 的伴生对象(关键字 companion 使用要说出来)
  5. Kotlin 的高阶函数使用过吗
  6. 当你项目中同时使用 Kotlin 和 Java ,你是如何保证空指针问题的?
  7. Kotlin 是否向后兼容?
  8. Kotlin 是否支持宏?
  9. Kotlin 类的默认类型是什么?
  10. Kotlin 内联函数的使用

Android 应用开发

生命周期

  1. 说说 Activity 的生命周期
  2. 说说 Fragment 生命周期?
  3. 说说 Service 生命周期?
  4. 下拉状态栏是不是影响 activity 的生命周期,如果在 onStop 的时候做了网络请求,onResume 的时候怎么恢复
  5. Activity 上有 Dialog 的时候按 home 键时的生命周期
  6. 横竖屏切换的时候,AVctivity 各种情况下的生命周期

View/UI 相关

  1. 简单概述 View 的绘制流程
  2. View,ViewGroup 事件分发
  3. 概述 Android UI 适配方案
  4. 理解 Activity,View,Window 三者关系
  5. View 滑动冲突怎么解决
  6. View 渲染流程

其他

  1. 动态权限适配方案,权限组的概念
  2. 网络请求缓存处理,okhttp 如何处理网络缓存的
  3. bitmap 如何处理大图,如一张 30M 的大图,如何预防 OOM
  4. 进程保活,如何实现常驻进程
  5. LRUCache 原理
  6. Handler 机制
  7. App 是如何沙箱化,为什么要这么做
  8. handler 发消息给子线程,looper 怎么启动
  9. 怎么启动 service,service 和 activity 怎么进行数据交互
  10. 四种 LaunchMode 及其使用场景
  11. Android 中的几种动画有哪些
  12. Android 中跨进程通讯的几种方式
  13. Binde 机制简单理解
  14. 热修复的原理
  15. Android 内存泄露及管理
  16. Fragment 与 Fragment、Activity 通信的方式
  17. 概述 Android 优化方案
  18. 内存泄漏与内存溢出区别
  19. MVP,MVC,MVVM 的优劣
  20. Universal-ImageLoader,Picasso,Fresco,Glide 对比
  21. Xutils, OKhttp, Volley, Retrofit 对比
  22. 跨进程通信的几种方式
  23. 简述 TCP,UDP,Socket
  24. 进程和线程的区别
  25. 内存泄露如何查看和解决
  26. RecyclerView 的拖拽怎么实现的?
  27. RcyclerView 嵌套卡顿解决如何解决
  28. Dgger2 框架的了解
  29. SharedPreference 跨进程使用会怎么样?如何保证跨进程使用安全?
  30. Android 的数据存储方式--持久化技术
  31. Android 数据解析的几种方式及优劣
  32. Fragment 的生命周期
  33. Fragment 的切换方式
  34. 消息推送原理以及实现过程
  35. Alipay 的支付流程?
  36. 加密解密技术
  37. 图片的三级缓存
  38. AIDL 的使用
  39. 常用的 git 命令
  40. git 冲突的产生原因以及解决?
  41. 如何避免冲突?
  42. 广播(动态注册和静态注册区别,有序广播和标准广播)
  43. Android 中哪里使用了观察者模式
  44. Android 系统为什么会设计 ContentProvider,进程共享和线程安全问题
  45. RxJava 的功能与原理实现
  46. sqlite 升级,增加字段的语句
  47. 强引用置为 null,会不会被回收?
  48. glide 使用什么缓存?
  49. AndroidManifest 的作用与理解
  50. 如何计算一个 view 的嵌套层级
  51. EventBus 实现原理
  52. Application 和 Activity 的 context 对象的区别
  53. ViewPager 使用细节,如何设置成每次只初始化当前的 Fragment,其他的不初始化
  54. 如何实现 Fragment 的滑动
  55. 差值器&估值器
  56. 介绍下 SurfView
  57. 概述 Android 事件分发机制
  58. 如何进行 Android 电量优化
  59. Activity 栈相关
  60. 封装 view 的时候怎么知道 view 的大小
  61. App 启动崩溃异常捕捉
  62. 手写生产者/消费者模式
  63. Activity 之间的通信方式
  64. Activity 与 Service 通信的方式
  65. Oom 是否可以 try catch ?
  66. 在任何地方 new handler 都是什么线程下
  67. 如何保证多线程读写文件的安全?
    143.Glide 内存缓存如何控制大小?
    144.简要概述 Android 垃圾收集器
  68. String 为什么要设计成不可变的?
  69. 线程如何关闭,以及如何防止线程的内存泄漏
  70. Android 线程有没有上限?
  71. Glide 加载一个一兆的图片(100x100),是否会压缩后再加载,放到一个200x200的 view 上会怎样,1000x1000呢,图片会很模糊,怎么处理?
  72. Socket 建立网络连接的步骤
  73. 如何使用 OkHttp 进行异步网络请求,并根据请求结果刷新 UI
  74. 可否介绍一下 OkHttp 的整个异步请求流程
  75. OkHttp 对于网络请求都有哪些优化,如何实现的
  76. OkHttp 框架中都用到了哪些设计模式

音视频面试题

  1. 常用的编码格式有哪些
  2. 常用的封装格式有哪些
  3. 说说 YUV 与 RGB 格式的转换
  4. 传输语音的格式一般有哪些
  5. 列举一些音视频编码常用的实现方案
  6. 请叙述 MPEG 视频基本码流结构
  7. 请叙述 AMR 基本码流结构
  8. 预测编码的基本原理是什么
  9. 丢包恢复算法怎么实现的?丢包是由于网络不好导致的,还是确实丢包了,丢包率怎么反馈给发送端的?
  10. 回音消除的实现原理
  11. Opus,G.711 音频编解码的实现原理?OPus 的好处,最低带宽是多少?
  12. 音视频数据传输怎么判断延迟发生在哪个阶段?
  13. 带宽估计和带宽反馈是怎么做的?
  14. 为什么要有 YUV 这种数据出来?优点在哪?
  15. 为什么要用 FLV?
  16. 视频硬编码-压缩率关键参数设置
  17. 什么是大小端?网络通信中的大小端问题如何解决?
  18. TCP 和 UDP 的区别?UDP 如何实现可靠传输?
  19. 视频或者音频传输,你会选择 TCP 协议还是 UDP 协议?为什么?
  20. 如何实现服务器高并发?都有什么方式?你会选择什么方式?为什么?
  21. TCP、UDP 如何处理丢包问题?
  22. TCP如何实现可靠传输,讲一下超时重传?
  23. AsyncTask 内部维护了一个线程池,是串行还是并行,怎么维护的?
  24. Material Design 如何定义一个 Behavior

底层开发面试题

  1. Android sqlite3 是否支持并发访问?
  2. Android wap 访问方式。
  3. 介绍 Android IPC 机制
  4. ART、Dalvik 和 JVM 的关系及区别是什么?
  5. 例举一下 Android 系统级服务,在 App 层一般都用过哪些?如何实现一个自定义的系统级服务?
  6. 概述 Binder 机制。
  7. Launcher 的实现。
  8. 系统级 app 和第三方应用级 app 分别在什么目录下?一个第三方的 app 能否直接放到系统级 app 目录下而又能正常运行?
  9. 能不能单独编译一个系统级应用?
  10. JNI,共享库和静态库的区别和使用场景,JNI 中 C/C++ 和 Java 相互调用各自使用的机制是什么?
  11. 如何限制第三方应用安装?

逆向开发面试题

  1. Andorid 如何本地提权获得 root 权限
  2. 概述 Android 打包流程
  3. 概述 Android 反编译流程
  4. 概述 Android 破解流程
  5. 注入有哪几种方式?
  6. 空结构体多少个字节?
  7. 用const修饰一个函数有什么作用?
  8. Smali 是什么
  9. Smali 的数据类型和 Java 的对应关系
  10. 了解 Android 的加解密
  11. 了解反破解的技术
  12. 简要概述 so 破解(破壳技术)

获取答案,扫码参与

https://gitbook.cn/gitchat/activity/5d415a1b60cd852172cb8557

你可能感兴趣的:(android)