|  
 作者:王鑫 之前是在一家中小型的互联公司从事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中,大家如想参考学习可以直接点击下方小卡片进行查阅。  
 
 |