哔哩哔哩Android一、二、三面面经
B站面试总体感觉还是挺不错,没有问到非常底层的、但是面试的广度还是有的,感觉面试官很喜欢问JVM和音视频。
一面
- 说说自己的做过项目
- 描述一下JVM加载class文件的原理机制?
- 解释内存中的栈(stack)、堆(heap)和方法区(method area)的用法
- 悲观锁的使用场景
- Activity A启动另一个Activity B会回调哪些方法?如果Activity B是完全透明呢?如果启动的是一个Dialog呢?
- 描述一下view事件的分发机制
- 简述一下多路复用的原理
- 解释一下 JNI 中全局引用和局部引用的区别和使用
- 单例如何防止反射漏洞攻击
- 简述EventBus的基本使用
- 输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。例如输入数组{32, 321},则输出这两个能排成的最小数字32132。
二面
- 在项目过程中,你出现过什么问题?
- JVM的永久代中会发生垃圾回收么?
- 给出一个单链表(不带头节点)和一个数K,请翻转此单链表?
- HashMap的扩容方式?负载因子是多少?为什是这么多?
- 今日头条的轻量级适配方案了解吗 & 给我说说原理
- 多线程的情况下,类的加载为什么不会出现重复加载的情况?
- Jetpack Lifecycle是用来干啥?
- 谈谈Fragment3种切换的方式以及区别 & 使用场景
- Handler导致的内存泄露你是如何解决的?
- 给我谈谈插值器 & 估值器 的作用
- 说说Activity & BroadcastReceiver & Serice最长可耗时时间为多少?
三面
- 你知道无论是Kotlin或者是Java,程序运行的主要入口都是main()方法,那么Android的main方法在哪里?
- 谈谈Android系统安装apk的过程?
- 为什么子线程不能更新UI?
- 对音视频开发有过了解吗?
- 常见的数字音频编码文件格式有哪些,并简述其特点
- 列举一些音频编解码常用的实现方案
- 预测编码的基本原理是什么
- 请叙述MPEG视频基本码流结构
- 请叙述AMR基本码流结构