字节跳动客户端Android方向校招面经
直接上面经吧。
一面:
- activity启动、生命周期、具体各种情况的生命周期(B透明A还是stop吗?A还可见吗?A-B-A的生命周期,为什么先pause再stop)
- 启动模式以及应用场景以及首页使用singleTask的问题、TaskAffinct作用、从栈中移除activity的时候是不是需要走完生命周期,为什么?
- service是什么,做什么用,具体启动方式,如何控制service,binder有什么要求、AIDL
- handler机制流程、looper中延迟消息谁来唤醒looper、ThreadLocal作用,使用场景,怎么用
- 自定义view绘制流程、事件分发、onclick各种情况、ontouchEvent和onTouchListener优先级
- 线程和进程区别、线程可以控制进程吗?进程可以控制线程吗
- 泛型擦除
- 反射中ClassLoader.loadClass和class.ForName区别
- 抽象类和接口区别,抽象类可以实现接口吗?
- AsyncTask
- 下载文件多线程如何实现
- 如何实现断点续传
- tcp/udp区别、平时用什么,为什么
- hashmap数据结构、初始大小、如何计算hash,插入在头还是在尾巴,为什么?hash冲突怎么办
- 算法:输入两个无序数组,找出不在数组B中的数组A
二面:
- 项目一个一个过
- 如何适配屏幕
- 死锁的条件
- 栈和堆,为什么要分成栈和堆
- 七层网络协议,数据包从发出到接收的过程
- https和http区别
- https流程
- http请求头
- Get和post区别
- 如何用两个栈实现队列
- 算法:在红白蓝球的乱序数组中,如何将颜色一样的放在一起,不可以新建数组。
- 项目具体、混淆原理,混淆了什么,混淆作用
- 遇到最困难的事情、技术的事情
- 数组找出现次数超过一半的数,map方式、站岗方式、链表方式、排序方式以及其中的时间复杂度
- 手撕排序实现找出现次数最多
- 完全二叉树层数,递归方法、归纳推理法、数学推导法
- hashmap以及其中的hashcode修改、equals修改
- handler机制原理、post方式具体
- linkedhashmap
- 用过哪些第三方库,原理是什么(okhttp)