作者:王鑫
之前是在一家中小型的互联公司从事Android 开发工作,自我感觉份工作没有太多的挑战性,就选择了离职,于是就想去找份大厂的高薪工作。在离职后休息了一个星期,就开始准备去找工作,中间投过简历的公司有阿里、腾讯、拼多多、bilibili、YY等公司进行尝试。本想着这些公司没有过的话,还是去找一些中小公司算了,只要比之前的工资高就行。幸运的是经过 YY 3轮面后一个星期,我就收到了录用函。
所以今天特此赶来与大家分享我的面经。
面试过程(自我介绍跳过,直奔主题)
一面
- 说说自己的做过项目
- 描述一下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基本码流结构
总结
这次能拿到Offer实属不易,因准备面试的时间有限,面试时有些题差点被面试官带入准备好的坑里,好歹有幸在面试准备是,收集整理了一些往年面试题,利用过年期间的闲暇时刻就行了刷题,才侥幸的通过了这次面试,现在回头一下这些题,很多都与面试时被问到的有关,如果再更一次机会面试可能要比现在更好,就有底气去谈更高的薪资了。
唉!还好这次过了,小编本想将我收集整理的一些面试题一一的展现出来跟大家分享,帮助大家在面试途中少掉坑,但因文章篇幅长度限制,小编将其面试题整理成了PDF文档形式上传至 Github中,大家如想参考学习可以直接点击下方小卡片进行查阅。
|