首页 / 牛客在线求职答疑中心
#

牛客在线求职答疑中心

#
11567598次浏览 127622人互动
找工作中的那些问题,就在这寻找答案吧~ 牛可乐一直在线等着你😊
此刻你想和大家分享什么
热门 最新
03-29 19:44
已编辑
广东药科大学 后端
分库分表常见问题参考答案(收录25年至今的牛客面经)
分库分表的常用中间件有哪些?有哪些问题中间件无法提供帮助、只能改写业务代码的场景?使用了什么中间件?分库分表的实现场景和方式有哪些?分表之后,要查询两个表的数据要怎么查?分库分表的优缺点是什么?分库分表业界有哪些替代方案?(提示:分布式文件系统,因为分库分表会出现降低QPS,比如range查询失效)为什么做了分库分表后分页比较困难了?如果10亿数据要分表,要怎么分?业务怎么切?分库分表怎么保证数据一致性?选的什么分片键?什么分片算法?分库分表后的分布式ID怎么做?(2025年目前为止的牛客面经关于分库分表的问题收集)总结:分布式事务一致性问题跨节点关联查询JOIN问题(解决方案:1.全局表 2.冗余字段 3.建立1:1的ER实体关系分片)非分片键的查询问题(1.创建映射表 2.  前缀分片法  3.使用ES搜索引擎(最后才说要抬高立意)全局分布式ID问题(1.UUID 2.雪花算法 3.mysql/Redis 4.美团Leaf(1.Leaf-segment 2.Leaf-snowflake)跨库跨节点分页查询问题(不会)与朋友合作的开源Go KV项目路过可以的话帮我们点个star✨🌟https://github.com/FinnTew/FincasKV参考面试回答:(吟唱)<strong>面试官:分库分表后、如何解决跨节点JOIN查询问题</strong><span> <code><参考回答:></code></span>分库分表后、跨节点 JOIN 查询会带来性能问题。 为了解决这个问题主要有以下几种方案:1. 全局表: 如果是一些数据量小、变动不频繁的基础数据(比如权限表、配置表、商品分类表)可以将它们复制到每个数据库节点。 这样查询时可以直接在本地 JOIN、避免跨库。 但需要保证全局表的数据同步。2. 冗余字段: 如果经常需要 JOIN 某些字段、可以将这些字段冗余存储到需要查询的表中。 比如在订单表中冗余存储用户的姓名和地址。 这样查询订单信息时、就不用 JOIN 用户表了。 但需要保证冗余字段的数据一致性。3. ER 分片: 如果表之间存在很强的关联关系、比如订单表和订单详情表、可以按照相同的规则进行分片、保证它们在同一个数据库节点上。 这样就可以避免跨库 JOIN。(ER: 例如将订单表 和订单详情表按照 订单ID进行分片)使用一致性哈希算法、将 订单ID映射到不同的数据库节点上。关键: 保证具有相同 订单ID 的订单表记录和订单详情表记录、始终被分配到同一个数据库节点上。)<strong>面试官:非分片键的字段如何查询问题</strong><span> <code><参考回答:></code></span>问题背景:我们选择分片键的时候都是选用查询场景最多的字段来做分片键、但是可能需要查询非分片键下的所有所有数据。例如电商用(订单ID) 做分片但是我们可能会查询订单类型、这些数据可能被分到了不同的库、我们需要聚合所有库的查询、然后返回给前端。导致效率低下回答参考方案:<strong>1.关系映射表:映射关系表就是存储待查询字段和分片键映射关系的一张表、当要使用非分片键查询的时候、先到映射关系表中查询字段所对应的所有分片键、再根据分片键查询所有信息。</strong>(例如创建一个额外的映射表Map、包含 订单ID 和 订单类型 的对应关系。当插入新订单时、同时更新这个映射表。查询时先查映射表获取所有的 订单ID、再根据 订单ID列表查询分片表。总结一下就是用映射去查询我们就可以得到了 缺点是要维护新的Map 适用于对实时性要求不高的情况)<strong>2.  前缀分片法:利用(订单ID)的某些特征来决定数据存储在哪个分片上,并将这个嵌入到主键中。 这样既可以通过主键进行分片、又可以通过UID进行分片。</strong>(例如在生成 订单时,嵌入 用户ID 的某些特征 例如 用户ID的最后一位。然后使用包含这个 订单ID进行分片。这样既可以通过 订单分片,也可以通过 用户ID的特征进行路由。优点不需要额外的存储空间 缺点是可能会产生如果 用户ID分布不均匀、可能会导致数据倾斜)<strong>3.ES: 将所有订单数据同步到ES中、利用 ES 的全文检索和聚合分析能力、进行多条件查询</strong><strong>面试官:分库分表后的分布式ID怎么做?</strong><span> <code><参考回答:></code></span>问题背景:分库分表后需要一个唯一ID来标识一条数据或消息。回答参考方案:说一下各大方案及优缺点就行。1. UUID(优点本地生成、缺点是16字节128位存储成本高以及会产生页分裂问题2.雪花算法(优点生成性能高、可以根据业务特征分配Bit位、缺点是依赖强时间回钟)3.MySQL自增主键和Redis的Incr命令(不做探讨)3. 分布式ID生成服务、如美团的leaf算法(Leaf-segment和Leaf-snowflake)大家这里可以去看美团技术文章 这里引导一下思路就好<strong>面试官:如果要你选择一个分布式ID生成方案你会选什么</strong><span> <code><参考回答:></code></span>1.如果 对 ID 的有序性有要求、且需要高性能的 ID 生成服务、我会优先选择雪花或者 Leaf-snowflake 。 雪花的优点是生成速度快、ID 趋势递增、有利于数据库索引的性能优化。Leaf-snowflake 在雪花的基础上、对时钟回拨问题进行了优化2.如果 对 ID 的有序性没有要求、且可以容忍一定的存储空间浪费、我会选择 UUID。 优点是本地生成、不需要依赖外部服务、生成速度快。3.如果 业务规模较大、对 ID 的全局唯一性、高性能和可扩展性有较高要求、我会选择构建一个专门的分布式 ID 生成服、例如使用 Leaf-segment 算法。 的优点是统一管理、方便维护和扩展、可以根据业务需求定制 ID 生成规则。更新一下CSDN: https://blog.csdn.net/wy990880?type=blog大家copy内容背诵就好了在我看来这个就是点到为止说出自己能知道多少就说多少 不要一点不知道 说多少都是缘分而且我觉得面试官自己也没做过分库分表具体的技术深度大家看看别的
huangyong:分库分表总结得很全面
点赞 评论 收藏
分享
07-11 19:33
门头沟学院 Java
深刻体会到什么叫做技术岗的软实力。
你怎么知道我今天git本地代码覆盖了公司的仓库代码?以前一直以为技术岗技术为王,现在深刻认识到一个人的综合实力强才是真的强。实习日记,今天也是很深刻体会到为什么说技术岗的软实力也是很重要的一个因素。Monitor本来就讲话不是很清楚,我们同组实习生都在吐槽他,我后我又是第一次接触这个新的业务,我也是那种很喜欢刨根问底的人,所以很多时候跟monitor不在一个频道上面,导致一个需求需要沟通很久。我的思维习惯是接收概念,然后自己理解之后再立马去确认是否正确。有点类似于tcc。Monitor的思维习惯是他讲一个东西,喜欢延伸到很多很远的东西,很适合那种和人聊天,喝茶,高谈阔论的那种。有点类似于sagas。因为我完全没有接触过这方面的业务,所以他讲一个东西,对于我来说就是一个新的东西,新的概念。然后呢,他直接跟我讲一个事物的逻辑,然而我却想要马上确认一下这一个事物的逻辑,每一个概念分别是什么意思,有什么作用,在这个逻辑上面会起到什么作用。然后又因为我是新接触的,所以很多时候会有理解偏差,然后monitor就会觉得我怎么这都听不懂,然后又要重头再讲一遍,相当于我每确认一次概念,他都要从头把业务流程再讲一遍,我只能够等他讲完业务流程之后我再确认我的概念有没有正确形成一个这样子的一个循环。现在看来,我已经算是理解这个业务了。其实这件事情本来就挺简单的。技术实现也不难。但是就是涉及到一个人与人沟通的问题,你不能只是坚持你自己的一个思维习惯,你要去能包容人家的思维习惯,并且尝试从人家的思维习惯里面去推演出来一个模板模型。沟通也许算是一种软实力吧,能够很清楚的把事情给讲明白,讲的通俗易懂,一针见血。Monitor是那种比较系统性的就给我解释一些东西,我是我属于那种应用性的,我只在乎什么东西对我的这个业务实现是有用的,我就只管它,我以很多时候我觉得他讲不到重点,他觉得我理解有问题。虽然这是语音转文字,但是我也看出来其实我自己表达也有一些问题。唉,要好好研究一下表达的艺术了。然后我又是那种基本每天提早一小时到岗然后下班自愿无偿加班一两个小时的人,也许因此mt还算对我有点耐心吧。一想起几乎比我早进来的实习生基本都犯过git本地直接全部覆盖远程仓库代码的错误,我就感觉少一丝愧疚了。
点赞 评论 收藏
分享
2024-08-22 17:31
已编辑
阿里巴巴高德出行java/go实习
不是哥们这也能过?????居然约二面了????1.自我介绍2.mysql引擎了解吗3.你觉得不同引擎有什么区别?我们经常用innodb,innodb好好在哪里?我们一般什么时候不用innodb?4.mysql死锁了解吗?-5.自己建张表,写两个事务,写出死锁的例子。6.你觉得有个服务有2个接口,调用这两个事务,这会发生什么?业务层上监控的指标会有什么变化,能想到啥说啥?你觉得XX指标变化的量级会是多少?7.业务上一般怎么处理mysql死锁?8.现在有一个服务,有10个接口,其中2个高qps(1w)的接口分布调了上面的两个事务,其他8个接口(qps1k)也读这个库,那8个接口你觉得监控指标会发生什么变化?你觉得XX指标变化的量级会是多少?9.它在mysql底层是为什么呢?10.mysql一般我们用事务用什么隔离级别?11.可重复读和可串行化的区别是啥?12.它在mysql底层是为什么呢?换句话说可重复读的实现原理是什么?可串行化的实现原理是什么?是什么导致了它们的区别13.讲讲mysql下索引。14.聚簇索引底层和非聚簇索引底层是什么?15.现在我们有张表用uuid建表,有张表用自增id建表,1kw行记录,添加数据的效率谁更高?为什么?16.接着15的场景,我们建完表了,其他数据都一样,只是一张表是uuid作为主键,一张表是自增主键,谁的查询效率高?为什么?17.讲讲你对一般怎么排查慢查询sql。18.你提到了一个阈值,阈值一般怎么设置?慢查询优化阈值一般设定死的吗?19.你在other提到了临时表,你觉得临时表什么时候会出现?-20.自己建张表,写个sql,写出单表查询的场景下出行临时表的例子。21.你用过redis吗?你一般用redis干什么?22.redis的数据结构你了解多少?24.你如何利用redis实现个分布式锁?现成的可以讲讲原理?用原生的redis怎么做,讲讲加解锁的逻辑?25.为什么跳表时间复杂度是log(N)?-26.自己举个跳表的例子,来说明他平均查询复杂度是log(N),最好直接公式推导。27.redis里面我们经常提有大key和热key,你分别讲讲大key是啥,热key是啥?28.大key会导致什么,热key会导致什么29.你觉得有个服务有1个接口,调用这个redis的大key/热key,这会发生什么?业务层上监控的指标会有什么变化,能想到啥说啥?你觉得XX指标变化的量级会是多少?30.现在有一个服务,有10个接口,其中1个低qps(100)的接口调用了大key/热key,其他9个接口(qps1k)也读这个库,那8个接口你觉得监控指标会发生什么变化?你觉得XX指标变化的量级会是多少?31.redis支持持久化吗?32.AOF在文件里面存什么?RDB在文件里面存什么?33.你觉得AOFRDB混合持久化会丢数据吗?会在哪个范围丢数据,为什么?一个redis实例一般会丢失多少数据,这个数量级是多少?34.AOF持久化的时间有哪些?35.现在有个redis cluster,8个主,有个宕机了,缓存命中率会下降多少,为什么?36.你了解一致性哈希吗?37.一致性哈希的话,有个宕机了,缓存命中率会下降多少,为什么?38.一般一致性哈希中会提到一个虚拟节点,虚拟节点是用来干什么?39.加了虚拟节点的一致性哈希,有个宕机了,缓存命中率和不加虚拟节点一不一样,为什么?40.你一般用kakfa干什么41.kafka如何实现顺序消费?kafka本身内部实现讲讲?业务层有什么保证顺序的手段讲讲?42.现在有一个kafka,消息堆积了,你觉得为什么会消息堆积?业务层一般会怎么处理消息堆积问题?43.接着42,它消息堆积,我把它扩容了,原来20台机器我扩容成40台,但是消费者的tps没变,这是为什么呢?想想所有可能的原因,能讲多少是多少?44.kafka一个分区可以被多少一个消费者组内不同消费者消费吗?一个消费者可以同时消费多个topic吗?45.你讲讲对线程安全的理解吧。46.比如说现在有个concurrenthashmap,你不对他加锁就进行一些叠加操作,这个可能会有问题吗?为什么?47.你用过哪些锁?48.reentlock相比于syn在使用上有哪些更优秀的地方?49.reentlock底层原理展开讲讲。50.讲讲reentlock支持可重入锁特性的源码是怎么设计的?51.讲讲reentlock支持区分公平和非公平特性的源码是怎么设计的?52.由你设计一个动态线程池,你会怎么设计?53.java线程池过程?java线程池原理?54.threadlocal,怎么用?什么东西在栈上?什么东西在堆上?为什么设计成弱引用,不是容易内存泄漏吗?55.mybatis星号和井号有什么区别?-56.自己写个sql,能实现sql注入。
ybluea:哥们你触犯天条了吗,实习问五十多个问题
查看55道真题和解析
点赞 评论 收藏
分享
07-02 13:34
已编辑
门头沟学院 Java
从mt的一天,我看到了我的一辈子。
mt六个字,让我破防了。昨天学校下午考完试然后被舍友拉着打游戏还喝的烂醉,然后三点睡七点起床上班,身上还是一股酒味。八点半上班八点到已经成为习惯了。mt是九点到的。今天是他拉我进项目的第一天,就是配环境了解项目。mt从九点到岗之后一坐就是一早上,一早上都在盯代码,偶尔指导一下其他实习生。中午十一点多点个外卖十二点午休吃外卖,边吃外卖边工作十多分钟吃完。吃完丢个外卖然后回工位接着工作。中午一点关灯休息mt还在工作回客户。我试探性问了一下mt“哥你平时有啥爱好?”mt愣了一下,“还有工作要做。”“还有工作要做”这短短的六个字。突然一下子给到我心灵巨大的震撼。我不知道这六个字背后是“我现在有工作做你先不要烦我。”还是“我没有其他的爱好,因为我的生活有很多工作要做。”自然我也是希望是前者。后者也许是我脑补出来的。但是看到mt真的像cpu一样整天都在工作我不免自我反思了一下。“好像我也没有爱好,似乎只有工作能够让我的内心踏实一些。如果不时刻除外一种腹背受敌的感觉,处在那种安逸放松的环境我会感觉到恐慌。”看到朋友圈别人出去旅游自然是羡慕,但是真的自己说“要不出去旅游”的时候,又想到要花很多钱,要用很多时间,也许那个地方并不好看。别人打游戏打的不亦乐乎的时候,我却觉得“这种游戏不就这个玩法吗也就只有这些结果了吧无非就是这样那样”。别人吃好吃的时候我也会羡慕但是真到自己要不吃点啥的时候“唉吃饱就行不花那么多钱钱存起来。”反正各种东西都羡慕,但是自己其实也没有很想做吧。是什么时候开始变成这样子的呢?也许从看到身边很多大一大二和其他学长学姐的人进大厂了的时候就已经有了。仿佛不在“正途”前行奔跑着,就是一种罪过。就像高三身体不舒适也硬撑着上课一样,在高三这样的环境放松就是罪过。在当下的就业环境也是这样吗?“曾迷途才怕追不上满街赶路人。”“仿似一路飞奔七八十岁。”也许我的一生,每一天都像mt一样度过了。
ButtercupG...:小时候以为自己可以改变世界,大了才发现自己不过是芸芸众生
点赞 评论 收藏
分享
2024-09-27 16:07
已编辑
门头沟学院 机械设计/制造
面试反问环节怎么问!看这一篇就够了!
最近大家可能面试都多了起来,不知道大家对于面试反问环节,到底该问些什么问题是否也有类似疑惑。之前曾搜索过相应信息,但面试面多了,感觉反问环节总是翻来覆去的询问团队规模、团队架构、加班情况、面试结果什么时候公布几点,感到有些无趣,于是想特意开了这篇帖子想和大家一起讨论了反问环节到底该问什么。首先我的个人观点,一面技术面,二面主管面,三面hr面,三场不同类型的面试,反问环节的问题应该有所区分。一面技术面的面试官多数是未来同组的员工,可以询问加班情况,得到的回答会比较真实。以及岗位具体工作内容,新人成长路线,团队规模,团队架构这些比较浅的问题。二面主管面的面试官多数是部长、主管级别,他们可能对于具体的技术不细节不是很清晰,但眼界更开阔,可以询问一些比较有意思、尖锐的问题。比如我在汇川联合动力主管面时询问问题:1.现在车企都倡导降本增效,主机厂也会将降本压力给到供应商,这对于汇川是一个很大的压力么?汇川是如何应对的?2.现在车企都在提倡自研部件,汇川作为一个供应商角色,如何对待这件事?以及汇川现在多数项目都是以共同研发的方案与车企进行合作开发,车企可能会将汇川的方案、技术偷走,汇川是如何保证自己的研发领先优势?在开立医疗的面试中,我询问:您认为开立相较于迈瑞、联影,对于我们校招生能提供哪些锻炼提升的机会呢?对于大厂螺丝钉和小厂多面手的是怎样的看法?大家对于求职过程中,涉及行业、企业平台、不同offer间的疑问都可以在这个阶段提问,相当于找了一个较资深专家免费答疑。当你能提出一些比较有意思,尖锐的问题,侧面也体现了你对于公司岗位的思考,我相信面试官也是希望看到这种表现。三面hr面的面试官多数为资深hr、hrbp这些角色,可以询问培训机制、试用期转正、岗位新增还是替补,工作氛围等不涉及技术研发的问题。以下是我整理的一些比较通用的反问问题,可以自取。感谢@进水的小米大箱冰 提供的资料1.您希望这个岗位的面试者具备什么样的能力呢?2.团队人员规模有多大,各自是如何分工的?3.岗位的晋升路线是怎样的?4.未来的发展前景是怎样的?5.如果我有幸加入您负责的部门,您期望我能给团队带来哪些价值?6.培训机制、试用期转正、岗位新增还是替补,工作氛围等7.您认为我的面试表现在哪些方面有待改进呢?8.工作性质(工作多久具备承担新项目的能力?学习多久能进入新产品研发工作?),9.培训形式(新人培训的时间?培训的方式?是不是导师制?)10.公司规模(总规模多少人,研发部门多少人,机械结构多少人)11.我能获得什么锻炼提升的机会?欢迎大家积极交流讨论,这些是我个人的一些理解,也希望伙伴们如果有更好的想法可以评论区告诉我,让我们一起战胜秋招!
风远:别人被面试官压力,佬直接压力面试官
点赞 评论 收藏
分享
04-06 19:48
已编辑
东北大学 Java
美团暑期offer
BG:双非本,末九硕,非科班一周速通美团Timeline一面 3.26二面 4.2Offer 4.3主要面试题:1. 项目中用了 Spring Boot,主要用到了它哪些功能?为什么要用 Spring Boot,而不用其它的呢?2. 你有了解过 Spring Boot 是怎么去实现简化配置的吗?讲讲 Spring Boot 的自动配置原理。3. Spring Boot 自动配置之后会注入,用类或实例的时候有一个 @Autowired 注解去把那些实例对象注入进去,你了解它是怎么去注入的吗?4. 假如有两个类循环依赖了,怎么去解决循环依赖的?@Autowired 注解的实现原理5. 为什么加了 @Transactional 的注解之后,MySQL 就能实现自动回滚呢?6. 事务的代理对象是什么时候生成的,不是调用的时候,而是生成的时候?7. 讲讲 Bean 的生命周期。8. 能说一下 synchronized 是怎么生效的吗?为什么加了之后就可以线程安全?9. 两个进程之间想互相发送信息应该怎么实现(进程之间的通信方式)?通过网络协议不可以吗?10. UDP 和 TCP 之间的区别,你有了解过吗?11. Lock 和 synchronized 有什么区别?12. Lock 接口以及它下面的实现是怎么去实现锁的排队和解锁这些功能的(基于 AQS 的原理)?13. AQS 抢锁是怎么抢的(CAS 机制)?讲一下 CAS。14. CAS 明明有几个判断,它是怎么把它封装成一个原子操作的呢?15. 线上有一个 SQL 在跑,发现这个 SQL 的执行性能不好,从你的角度来说,你觉得应该怎么优化?16. 对于给定的 SQL 语句,表放在 JOIN 的左边和右边有区别吗,区别在哪?17. 你之前用过 AI 相关的工具吗?主要用在什么地方?18. 这些 AI 工具背后有些什么技术原理,你大概了解多少?算法:K个一组反转链表,一个SQL题Base:成都,有美团成都的伙伴可以一起交流一下啊
应时:接offer
查看18道真题和解析
点赞 评论 收藏
分享
玩命加载中
牛客网
牛客网在线编程
牛客网题解
牛客企业服务