获赞
82
粉丝
31
关注
4
看过 TA
1519
沈阳理工大学
2024
Java
IP属地:浙江
低头赶路,敬事如仪
私信
关注
投递小米集团等公司9个岗位
0 点赞 评论 收藏
分享
他说雪花算法也有可能重复,怎么办?(我说就正常的redis存储id去拿id,或者mysql自增id的方式也都可以)他说那你讲讲你自己如何用mysql存储自增id?(我说简单的方式我们就不说了,面试造火箭(我原话),因为直接mysql的自增id有一些缺点,可以考虑两张表,一张存储id,一张存储下一个获取id的范围,设计好索引,然后两张表一起查获取对应的ID,并且在合理的时间在执行对无用id数据的删除) 现在有一个mysql,包含user和department表,这个department表中包含了多个子部门,也就是子部门的数量是不确定的,请设计一个表结构,帮助我查询出来某个部门所存在的所有用户(这里我说由于自部门数量不确定,所以我考虑用string或者bitmap类型存储自部门的编号,然后设定一个parentid,自部门编号类似于{1,2,3}这样子,然后partent=0或者null。然后查询就很简答了啊,userid=3-0-》deparetmenid=0.然后查询出来0的自部门id字段也就是ids字段「1,2,3」,然后直接查询所有用户depaetmentid=1,2,3范围的用户就可以了。)他说ok,可以,那么我现在希望呢只是用一条查询sql来帮助我查询某个部门下面的所有用户,同时如果我要修改你这个parentid,你也只能用一条update语句去修改,你怎么做?(其实这个时候我刚才设计的结构就不合理了,因为一条根本做不到,我说可以考虑额外增加一个字段,这个字段存储其他部门的一些信息,但是由于这个字段要存储其他部门的信息,而且你还需要解析,因为是字符串你肯定得解析,然后我就说我想不出来,因为性能太差了(毕竟是架构面,所以我觉得解决问题甚至不是最重要的,甚至性能才是被我考虑的,这种低性能的解决方式我就直接不回答了))。你说的额外字段你要怎么设计?(我说用这个字段存储其他部门的全量路径信息,但是性能爆炸,所以我想不出来更好的了,因为我知道要在一条sql里面就完成update,那肯定得有额外字段了)解决方法看我主页。
投递小天才等公司9个岗位
0 点赞 评论 收藏
分享
小天才一面纯八股,不写就问了我方向是业务开发还是架构,我就说我偏喜欢架构一点。然后就说那你等着二面吧,我给你推倒架构组去。二面你对网关有比较多的了解,请问网关中的限流算法有哪些?你用的就是springcloudgateway对吗,如果说我现在只是一个单纯的spring项目,你要如何实现一个限流功能呢?你说你会使用redis存储令牌,那么你是如何设计这样子的一个过程呢?详细说说说一说spring中用到的设计模式说说spring中除了单例还有什么级别的?(request、session、global、prototype)你说到了单例模式,那么我现在有一个controller是单例的,其中通过@autowired了一个request级别的bean对象,请问这个项目启动的时候是否会报错?既然会报错,那么是为什么?(因为request级别只有request来的时候才有,那么创建单例的时候没有request,自然依赖注入失败)那么如何解决这个问题?(postconstruct、applicationaware)你说你用过applicationaware,你是在什么场景使用的?(我提到了我的自研网关项目)你们一般是如何解决分布式事务问题的?你用到了mq,那么我们现在有一个自研的mq,我们mq中有两条消息,第一条消息更新mysql如果失败了,我们会把消息放入到队列后面,然后让第二条消息继续去更新mysql,然后第一条也会再次更新,那么此时就会出现了一个数据不一致的问题,丢失修改问题,因为第一条的数据变到了第二条的后面,你如何解决这个问题?(一开始听错了,以为是设计整个流程,我就说考虑用rocketmq那种offset的机制,保证at least once的消费,如果说第一条消费失败,那么offset不变,继续消费第一条消息直到成功)你听错我意思了,你只需要解决这两条消息的一个消费顺序的问题,也就是如果第一条在第二条消息后面,你怎么办?(我说简单的可以考虑在数据库加一个字段,用于存储消息的id)他说,那么这个id你要怎么生成?(我说可以考虑直接用时间戳这些)他说集群项目要是时间戳重复了怎么办?(我说可以考虑雪花算法等)剩下一半看我主页,问题太多了哈哈。
投递小天才等公司9个岗位
0 点赞 评论 收藏
分享
1: 经历永远是最好的老师。每个人都会经历过低效做事的过程,才可能明白如何高效的做事。每个人也大概率经历过一段患得患失的初恋,才可能从幼稚变得成熟,从而走向高质量的亲密关系。没有什么能一蹴而就,都需要经历不断的打破认知,重建认知,认知实践,然后再这样的循环中不断的完善自己。2: 保持使你奔向光芒的习惯。生活不会一直事事顺遂,对于那些你生命中像一束光一样把你照亮的经历,要记住你在遇到这段经历时你都做了什么,继续保持这样子的习惯,尽可能留住它,这是你需要立刻着手去做的。而不是沉浸在一种沾沾自喜之中,被自负裹挟着滑向从前的状态。”我遇见你时你像光一样耀眼,如果因为我而变得黯淡,那是对光的侮辱“。3: 不断复盘反思自己。复盘和反思自己可以是那些自己做的好的,也可以是做的差强人意的。但是请记住你在复盘和反思自己时,并不是要你去回顾自己那些做的不好的事情从而让自己陷入很down的情绪,复盘和反思自己的前提是你清晰的明白自己是很好的一个人,是一个想变得更好的人。人都会有发挥失常的时候,单纯的苦难是没有价值的,真正赋予苦难价值的并不是苦难本身,而是从苦难中获得的成长。“对于那张糟糕的试卷,如果你抱着不浪费的态度,一定会有意想不到的收获”。错题所暴露的恰好是你的薄弱部分,这也恰恰是你接下来变得越来越好的一个关键技巧。
0 点赞 评论 收藏
分享
头像
写在开头,我并不知道cider开多少,因此请别问我薪资,因为cider要实习,所以我压根就没有继续和他们聊薪资的意向就直接说那不用继续下去了。所以请别问我薪资,我不知道Cider一面自我介绍对称加密与非对称加密的区别和使用场景?将一下简历上的数字签名和URL动态加密的实现方式?如果你暴露给前端的接口其他人也能请求,那么你如何保证之后接收到的密钥是来自于你的前端而非攻击者呢?你熟练使用gateway网关,和我讲一下你开发网关过程中遇到的问题?你这里的URL动态加密,你接受到的是加密的URL,那么你如何解密并且将这个解密后的URL能重新转发到你真正的后端服务呢?你是如何解决你遇到的RocketMQ的消息堆积的问题的?MySQL索引结构?和我说一下你对索引的理解?MySQL中连表查询需要注意些什么?手撕:O(1)空间复杂度判断回文链表---leetcode原题---反转链表即可。反问二面自我介绍手写代码,对于CompletableFuture,如果有一个任务阻塞超时了,你如何让其他任务直接返回?你是如何实现文件快速上传的?(文件方块和断点续传)从Tomcat层面和我聊一下一个项目大概能接受多大的连接数量?(SpringBoot项目对tomcat的线程池大小的设计)从Linux底层原理层面和TCP、HTTP层面和我聊一下一台机器大概能处理多少的请求?(C10K和C10M问题)业务设计题,高性能查询系统的设计。Mock的使用是否了解(状态验证和结果验证)RocketMQ你是如何解决消息堆积问题的?业务设计题目,如何保证一个用户积分系统的幂等性?保证用户积分不会重复添加?反问一二面都很顺利,两个面试官基本都是面完就已经暗示我可以准备下一面了(吹皮成功)。二面面试官告诉我还有三面,然后四面是CTO,压力拉满哈哈。
投递Cider喜得网络科技等公司9个岗位
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务