金九银十我借200道Android研发面试题复习解析思路,斩获大厂Offer

126 篇文章 4 订阅
47 篇文章 2 订阅

2019年,“寒冬”之下,诸如“Android凉了”之类的话我已经屡见不鲜了,现在互联网行业的热潮已经褪去,开始恢复冷静,这样一来,互联网公司面向大量的开发者们,只会要求越来越高,部分Android开发者顶不住压力选择了转行,在此,我还是祝愿大家都能“活得满意,过得开心!”

与此同时,有很大一部分Android开发者仍在坚守。在这里,我可以明确的告诉大家Android没凉!未来5G、AI、物联网,马上就会迎来又一次的“数据大爆炸”,新的风口马上就要来临,Android开发的春天又回来了!

这里我引用雷军说过的一句话**“站在风口上,猪都会飞”**2333~

今年的金九银十就有很多仍在坚守Android阵地的开发者们选择了跳槽,毕竟,不管干哪行都是要挣钱嘛,这里我就把今年大家遇到的一些面试题做一些整理并分享给大家,帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习!

本文还包括Java 基础知识和 Kotlin 语法知识,大家可以根据自己的需要选择看哪一小节。

具体如下:

  • Java 语法必备
  • Kotlin 基础知识
  • Android 应用开发相关面试题
  • Android 音视频开发面试题
  • Android 底层开发面试题
  • 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 虚拟机和 Dalvik 虚拟机的区别
  21. 哪些情况下的对象会被垃圾回收机制处理掉
  22. 并发集合了解哪些
  23. 集合类以及集合框架
  24. 容器类介绍以及之间的区别
  25. List 和 Map 的实现方式以及存储方式
  26. HashMap 的实现原理
  27. HashMap 源码理解
  28. HashMap 几种遍历方式的实现
  29. HashSet 与 HashMap 怎么判断集合元素重复
  30. 数组和链表的区别
  31. 堆和树的区别
  32. 堆和栈在内存中的区别是什么
  33. 什么是深拷贝和浅拷贝
  34. 手写链表逆序代码
  35. 在 Java 中,什么时候用重载,什么时候用重写
  36. 使用工厂模式最主要的好处是什么
  37. 说一下泛型原理,并举例说明
  38. 泛型中 extends 和 super 的区别
  39. 什么是泛型中的限定通配符和非限定通配符
  40. HTTP 响应的结构是怎么样的
  41. HTTP 和 HTTPS 的区别
  42. 开启线程的三种方式
  43. 谈谈你对多线程同步机制的理解
  44. 如何控制某个方法允许并发访问线程的个数
  45. 什么导致线程阻塞
  46. 谈谈对 Synchronized 关键字,类锁,方法锁,重入锁的理解
  47. 谈谈 volatile 关键字的作用
  48. Synchronized 和 volatile 关键字的区别
  49. Synchronized 与 Lock 的区别
  50. 死锁的四个必要条件
  51. 怎么避免死锁
  52. 什么是线程池,如何使用
  53. 多线程断点续传原理

二、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. 如何保证多线程读写文件的安全
  68. Glide 内存缓存如何控制大小
  69. 简要概述 Android 垃圾收集器
  70. String 为什么要设计成不可变的
  71. 线程如何关闭,以及如何防止线程的内存泄漏
  72. Android 线程有没有上限
  73. Glide 加载一个一兆的图片(100x100),是否会压缩后再加载,放到一个200x200的 view 上会怎样,1000x1000呢,图片会很模糊,怎么处理
  74. Socket 建立网络连接的步骤
  75. 如何使用 OkHttp 进行异步网络请求,并根据请求结果刷新 UI
  76. 可否介绍一下 OkHttp 的整个异步请求流程
  77. OkHttp 对于网络请求都有哪些优化,如何实现的
  78. 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 破解(破壳技术)

Android学习PDF+架构视频+面试文档+源码笔记

最后

感谢大家能耐着性子,看完我啰哩啰嗦的文章。

我愿与各位坚守的同胞们互相学习,共同进步!

有需要面试题答案的朋友们请加我微信(15388039515)领取

在这里我也分享一份自己收录整理的**Android学习PDF+架构视频+面试文档+源码笔记,还有高级架构技术进阶脑图、Android开发面试专题资料,高级进阶架构资料**帮助大家学习提升进阶,也节省大家在网上搜索资料的时间来学习,也可以分享给身边好友一起学习

如果你有需要的话,可以点赞关注我关注微信公众号【Android开发之家】免费领取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值