滴滴二面OC

首先感谢一下面试官,虽然说这一次没有直接透露说我有没有过,大概率是进排序或者说不太好意思说我挂了的事情

问的东西很多,场景题一个比一个离谱,直接就是说考验我的当场表现,完全没有考虑到之前怎么实现对应的内容,功能

不过面试官挺好的,会给我一定的提示

  1. 面试官介绍自己以及所在部门
  2. 我的自我介绍(老样子)
  3. 然后聊一下自己的项目(balabala,然后才发现说自己的项目中介绍写错了,只能硬扯下去)
  4. 问到说如果让我实现一个二维码登录,我打算怎么实现
  5. 这个还好,之前准备深信服提前批二面时兴趣使然,有一定的猜测过,不过还是答得较差,我只谈到了过期的情况,我们可以用redis来进行对应的设置一个ttl,但是却忘了说对应的二维码唯一性的事,不然还能往我个人修改的雪花算法靠一靠,然后分析了下首先我们扫描的设备需要是一个登录的状态或者说是一个可靠的状态例如说微信等平台,有点类似说oauth2的机制,我们去获取到对应用户在该平台的信息,然后再进行细分,1是注册,如果该用户扫描后发现对应的数据不在我们的平台上,那么大概率他就是一个注册,那么就需要去走注册的流程,而如果说对应的情况是登录的话,那么直接登录就行了
  6. 然后问到redis的过期时间是怎么实现的?直接开始汗流浃背,聊了说单机的情况最简单的就是借用定时任务,然后说到额外起一个进程或者说线程进行对应时间的监控,当对应的redis的时间快到了那么就进行删除,然后扯到了跟大key相关的知识(渐进式hash),说到定时任务的处理的过程中其实也要考虑到对服务的影响,然后说到最简单直白的就是轮询,不过呢,对于不同的定时时间来说我们能够做到的是不同的设计,例如说24小时的定时任务,可以说到最后一个小时,再进行轮询或者说最后一分钟再进行轮询,然后前面那些时间例如说发送个心跳给我们对应的运维服务器就行了("面试官答复到:你说的都是主动的情况,有没有被动的情况",然后我就扯到了说我们也可以说超时后然后我们去访问同时进行这个删除操作,其实这个就有点渐进式hash的思想来着,只不过现在意识到那是后话了,当时如果能提没准就稳了)
  7. 问到如果redis的数据出现过期,然后所有的请求去打到我们mysql那么这个情况你如何解决?提了一下之前设计模式中学到的单例设计模式(埋下败北伏笔,不过还是要感谢教我们设计模式的王备战老师,教课较为生动,让我还能记得点),在这个过程中我们使用到的是双检加锁的策略,我想这个情况下是可行的,不过这是在单机的情况下,应该能限制1个请求能够打到mysql,然后集群的环境下应该也能接受
  8. 问如果多节点的情况下,想要保证这个只有1个请求的情况呢?就说了用分布式锁,无论是使用到redis的redisson或者说是阿里的seata等等,然后提了一句我们也可以用协调的方式,在众多的节点中选出一个来进行对应的节点给他这个权限来访问mysql
  9. 紧接上题,你了解redis的哨兵机制吗?然后我多嘴的问了一句是要问raft算法是吧?然后就balabala地说了一下,然后提到说哨兵的话,例如说主节点挂了重新选择一个主节点的话,他考虑的比较仔细,不仅说你需要当前ping地通,还要对应之前的网络状态也良好(不过忘了提对应的与原先的主节点的同步进度(该死,还是犯了当时一面面试官说的问题,就是没有停下来思考,一想到一点就开始回答,才过了没多久脑子中就有答案))
  10. 然后发现了没问我mysql相关的问题,问了一嘴,一条mysql语句的查询流程是什么样的,然后就展开说明了(mysql分为两个层,一个是存储引擎层,2是server层(注:当时死活没想起server,现在突然就想起来了)),然后之前看过相关的文章,但是记得不清了,然后就说应该会有个构建语法树的过程,以及说聊到了优化器选择索引(这里该扩展开的,该聊到对应的自己的尝试),然后以全表扫描,聚簇索引,联合索引都分别聊了一点,然后聊到联合索引的时候聊了点索引下推
  11. 然后问到我说mysql如何保证对应的回滚的,以及说对应的事务提交后的落盘的,了解过但是没了解很深入....,就数鸭子一样的谈到了binlog用于同步,undolog用于回滚,redolog用于保证持久性,然后举了个例子,然后问到存储的内容,我其实没有亲身实践过,然后就谈到了说undolog存储的形式无非两种:1.快照,2.和我们事务完全相反的操作
  12. 问了我redolog以及说undolog还有binlog,写的顺序:答曰:redolog和binlog区别应该不大,而binlog应该是在最后的
  13. 然后就是说binlog的话,在一主二从或者其他情况下,工作机制?不懂,表示自己并没有搭建过mysql集群,在实践中唯一涉及到binlog的情况是使用canel来将数据同步到elasticsearch中
  14. 然后问到了mysql中例如说一主二从,或者说集群的情况,如果数据不同步,而我们需要对应的较强的数据一致性那么我们该怎么做?我回答是这基本上就是CAP的问题,说了CAP最多只能保其中的两个,然后主要的情况大概就如下两个,1要么我们维护目前数据一致的节点,然后获取请求时去自动获取(这里稍微提了一嘴sharding-jdbc(我也不太了解,只知道他类似我们redis集群是会有一个把各个key划分到各个节点的操作,让我来设计的话,应该会设计这个功能点的)),然后又提了一下,实在不行我们也可以延迟点时间嘛
  15. 还问了说关于Linux上的命令,是nginx的日志上的内容,然后查出对应访问的10个ip,虽然不会但是还是有点幸运来着,前不久发了一篇博客内容差不多,只不过是解析tomcat对应的日志也是ip,然后就跟面试官说了一下对应的思路(往往这种命令不会写,其实可以换个路子回答,诸如说让我来实现这个命令我该怎么实现),然后说了点,面试官应该也知道我没记命令,然后就没追问了
  16. 然后回收伏笔,设计模式出现了(第一次被别人提问手写设计模式,也是幸运,虽然没怎么学,但是他问到我的碰巧是我稍微听了一点的,当然我当时极度心虚,昨儿还特意刷了20道算法题来着,今儿给我来了道设计模式),问到的是观察者模式,开始打马虎眼,当时老师上课教到的作业我实现上是让使用java自带的Observer,然后问了问能直接使用吗?回答是不行,然后就额外扯到了课上说的"MVC"与观察者模式的对应,也提了一下,然后就开始写了,怎么说呢?写得很烂,大致打个50分吧
  17. 反问环节(1.结果大概什么时候会给通知?(answer:看hr那边,一周内吧)2.去的话是go是web开发还是说中间件开发(answer:web)3.有没有相关的学习资料推荐?(answer:网上一大堆...))

总结

虽然说没有把一面面试官说的想清楚再回答做到全部,但是我走了另外的一条路,就是讲完答案后做了一个总结

虽然说不小概率是挂了,半小时后OC了,然后本科生统一价

在这里再次感谢一下备战老师的SA,虽然说作业我不少是gpt来着的,但是备战老师的课莫名起到很好的作用,可能也是我一直被提问的情况

#滴滴##oc#
全部评论
Redis集群使用的是Gossip协议,不是raft
3 回复 分享
发布于 07-17 17:50 江西
太🐮了
2 回复 分享
发布于 07-15 18:05 湖北
我面日常也会这个难度吗
1 回复 分享
发布于 07-18 21:57 天津
实习还是正式offer呀!?
点赞 回复 分享
发布于 07-18 01:04 陕西
应该是一个面试官,国际化技术的,可惜我二面挂了😭
点赞 回复 分享
发布于 07-20 01:37 四川
m
点赞 回复 分享
发布于 07-24 10:02 北京
恭喜恭喜🎉
点赞 回复 分享
发布于 07-24 18:51 北京
大佬,卡学历嘛?
点赞 回复 分享
发布于 07-29 13:05 北京
闽江✌🏻带带我
点赞 回复 分享
发布于 07-29 22:28 福建
太牛了卧槽
点赞 回复 分享
发布于 07-31 13:36 四川
备战老师的SA,是啥
点赞 回复 分享
发布于 09-06 16:31 天津

相关推荐

43 165 评论
分享
牛客网
牛客企业服务