记一次欢聚时代面试经历

上个星期受邀请到欢聚时代面试,坐了一个小时左右的地铁并且找了好一会儿才找到欢聚时代的大厦。欢聚时代有一层楼专门作为面试使用的,环境很好,设计有特色和艺术感。在沙发上等了一会儿,就遇到了面试官,看起来30多岁样子,戴一副有点酷的眼镜,然后到两个沙发椅相对而坐,自我介绍之后,真正的面试开始。

听说大厂的面试都是喜欢玩连环炮(就是对一个知识点从简单到难逐渐深入地去问),确实如此,这场面试持续了差不多一个小时,所问的内容量还是比较大的,涉及的知识点深度广度都有,由于内容多就无法一一记录了,只能写下有印象的:

连环炮1:
有看过哪些jdk源码?
ArrayList、LinkedList底层如何设计?各自的优缺点?
安卓中推荐替代HashMap的集合类是?
SparseArray和HashMap相比好在哪里?
HashMap有什么问题?
ConcurrentHashMap如何实现?

连环炮2:
什么是线程安全?
Synchronized作用?
Synchronized可以作用在什么地方?
Synchronized作用在成员方法和静态方法的区别?
Synchronized方法递归会出现什么问题?(这个问题现在还是不懂,感觉可能是想问死锁,但是因为Synchronized是可重入锁应该不会)

连环炮3:
最擅长什么?(我说自定义View)
做过的最复杂的自定义View是?
自定义View主要流程?
onDraw方法中的canvas从哪里来?怎么传递?父View和子View使用的是否同一个canvas?
onMeasure中的measureSpec是什么?、
measureSpec三种模式分别代表什么?
getMeasureWidth和getWidth的区别?什么时候不一样?

连环炮4:
retrofit的作用?
retrofit为什么通过接口可以定义一个请求?
动态代理实现原理?
看过动态代理生成的类源码么?

连环炮5:
RxJava用过的操作符有?
假如现在有个业务场景:获取一份数据,先从内存缓存拿,拿不到再从磁盘缓存拿,拿不到再从网络拿,使用哪个RxJava操作符?
RxJava操作符takeFirst和first有什么不同?
RxJava线程切换实现原理?

连环炮6:
简述JVM工作流程?
如何改变JVM对象从survivor到老年代之间的gc次数?
调过gc参数么?调过哪些gc参数?

几个印象深刻的连环炮就是这些,还有一些比较杂的就不写了。个人感觉面试题还不算很难,原理的深入还不算很深,但是会问的比较具体,可能一时想不清晰。

发布了69 篇原创文章 · 获赞 76 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/sinat_23092639/article/details/82837876