哔哩哔哩我来了,see goodbye 马总!(1),安卓内存优化管理器
说说自己的做过项目
描述一下 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 基本码流结构
1、理论知识的梳理
因为面试时考验你原理性的知识,虽然我在腾讯工作了两年,但是毕竟是工作,很多理论知识都忘的
一干二净,于是去面试前,我利用收集来的字节大牛的面试笔记给自己做了一次完整的知识梳理。
(个人建议:去面试之前,给自己做一次完整的知识梳理是很有必要的,不仅加深了对理论知识的认知,还可以从中知晓自己对哪一模块的不了解,加深学习)
**Java 基础方面:**JVM、String、内部类、多态、抽象和接口、集合框架(Hashmap、Arraylist)、单例、线程、Synchronized、Look 锁、动态代理、引用
**Android 基础方面:**四大组件、View、进程、Bitmap、屏幕适配、消息机制、线程异步、WebView。
**Android 扩展方面:**ART、Apk 优化、Hook、Proguard、架构(MVC/MVP/MVVM)、Jetpack、NDK 开发。
**Android 源码方面:**Leakcanary、Eventbus
**设计模式方面:**面向对象六大原则、工厂模式、单例模式、建造者模式、观察者模式、适配器模式、策略模式、代理模式
算法方面: 排序、二叉树、链表、栈和队列、二分、hash 表、堆、数组/双指针、字符串处理、动态规划
**网络知识:**Http(缓存、Https、Http2.0)、TCP(三次握手四次挥手、socket)、类加载器
2、刷题
对于面试,刷题是非常重要的,刷题不仅能加深你对技术原理的认识,而且假如刷到当天的面试题血赚(不过,这种可能性非常小),但刷题还是很有必要的,起码加深了自己对原理、底层的理解。
需要刷题领取上方资料的朋友请点击【GitHub】获取!!!
3、完善简历
大家都知道去面试的过程中,简历对于面试有着至关重要的作用,一份观赏清晰的简历能帮助求职者在面试官心中有着非常不错的印象,仅仅从这一点来看,简历的完善就是非常有必要的。
简历该怎么写?
1、尽可能突出自己的优势
制作简历一定要学会突出重点,写出自己的优势,如你在上一家公司做出的贡献,就要写在显眼的位置进行突出,用颜色加深再好不过。如果你的优势是学历,那么学历就要放在第一页,因为 HR 在筛选简历时,一份简历往往只看那么几秒钟,你需要做到的就是让 HR 一眼看中你的简历。
2、描述自己做到了什么,而不是做了什么
很多程序员会在自己的项目或是技术栈里这样描述:在某项目,我负责 xxxx,如重构,如优化。但实际上,面试官想要看到的是你在项目中,重构和优化带来了什么样的好处和效果,如果说性能提升了,那么提升的数据和情况是如何的,要一一描述出来,所以重点应该是“将项目做到了什么样子,做成了什么事”。
完成这两点,一份漂亮的简历即可出炉。
评论