快手研发面经(共三面)
快手研发面经
面试共有三轮
技术面试两轮,一面40分钟,二面1个小时。
祝大家早日拿到满意的offer。
快手面经
一面:
1 写一个选择排序或者插入排序
2 写一个生产者消费者
3 Java多线程了解么,什么时候一个int
类型的操作是不安全的,自加呢,赋值呢。
如果使用volatile修饰的话有什么作用。
4 MySQL和redis的区别是什么
5 为什么MySQL和Redis都要使用独立进程来部署,开放端口来提供服务,为什么不写在内核中。
6 有一个场景,多线程并发,为每个线程安排一个随机的睡眠时间,设想一种数据结构去唤醒睡眠时间结束的线程,应该用哪种结构,答应该用优先级队列,也就是小顶堆,顶部是剩余睡眠时间最短的那个线程。
7 好像就是这些了。
二面:
1 项目
2 多线程
3 一道算法题,一个二维矩阵进行逆置操作,也就是行变列列变行。刚开始我理解错了,直接用一维数组转储再重新填入新数组。
面试官说可以不用一维数组么
然后解答的过程中才发现我理解错了。改了一会才搞定。
4 扩展一下,二维数组存在500g的文件中,怎么做才能完成上面算法的操作,我就说先按行拆分,最后再拼接。
5 扩展两下,一行数据就会超出内存,应该怎么做,那就按列拆分,最后合并。
6 知道服务的横向扩展和纵向扩展么,刚开始理解错了,后来就说是提高单机性能,以及扩展成集群。
7 cap介绍一下吧,为什么只能3选2
8 线程与进程
9 tcp和udp的区别
10 get和post的区别
11 并发量大概多少,做过优化吗
HR面:
老生常谈了,就不贴了
关注微信公众号「黄小斜」后回复「Java」、「Python」、「C++」、「大数据」、「机器学习」、「算法」、「AI」、「Android」、「前端」、「iOS」、「考研」、「BAT」、「校招」、「笔试」、「面试」、「面经」、「计算机基础」、「LeetCode」 等关键字可以获取对应的免费学习资料。
#面经##快手##内推##秋招##Java工程师#