字节跳动秋招提前批面试。一面面了一个小时半,勉强过关。二面三面今天下午面完,三面挂。只能8月份字节秋招加油了。
一面
一面问的问题大部分忘了,只记得下面这些。
- 说一下你了解的设计模式
- DNS的解析
- https的流程
- 介绍下MVVM,你是怎么实现的
- 算法题:求前k大的数,及其时间复杂度
- 算法题:两个链表求其公共的结点,及其时间复杂度
- 算法题: 寻找数组中和为k的数,及其时间复杂度
二面
- activityA启动activityB期间的生命周期
- handler机制
- view的measure、layout、draw的流程
- measureSpec是什么
- 算法题:多个有序链表合的算法并及其时间复杂度(大部分时间在想更好的算法)
- 如何实现banner的定时播放和无限轮播
- ArrayList 循环删除元素会怎么样
- String能继承吗?为什么String要用final修饰
- 说一说ArrayMap
三面
- 网络请求的流程
- cookie和session
- mvp和mvvm的优缺点,及它们最大的不同
- 介绍你怎么使用的mvvm
- 静态内部类和非静态内部类的区别
- handler使用普通内部类为什么会发生内存泄漏,通过引用链来说明
- Java异常体系,及检查异常和非检查异常的区别
- 如果出现了异常,你是怎么处理的
- oom了解过吗
- Java泛型,在哪个阶段Java泛型被擦除
- 接口和抽象类的区别
- 你在简历上做过xxx项目,通过这个项目你学到了什么
- 算法题:定义1-9A-Z的36进制的数,求两个36进制数的和,及其时间复杂度
总结
1、 Android方面的基础还不行。很多东西只知道个大概,像我知道创建Handler内部类由于会持用外部类的引用会造成内存泄漏,但是不清楚具体的引用链。
2、 算法要追求更低的时间复杂度。二面这个算法题之前做过,但是只满足AC,却没有想过用时间复杂度更低的算法。