新浪微博sp专场,一、二面面经
体验
由于还没怎么复习,抱着一边复习一边模拟面试的心态投了几家sp专场中的公司面了面,其中微博的面试体验是最好的。
上来面试官会先主动介绍自己的部门及业务,之后会谈谈面试的流程,然后才开始面试,面试过程中还一直给出回应和鼓励,点赞!
一面
- 自我介绍
- 算法题:给出一个数组a,a[i]不为0。如果a[i] > 0则向后移动a[i]步,否则向前移动|a[i]|步,最后有几种可能出现的情况?并用代码表示出来。如果出现了环,能否用O(1)空间且不用快慢指针发现环?
- 面试官对我去年暑假在滴滴做的项目挺感兴趣,然而时间过去太久了记不太清楚细节了,聊这个业务大概聊了十分钟。
- 讲讲Java内存模型与volatile关键字,如何禁止重排序的?
- 如果你的项目中出现了慢查询,你要如何做优化?
- redis的数据类型,讲讲hash的底层实现,渐进式hash的流程?
- redis hot key问题的解决思路
- 能来实习不?
- 面试完后马上反馈这一面通过了,明天会有人约二面。
二面
- 自我介绍
- OLAP和OLTP的区别
- 我看你简历里写到了使用了Druid达到了秒级查询,你觉得秒级查询在你这个OLAP的业务场景中是很优秀的吗,能做到实时查询吗,还能怎么优化?
- 你们是如何做缓存的,key是什么?那你觉得你们这个缓存命中率高吗?能否有别的优化思路?
- 看过Druid源码吗?你觉得Druid和MySQL比,为什么查询快?Druid是如何保证插入和查询都很快?
- 瞎几把扯了会LSM-Tree🐶,这是半年前看的东西了,事实证明写到简历上的一定要复习啊
- LSM-Tree中sstable多了后,我的理解是查询时间复杂度会退化到O(klogN),如何把它尽可能提升到O(logN)?(合并小文件 + 布隆过滤器)
- 讲讲布隆过滤器,数组越大,hash函数越多性能越好吗?
- 讲讲是项目中如何通过多线程优化下载的?(线程池 + FutureTask)
- 我觉得你这种优化方式不太优雅,我们刚好前段时间有人也是这么优化的,最后出了点问题。你还能想出别的方式吗(扯了会可以使用CountdownLatch)
- 讲讲你们业务中保证线程安全的场景,Spring声明式事务的是怎么实现的?
- 讲讲hashmap的结构
- 你觉得同样是存放N个整数,HashMap会比数组多浪费多少空间?浪费的空间来自于哪里?(多了很多指针)
- 那你觉得Java中,一个指针是多少字节?
- 那让你来优化HashMap,怎么能减少它的空间损耗呢?
- 瞎几把想了会,觉得可以在HashMap中设置一个新的Node节点,这些节点中不包含next指针,如果桶中只包含一个节点,则放入这个新的Node节点,否则才使用原来的Entry or Node节点。由于桶中大部分位置都是<=1个节点,因此可以省一波
- 你还有什么想问我的?
- 面试完后,面试官发了个微信通知2面过了,让等hr面。