大家应该看过很多分享面试成功的经验,但根据幸存者偏差的理论,也许多看看别人面试失败在哪里,对自己才更有帮助。
最近跟一个朋友聊天,他漫不经心地复习了几个月,就去参加了字节跳动面试,分别是抖音社交和抖音电商,都是三轮面试后通知挂了,实在有点可惜,
抖音社交
一面 60min
-
项目
-
volitale与synchronized的区别
-
手写单例
-
匿名内部类如何持有外部类对象
-
内存泄漏的概念
-
内存泄漏的场景
-
内存泄漏检测的工具
-
handler原理,sendMessage与sendMessageDelay如何保证Message放入MessageQueue中的顺序
-
两个Message相隔5秒,这5秒内线程会一直阻塞吗
-
自定义 View如何特殊处理wrap_content,padding的实现
-
MVVM和MVP 的区别(引出了一系列问题,不是很了解就直接说不了解比较好)
-
LiveData与RxJava的区别
-
LiveData生命周期感知如何实现
-
介绍RxJava
-
https与http的区别,中间人如何修改密钥
-
算法:二叉树z字形打印
二面 70min
-
项目
-
final、finally与finalize的区别
-
java开启一个线程的方式
-
Thread.start()与直接调用run()的区别
-
Java默认提供了几种线程池
-
thread{ i++ }执行10次结果,如何让i最后等于10
-
synchronized与reentrantlock区别
-
死锁
-
悲观锁乐观锁
-
gc垃圾回收
-
垃圾标记阶段,Python如何实现的断开循环引用
-
Retrofit返回的是什么数据类型
-
服务器返回的数据有哪些类型,为什么不能用xml类型返回
-
请求数据这个过程发生了什么
-
get与post请求的区别,get与post携带数据的区别
-
java注解
-
kotlin扩展函数原理
-
算法:两个链表相加
三面 50min
- main方法执行之前发生了什么
public class Main {
public static void main(String[] args) {
System.out.println(Main.class.getName());
}
}
-
System.out.println(“a”)将字符输出到屏幕发生了什么
-
双击QQ发生了什么
-
浏览器输入url发生了什么
-
根据前序遍历和中序遍历输出后序遍历
-
如果排期只有一周的任务,但是以我的能力需要两周才能完成,这个时候你会怎么办。
-
k个一组反转链表
抖音电商
一面 50min
-
实习学到的架构
-
MVVM
-
Dagger原理
-
livedata原理
-
进程和线程
-
操作系统IO模型
-
进程通信方式
-
管道通信原理
-
TCP协议如何实现可靠传输
-
UDP如何实现可靠传输
-
java创建线程
-
线程池原理
-
线程池拒绝策略
-
synchronized与reentrantlock实现方式的区别
-
AQS原理
-
handler原理
-
Retrofit原理
-
算法: 二叉树右视图 — 非递归实现
二面 50min
-
Navigation的优缺点
-
如何实现的自定义navigate方法切换fragment,如何让被覆盖的fragment感知到生命周期
-
gc如何判断垃圾对象
-
成员变量与局部变量的区别,局部变量的值一定是存放在堆中吗()
-
jvm类加载的时机
-
jvm类加载过程
-
双亲委托机制是什么
-
双亲委托机制什么时候会被破坏
-
内存泄漏是什么
-
volatile的作用
-
写一个死锁
-
算法:判断A是否是B的子树
三面 50min
-
自己是如何学习Android的
-
实习过程中做的需求说一下
-
实习过程中的难点说一个
-
实习过程中和哪些人接触的比较多
-
如何和别人沟通的
-
实习的收获
-
挑一个项目说一下
-
里氏替换原则
-
http状态码
-
http多路复用
-
数据库
-
拿了哪些offer
-
算法 汉字表示的数字转成阿拉伯表示。
老实说,这位老兄面的算简单的了,只是没有做好万全的准备就去面试了。
所以啊,不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流~
下面是我花了将近一个月的时间整理的一份面试题库。这些面试题,包括我本人自己去面试遇到的,还有其他人员去面试遇到的,我都统一的整理了一下,希望对大家有用。
第一章 Android 高频面试之必考Java基础
1,面向对象和面向过程的区别
2,面向对象的特征有哪些
3,解释下Java的编译与解释并存的现象
4,简单介绍下JVM的内存模型
5,简单介绍下Java的类加载器
6,谈一下Java的垃圾回收,以及常用的垃圾回收算法。
7,成员变量和局部变量的区别
8,Java 中的方法重写(Overriding)和方法重载(Overload)的含义
9,简单介绍下传递和引用传递
10,为什么重写 equals 时必须重写 hashCode 方法
11,接口和抽象类的区别和相同点是什么
12,简述下HashMap
13, CurrentHashMap
14,介绍下什么是乐观锁、悲观锁
15,谈谈对Java线程的理解
16, Synchronized、volatile、Lock并发
17,锁
18,谈谈你对Java 反射的理解
19, 注解
20,单例
第二章 Android 面试之必问Android基础
1,Activity:生命周期、启动模式、启动流程
2,Fragment:生命周期、与Activity传递数据
3, Service:启动方式、生命周期、Service不被杀死
4, BroadcastReceiver
5, ContentProvider
6,Android View知识点:测量流程、事件分发、MotionEvent、Draw 绘制流程等等
7,Android进程:进程生命周期、多进程、多进程通信方式
8,序列化
9,Window
10,消息机制:Handler 机制、工作原理
11, RecyclerView优化:卡顿场景、其他优化策略
第三章 Android 面试之必问高级知识点
1,编译模式:AOT优点、垃圾回收
2,类加载器:类加载器分类、双亲委托模式、Android的类加载器
3,Android Hook
4,代码混淆:Proguard、混淆规则、混淆模版
5,NDK:JNI基础、NDK开发基本流程、CMake 构建 NDK
6,动态加载:插件化、热修复
第四章 Android 面试之必问性能优化
1,启动优化:冷启动/热启动和温启动的优化、代码方面的优化
2,UI渲染优化:CPU/GPU、过度绘制、解决自定义View的OverDraw、Hierarchy Viewer
3,内存优化:内存管理、内存泄漏、大图内存优化、线上监控
4,网络优化
5,耗电优化:优化方向、耗电监控、如何监控耗电
6,安装包优化:常用的优化策略、资源压缩、资源动态加载
第五章 Android 面试之开源库分析
1,HTTP与缓存理论:HTTP缓存策略、强制缓存、对比缓存
2,OKHttp:OKHttp请求流程、OKHttpClient、同步请求、异步请求、CacheInterceptor网络请求缓存处理
3,Retrofit
4,Glide
6,EventBus
第六章 算法面试题汇总
6.1 排序
6.2 二叉树
6.3 链表
6.4 栈 / 队列
6.5 二分搜索
6.6 哈希表
6.7 堆 / 优先队列
6.8 二叉搜索树
6.9 数组 / 双指针
6.10 贪心
6.11 字符串处理
6.12 动态规划
6.13 矩阵
6.14 二进制 / 位运算
6.15 其他:两个大文件中找出共同记录、ip地址与int类型的转换、整数反转、LRU缓存策略
结尾:
有些程序员可能已经实战多年,但是但换工作的时候面临着对原理知识的遗漏,所以面试的时候显得有些力不从心;另外一些朋友可能接触Android不久,处于只能掌握基础理论,但缺乏实践的情况。。。针对大家不同的情况,在这里为大家整合出了这份《2021年最新Android中高进阶面试圣经》,希望可以给到各位Android开发者更多的帮助与收获。
如果你需要这份完整版的面试笔记,赶紧扫一扫下面二维码【免费】领取吧!!!