前言
有一年没写博客了,从去年年底就开始找实习,最后去了字节,实习到快九月份转正答辩完才回来准备秋招,因为准备的太晚,很多公司都结束了提前批,最后只面了腾讯。希望自己的面经能给大家一些参考。
实习-字节跳动头条
一面 - 2019.12.13
- SharedPreferences
comit、apply的区别 使用场景 怎么存的 有没有缓存 存在哪,以哪种文件类型存储的 - Handler
原理、工作流程、postDelayed、IdleHandler的使用场景 - Activity启动模式
onNewIntent以及传入什么参数 - okHttp
简单使用、自定义拦截器(要求打印log)、缓存(缓存拦截器) - Http缓存的字段
- synchronized
对象锁、类锁 - 算法
岛屿问题:leetcode200
二面 - 2019.12.15
- Java内存区域
- 堆和栈的区别
- 方法签名
- 垃圾回收过程
- 线程通信,只说了handler,他问还有吗
- 进程通信
- 自定义View注意事项
- onMeasure怎么改宽高
- MeasureSpec哪几种模式
- JNI说一下
- handler的native层
- 管道的两边是什么
- java层的message最后发到哪
- 算法:
找出一个数组的长度 Top2 的升序子数组,并按长度降序输出
例如:
输入:[2, 1, 4, 5, 8, 3, 7, 10, 2, 5]
输出:[1, 4, 5, 8], [3, 7, 10]
三面 - 2019.12.16
- 自我介绍
- RecyclerView的局部刷新
- RecyclerView图片闪烁的原因
- 处理okhttp的缓存
- Http的缓存策略
- 算法题:二叉树的锯齿形层次遍历
第一次面试,面完感觉大厂的问题也没有特别难,重点是基础,而且我们在学习原理的时候一定要细致和全面。计算机网络、操作系统、算法等基础课也不能忽略。
秋招-腾讯文档
一面 - 2020.9.29
- LinearLayout和RelativeLayout区别
- ListView和RecyclerView的区别
- APP启动流程
- View事件分发
- JSBridge,以及怎么获取到返回值
- JSBridge的系统漏洞,以及获取到Runtime后怎么会有漏洞。
- JS调用Android几种方案的优点和缺点,执行效率
- Synchronized底层实现原理
- 锁升级
- 自旋锁是什么
- CAS,以及Java的实现类
- Java无锁场景
- 数据库索引
- HTTPS实现原理,对称加密和非对称加密
- 字节实习相关
看到了视频优化,那么做了哪些优化呢? - 算法
i. 查找数组中重复元素
ii. rand5->rand7
iii. 1G大文件,有很多词,词的大小是16字节,找到出现频率top50的,只有1M的运行空间
晚上更新为复试
二面 - 2020.10.13
- ListView和RecyclerView区别
- 为什么不用线程而用Service
- Parcable和Serilizable区别
- ART是怎么加载Bitmap的
- 如果是你来设计一个ART,该如何实现加载Bitmap这种大对象
- JS与Android通信、安全漏洞
- LRUCache 如果加载一个大图,这个图片大小超过了LRUCache缓存大小,那么怎么设计
- 有一个随机数发生器,以概率P产生0,概率(1-P)产生1,请问能否利用这个随机数发生器,构造出新的发生器,以1/2的概率产生0和1。
- 数字证书和数字签名
- 知道哪些非对称加密算法
- 如何设计一个小程序框架
- 印象比较深刻的一个需求
二面问了好几个场景设计题,比较看重我对原理的理解程度和运用,虽然我看了好几个框架的源码,但是在实际解决一些问题时却比较难联系到一起。所以我们在平时学习的时候要多思考,多实践。