快手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
反问了上班时间,工作环境这些
.
.
.
快手面试官是真的好,让我面试不会感觉到压力