记录一下实习的第一次线下面试的答辩经历,关于seata|sentinel,gateway与栈
面的一家小公司,他们准备做单体架构升级到微服务,所以问了我一些微服务相关的东西。回答的依托答辩,今天回想起来记录一下我造出来的笑话,正常的就不写在这里了。
首先我简历上大部分写的是熟悉,只有微服务写的是了解,还问了不少微服务的
1.谈谈seata:
这里我和sentinel记混了,妈的。我还说seata用于限流,熔断,隔离。我还记得这玩意有四个功能,另一个实现想不起来了
补正:
seata是用于分布式事务的,用SQL持久化存储,在nacos上进行添加共享配置。分为XA模式和TA模式
XA模式是:ACID,实现简单;但是开销大
1.RM资源管理器注册分支事务,然后执行分支的SQL,但是不提交,向TC事务协调者报告
2.TC检测各分支的执行状态,有错误就回滚,没有才统一提交,然后通知RM进行提交或回滚
AT模式:解决了XA模式的问题,但是会有短暂不一致问题
1.RM注册分支事务,记录undo-log快照,然后提交业务SQL,上报
2.如果需要回滚就根据快照恢复,不需要就直接删除undo-log即可
2.说说gateway的功能:
这里我说的是设置了一个统一接口,能够所有人都请求一个地址。感觉就像线程和进程的关系,(当时是后一天就要考操作系统,在刷操作系统的知识点)。至少这里把最主要的说出来了没说歪
补正:
gateway的主要功能为:
1.统一路由 2.支持熔断限流操作 3.路由策略灵活,而且支持动态配置
后续想起来再补充
3.我看你写了数据结构,我就挑一个考你吧,讲讲栈
这里我正好昨天给同学看了一个四则运算的题目,对栈还有点印象,脱口而出:先进先出。后面经过短暂的反应之后我发现不对,我又说啊不对,那个是队列,栈是先进后出。面试官和我尴尬一笑。我胡言乱语了一会,他又问:嗯。。这样吧,你讲讲你在实际应用中怎么用栈。我如实回答:实际应用中没有用过栈,这个我只是在刷leetcode的时候用了,就刷那些算法用
补正:
实际应用中栈的应用场景:数据的事务处理,回滚时会在最近顺序挨个回滚,保证了事务的原子性和一致性。递归操作时会使用栈。常见的undo操作中也一般都是用栈来实现的
4.问的项目,我看你也用MQ,你这个XX项目是怎么使用的MQ。
当时脑子犯浑,加上一个月没看自己写的简历,忘了自己写的什么吊玩意。
我说我只用了MQ做定时任务,用他那个死信队列。
面试官愣了一下,又问我,你这个项目里只用了定时任务对吗?我当时想都没想:是的,只用了这个。
后来面完了我才知道,我简历上写的使用rabbitMQ实现了elasticsearch的延时双写,保证了数据的一致性。当时做那个项目想是比赛用,也不太需要这些功能,其实我的实际项目还没用MQ,最近两天又补上的延时双写功能
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步