快手校招Java后端面经

快手1面(3.10,近40分钟)

自我介绍

hashmap的底层数据结构,hashmap扩容机制,hashmap扩容死链问题,jdk1.8时是如何解决,还有其它解决办法?(答了加锁,如hashtable,因为jdk1.8虽然能防止出现死链问题,但仍然有并发问题)

mysql的sql是如何执行的,从sql语句到存储引擎的执行流程(这个我直接说不知道)

mysql索引了解吗?为何使用b+树

如何保证redis缓存和数据库数据的一致性

知道聚簇索引和普通索引的区别?知道索引覆盖?

如果一个字段的值为null,查询会走索引?

算法:判断一颗树是否是排序树

反问业务和技术栈

.
.
.

快手2面(3.16,将近50分钟)

自我介绍

介绍一下共享租赁平台,里面用到的技术,然后围绕项目用到的技术来问问题

redis了解多少?知道zset的底层数据结构?知道分布式锁怎么实现的?如果redis内存不够怎么解决(集群cluster模式);

使用消息队列会出现的问题?(说了生产者和消费着的确认机制,以及如果防止重复消费问题),知道消息队列内部是怎么保证高可用吗?(我说使用集群,具体实现不是很了解)。

说一下分布式事务

使用了微服务,那负载均衡和限流熔断这些使用了吗?知道限流的算法实现?

下载器这个项目的问题,断点续传怎么做的?说说零拷贝原理?

场景题1:有一个类,需要测试里面所有方法的执行时间,怎么做?(我先是说了有这种专门的测试工具),不使用工具怎么做?(使用AOP,在方法执行前和执行后分别加一个通知,最后计算时间),那怎么使用AOP(配置文件或者注解),如果不用AOP,怎么做(使用动态代理,AOP的底层就是动态代理,在被代理对象方法执行前后分别获取获取一个时间,然后相减)

场景题2:一个场景,假设一群人从A走到C,途中会经过B,只有当所有人到B后才能继续出发前往C,用java怎么模拟(我说可用使用并发框架的一个工具类,但面试的时候没想起名字(cyclicbarrier),然后说了一下怎么使用这个工具类),如果不使用这个工具类,自己实现呢(使用wait,notify)

场景3:1000个文件,10台服务器来下载这些文件(使用消息队列,将1000个文件放入消息队列中,10台服务器作为消费者)

其它offer情况,杭州有投字节,阿里这些?对哪些业务感兴趣?金融和电商业务你更喜欢哪个

有什么想问的?问了一下技术架构?对我的评价?最后还闲聊了关于业务方面的东西

.
.
.

快手hr面(3.17,近20分钟)

简单自我介绍一下你在学校的情况和实习的情况

优秀的开发应该具备哪些特点,用三个形容词

平时怎么交流技术

为何从上一家公司离职

电商业务和金融业务你更喜欢哪个

每天能够承受十几个小时的工作压力?

其它offer情况,以及其它公司面试进度

期望薪资,然后直接给了我期望薪资的offer

反问了上班时间,工作环境这些

.
.
.

快手面试官是真的好,让我面试不会感觉到压力

你可能感兴趣的:(java,面试,分布式)