Android快手一二面
一二面连在一起的约的下午两点到四点的,结果从14:00面到了17:20,身心俱疲。。。
一面:
- 自我介绍
- 看我简历写了自定义view和分发事件,就详细了问了这一部分内容,问的很深,到我答不上来为止。
- 问我看没看过三方库源码,我说Glide简单看过,说了一下生命周期,他又让我说了缓存,缓存的删除策略(我答的LRU不知道对不对),让我说设计这个缓存的思路。全程就瞎说吧,想到啥说啥。
- 手写一个单例,我写了双重检查锁,问了双重检查锁的的一些细节,比如去掉其中一个判空会有什么影响,为什么使用volatile,这个没有为难我,比较基础。
- 算法题:层次遍历二叉树,很容易写出来了,然后改了一下之字遍历二叉树,给我提示用了了两个栈,写出来了。https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/
二面:
- 问我用没用过EventBus,回答没有,他就说了下原理,让我手写EventBus里的postEvent和listenEvent,在指导下勉强写出来了,单例加观察者模式。后来又加了一个条件让listenEvent在主线程中,使用了handler的post方法。
- 算法题1:一个二分查找的,边界情况用了好长时间才做出来,难度中等。写完了他说的写代码比较慢而且错误多,又给我加了一道题emmmm。
- 算法题2:一个模拟类型的题,给定整数n按照要求打印,做了40+分钟(他说有位同学20分钟就做出来了)。
n=1: 0
n=2:
0
0 0
0
n =3
0
0 0
0
0 0
0 0 0 0
0 0
0
0 0
0