字节跳动-Android开发工程师面经
- 10月20日的面经,已收到offer。
- 一面:
- 把自己具有的技术点描述一下
- TCP和UDP的区别?为什么要三次握手,为什么要四次挥手?
- 进程调度方法说一下?
- java接口和抽象类的区别?接口里面可以有变量吗?
- 怎样修改私有变量(通过反射)还有别的方法吗?
- 利用反射来修改私有变量和公有变量有什么区别?
- 创建线程的方式
- 线程同步的方法
- volatile为什么不具有原子性
- 10w条数据如何快速插入数据库(有什么优化方法)
- 算法题(说思路):求出数字排列组合后比它大且离它最近的数字,如一个数字1234,满足上述条件为1243
-
- 二面:
- handler说一哈
- Looper为什么不会造成死循环?
- 主线程的Looper在什么时候创建?
- sychronized修饰在类、静态代码块、静态方法、方法、代码块?
-
- volatile为什么不具有原子性?
- view绘制说一哈
- setContentView的内部过程说一哈
- 在Activity的onCreate方法里面可以获取Button的真实宽高咩?在Button的onClick方法里面可以获取咩?
- 内部类有什么特别的地方?
- 说一下内存泄露和内存溢出的定义和区别?
- HashMap和ArrayList比较熟悉哪一个?HashMap底层实现的原理?发生hash冲突时?
- 算法题:两个栈实现队列效果
- 三面:
- linux ctrl+c (这个不知道怎么答)
- https连接过程
- 项目中遇到的最大的问题,怎么解决的?
- 算法题:一颗二叉树,输出从左边看的第一个数。
- 算法题:写个二分查找,时间复杂度
- 场景题:设计一个n大小的KV缓存,有时间戳(存在有效时间)。添加新的KV对时,要满足如下条件:1.个数大于n时,任意剔除超出时间限制的一个。2.个数超过n时,如果都在时间限制内,剔除最老的那个。3.查找时,如果对象已经被剔除,则返回空。
- LinkedHashMap底层原理。查找和插入分别的时间复杂度?
- 平时是怎么学习的?关注了哪些大牛?最近看得一篇是什么?
- 你是非科班,肯定是有劣势的,讲一讲你比起他们的优点是什么?
-
- 碎碎念:秋招的最后一个面试 =。=。其实在周三面完Bilibili后,心理上就已经结束秋招放飞自我了,所以周六面字节跳动的时候答得很不好。
- 说一哈字节跳动面试给我的感觉吧,面试官给我的感觉都非常的舒服,在技术水平和素养上都很高。
- 我一面时因为信号不是很好,听不清楚面试官的问题,面试官也很耐心的一直重复他的问题,甚至会重复三四遍,也没有任何厌烦的感觉。最后他问我有什么问题,我就趁机跟他道歉。
- 二面面试官脾气也很好,我有一些概念说得太模糊或者不合理的,他也会当场指出,然后给我解答,中间因为手机没电了,笔记本网也断了(用的热点),他还特意打了三个电话给我,艰难爬回去后,发现面试官还在,也没有任何不悦的感觉,而是问我刚才问到哪里了2333。
- 三面面试官很严肃,看起来怕怕的,但聊起来也很nice。
- 很多题目都没答好,没想到能面完三面,感觉运气很好了。不期待能拿到offer,有个很棒的面试经验就够了。