2025-11-03 Moka一二面

一面

自我介绍

实习介绍

仿分布式事务

分布式事务中间件

接口幂等性

traceId是怎么生成的,你是怎么保证traceId唯一的

雪花算法能保证同个时间戳下id唯一吗?

雪花算法+redis双id

如果是moka这种招聘软件他是基于什么字段来分库分表的

除了负载均衡,一致性哈希比这个哈希算法还有什么优势吗

深分页

多用户场景数据推送存在的oom

sql优化

那 Mysql 的索引是什么样的数据结构呢?它为什么会能够加快查询?

数据结构是什么样的?数据结构

b +树的一个叶子节点有多大?

索引失效。有哪些场景?

你刚刚提到的这个 between 之类的是有这么一个场景的,比如说我确实就要查询创建时间是从 25 年9月到 10 月的数据,嗯,确实是有这么一个成绩的。怎么优化?

并发冲突,乐观锁兜底

那如果不用乐观锁的话,得用什么样的机制来解决这个问题呢?

那使用 Redis 实现这个分布式锁的话,还需要有哪一些考虑的场景呢?

那除了用 Redis 实现分布式锁,还有其他的技术方案能实现吗

ps:其实面试官想问的是redis分布式锁本身存在的问题,也就是一致性不强的问题,因为redis的分布式锁依赖于时间,同时raft算法本身存在拜占庭问题

那 Redis 和 ZooKeeper 的这种分布式锁它们有什么区别?机制上来说有什么不一样的地方

飞书机器人如何实现告警,告警的是什么业务

那这个飞书他们过来的请求的话,不一定就是安全的,就是有没有这种数据安全校验机制?

本地缓存热更新,你可以说一下这个相关设计和为什么要使用本地缓存呢

然后下面的话它有一个令牌桶限流,就是可以解释一下这个令,令牌桶算流吗?除了这种令牌桶算流的话,还有没有其他的方案

固定窗口和令牌桶的主要区别

这个对象池提速,你可以解释一下相关的业务场景吗?

刚刚是上面有一个 concurrent Hashmap 这种存储一些信息,就是说在用这种 Hashmap 或者 concurrent Hashmap 的时候,这种容易造成内存泄漏,就是面对这种内存泄漏的话有哪些排查思路呢?

快照,dump文件,基本的jvm排查工具

下面那个分布式 ID 的话,其实上边也回答了,还有我看到下面有一个解决时钟回拨问题。你可以解释一下这个时钟回拨是什么样的问题吗?

除了这种阿波罗之外,还有没有了解其他的一些分布式配置

嗯,那Nacos和Apollo它俩有什么不太一样的地方呢?

Nacos是配置中心+注册中心

Apollo重点是配置中心,他的注册功能是内置的eureka实现的

Apollo 内置 Eureka,仅用于自身组件的注册发现

配置相关功能更精细,比如有完善的灰度发布、配置回滚

Nacos的管理页面太简陋了,Apollo的很人性化

  • Nacos:权限管理功能较简单,无法满足过于精细的权限划分,Web 界面侧重基础操作,配置历史、变更记录等展示相对简洁
  • Apollo:权限体系完善,界面交互更友好,能清晰展示配置的每次修改人、修改时间、修改内容,追溯配置变更轨迹时更直观,适配多团队协作时的配置管控规范

Nacos适合springcloudalibaba生态,而apollo适合对配置管理有严格规范的大型企业或核心业务系统

Spring AOP 除了用这种日志处理之外,还有没有什么其他的使用场景?

Spring AOP 的实现原理是怎么样子的?

spring 当中并的生命周期是怎样子的?

嗯,那个 Mybatis 是怎么整合 spring 的呢?

我看到这个项目里头有使用到dubbo,为什么要使用dubbo

dubbo 和 HTTP 方式调用还有什么区别呢?

什么时候用这个Kafka?什么时候用这种Rocketmq?

嗯,然后那个 K8S 有用到过吗?

网关方面的话有对这个网关有了解吗?

Netty,网络编程模型,响应式编程WebFlux

那为什么要用这种响应式编程?

比如说有一个场景问题,就是说前端调后端的时候,中间经过网关,但是后端的接口很慢,嗯,直接把网关的并发量也给拖累了,这个时候怎么办?

那这种网关除了有这种往后端路由调度之外,还有什么其他的作用吗?

那聊到灰度发布的话,具体怎么实现这种灰度发布呢?

那使用阿波罗的过程当中有没有发现有时候阿波罗改了值之后项目当中不生效,这个时候是为啥呢?

网络:超时,长连接断开

客户端命名空间和apollo服务器地址配置错误

配置项被本地缓存覆盖:客户端本地缓存文件(config-cache 目录)损坏或权限不足,强制读取旧缓存,即使连接正常也无法更新

代码中 “静态引用” 配置:如用 static String config = ConfigService.getConfig().getProperty(...) 初始化,后续配置变更不会更新静态变量(需用动态监听或 @RefreshScope)静态配置我们要写监听方法,然后监听后手动覆盖静态变量

配置发布后【生效延迟】:阿波罗默认通过长连接推送配置,但若客户端集群规模大,可能存在秒级延迟,需等待几秒或手动触发刷新(如调用 /refresh 端点)

算法:元素的相对顺序

双亲委派机制

如何打破双亲委派

那就是咱们在实际项目使用当中有哪些是打破双亲委派?

其实就是热部署工具那些,SpringBoot的热部署工具devtool其实就是打破双亲委派

JVM 调优有遇到过吗哦?或者说你有没有什么好的办法?

二面

这个日志采集到 Hive 离线的同步,然后到这个流量上报,OK,然后比如说日志采集里面,你们的日志里面打印的什么样的内容?然后你是如何做的日志采集?

你的这样的一个日志采集完成了之后,然后你会中间,然后去往 Hive 里面去存一下,对吧?然后存一下,然后可能你会去做一些,然后复杂 SQL 的一些查询

好,那你的这个 Hive 里面,然后大概你的这样一个表,然后核心,然后是怎么去设计的?然后比如说,然后你从 Hive 里面去清洗出来的一个数据,然后就是你又是如何利用Hive,然后去做的这样的一个数据的一个清洗

每天从日志里面的一个采集的一个数据量大概有多少啊?是一个什么样的一个级别?

那你们的 Hive 表然后当时去设计的时候,然后有考虑过然后去做一些分区的处理吗啊?

大文件传输的优化如何实现的?

这个的话其实就是针对内部系统和外部系统的文件传输进行区分,从两种传输角度来说如何优化大文件传输

然后它是你的 MongoDB 里面,然后你的数据类型是用了什么样的一个数据类型去存储这个 snappy 压缩后的这样的文件哦?

压缩后的数据都是二进制数据,所以就是binary(二进制)类型

如果是没压缩过二进制数据的文件的话,存储的类型就是gridfs

如何实现下载任务的降级 保证下载状态的一致性

这个里面的话,然后我比较关心的一个点是你提到了做了一个缓存设计的三层架构,嗯,这块的话因为有一年的一个时间了当时是怎么考虑的?然后具体是怎么做的嘛?

提到了使用 Redis 的zset,然后配合着这个滑动窗口,然后实现排行榜这个具体,然后你是怎么做的?

颗粒度太大了,如何让排行榜的窗口更加平滑,更加实时,而不是限制在某小时,某段时间(这个就借鉴令牌桶的滑窗,令牌桶的滑窗思想是最实时的,及时踢出超时数据和放入最新数据)

#牛客AI配图神器# #面试# #接好运#

全部评论
不是哥们,这是校招吗。。。。。。
1 回复 分享
发布于 昨天 23:39 上海
是base成都的吗?一家小公司也能问这么难?感觉大厂也就这种难度了吧
点赞 回复 分享
发布于 昨天 23:22 陕西

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务