快手Java已意向,回报下牛客,分享好运。感觉和其他面经区别很大,没考太多八股,场景设计为主。
一面80min:
自我介绍
根据简历项目提相关问题,主要考察真实性,没刻意刁难
主要考察了三个场景设计:
分布式数据库如何生成唯一、几乎递增(>=)的ID,项目用的snowflake,讲解了具体实现和原理,面试官说想个其他的办法。面试官给的答案是主节点生成ID,分发给其他节点
分布式延迟队列如何实现(项目没用MQ,用的JDK自带的那个),按MQ生产者、消费者那套讲了一下,延迟的算法用的时间轮,面试官认可了
项目有个秒杀防止超卖,问了下检查逻辑,我说是用Redis判断是否小于0。面试官问如果高并发,一下子decreby到-1000之类很大的负数该怎么处理。我当时没想起来,面试官说用限流,令牌桶之类的
八股只考了static怎么用
算法:数字转中文,10010001->一千零一万零一
反问环节
二面80min:
自我介绍
被狠狠拷打了,深挖简历,我回答的时间还没他讲解时间长,面试官人很好,很耐心
项目提到前后端都写了,问问是否熟悉React,回答会一点但不能会多了,考了为什么要用React,不继续用html和css。回答js和html可以混在一起写,面试官说这是语法糖,不算核心理念。面试官说是模块化开发,方便分工合作
简历有微服务项目,提问如何设计这个注册中心,回答就是哈希表,跟计网路由的路由表差不多,然后有一些心跳检测、注册中心自身也可以集群部署之类的。面试官指出负载均衡遗漏了,然后讲解了很多种注册中心,zk、etcd之类的,学习了很多
接着提问微服务为什么需要注册发现,面试官说是方便容灾备份,每个服务有多个节点,强调了技术选型时需要了解各个技术的使用场景
Docker资源隔离是使用linux哪些关键的技术?寄了,不会
Cicd涉及到的dokcer命令,自动化工具用的什么?Azure DevOps自带的一套
简历提了句GAN,被问了怎么设计、模型和损失函数的选择
时间不够手撕了,面试官决定考个场景设计:如何设计直播间打赏每小时实时排行榜。当时没想出来,后来发现其实和防止超卖一个逻辑,先增加打赏值(下单),同时发送延迟一小时的消息,一小时后该消息减少打赏值(库存回滚)。排行榜就用Redis的Z Set好了
反问
HR面30min:
只问了什么时候能回国
反问