每天一套面试题Day19-阿里巴巴高频(3)

链接题目来自牛客

我的每日一套面试题专栏,每天更新一起打卡

13.消息队列如何保证消息不丢?

alt

14.消息队列如何保证不重复消费

幂等性是一个数学概念,在消息队列中的意思是: 无论同一条消息被消费多少次,产生的结果都和消费一次是一样的。

消息队列通过以下机制避免重复消费:1. 生产者端添加唯一消息ID实现发送幂等性;2. 消息队列服务端支持Exactly-Once语义(如Kafka事务消息);3. 消费者端采用去重机制(如数据库唯一索引、Redis原子操作记录已消费ID);4. 业务逻辑设计幂等处理(如状态检查、乐观锁);5. 正确维护消费位移,确保异常后能从正确位置恢复。

15.什么是进程和线程?进程和线程的区别?

进程是操作系统中资源分配的基本单位,线程是进程中执行的基本单位,进程拥有独立的内存空间,而线程共享进程的内存空间和资源。 内存空间 进程:拥有独立的内存空间。 线程:共享进程的内存空间。

资源开销 进程:创建和切换开销大。 线程:创建和切换开销小。

通信方式 进程:通过进程间通信(IPC)进行数据交换,如管道、消息队列、共享内存。 线程:通过共享内存直接通信,速度快但需注意同步。

并发性 进程:适合多任务并发,进程间隔离性好。 线程:适合多线程并发,资源共享效率高。

16.建索引时需注意哪些事项?

建索引时需注意以下事项:首先,选择合适的列进行索引,优先考虑经常用于查询条件、排序和连接的列;其次,避免在频繁更新的列上建立索引,以减少维护开销;此外,控制索引的数量,过多的索引会影响写入性能;同时,注意索引的选择性,选择性高的索引能更有效地过滤数据;最后,定期分析和优化索引,以适应数据和查询模式的变化

17.SQL 调优常见方法有哪些?

我的博客详解 先监控发现慢SQL,然后通过EXPLAIN分析执行计划,接着从索引和SQL语句本身这两个成本最低的方面入手进行优化。如果这些手段都达到了瓶颈,最后才会考虑读写分离、分库分表等架构层面的方案。

18.大表(千万级)查询 / 维护该怎么办?

千万级”是一个量级描述,通常指的是数据库表中数据行的数量。 千万级: 具体指 10,000,000 行级别的数据。

诊断与监控: 使用 EXPLAIN 分析慢查询SQL,使用数据库监控工具(如Prometheus, PMM)定位瓶颈。

基础优化:

优化SQL和索引: 这是投入产出比最高的步骤。

架构优化:

数据归档: 将数据库中不常使用但又有保留价值的历史数据,从主业务表中移动到专门的归档表或存储中,以保持主业务表的高效运行。

使用分区表: 如果数据有明显的范围特性(如时间),分区是很好的选择。

引入读写分离: 缓解主库压力。

终极方案:

分库分表: 当以上所有手段都无法满足性能要求时,再考虑这个最复杂但扩展性最强的方案。

19.深度分页、读写分离、分库分表后 SQL 该如何优化?

我的博客详解

  • 深度分页:核心问题是OFFSET效率低。首选方案是游标分页(基于ID或时间戳),其次是子查询优化,最后是业务上的限制。
  • 读写分离:核心问题是主从延迟。对于一致性要求高的场景,采用强制读主库的方案,并可以通过AOP注解实现。同时,业务设计上也可以做最终一致性的妥协。
  • 分库分表:这是架构上的重大变化,SQL优化思路完全不同。核心是一切围绕分片键进行
    • 首先要保证有全局ID。
    • 其次,所有查询尽量带上分片键,避免跨库查询。
    • 对于JOIN,采用业务层组装字段冗余
    • 对于聚合和复杂查询,交给异构索引库(如ES)OLAP系统 来处理。
#面试真题#
每日一套面试真题 文章被收录于专栏

记录刷过的面试真题

全部评论

相关推荐

一共一个小时,面试难度以及自己的回答算是最近的面试压力比较大的,实习问了30分钟,中间穿插八股。1.redis数据结构2.redis持久化机制3.mysql索引底层4.聚簇索引与非聚簇索引5.索引优化6.索引失效7.mysql执行一条sql8.那么多索引mysql怎么选(不会)9.tcp与udp区别10.tcp为什么可靠11.消息队列作用12.kafka怎么保证消息有序性13.mcp是什么?14.skills是什么?15.jvm内存分配与回收过程(我讲了从创建对象到判断垃圾对象到垃圾回收我全说了一遍,是这个吗?)16.fullgc触发机制17.tcp的拥塞控制流程(不会了)18.分布式事务解决方案,说了2pc,3pc,tcc。算法是反转双向链表,没有按格式输出,但是面试官没让继续写了,面完以为挂了,结果晚上秒过,看看复试什么情况吧。今天百度打电话准备发offer了,业务跟在手子的差不多,很垂,并且说不分日常暑期,只看表现,会有转正机会,但是考虑再三还是拒绝了,百度实习薪资确实有点低,title也不如之前了,但是面试的二位业务老师我很喜欢,对我的评价也不错,希望之后能有机会共事。从三月份到现在一共面了六家,面试次数总共是8场,情况如下:脉脉二面(无答复,默认挂)百度二面已oc美团一面过,下周一二面shein一面过直接HR面游族一面过直接HR面腾讯一面过等待约二面滴滴明天一面面试通过率还是蛮高的,但是大部分都是日常,感觉对我现在的加成不大,大概率不会去,不知道暑期会是什么情况呢唉,希望能有面试吧,继续加油。字节被无hc直接取消了,现在还没人捞,有没有字节HR救救我
不管什么都不想跳动了:本人美团百度快手都待过,建议肯定是直接留快手多一点产出后转正or直接冲字节腾讯暑期吧。一是快手从福利到基建都吊打另外两家。美团现在这个业务比较惨,本来毛利就很低,亏损严重,今年很可能要优化人力降低成本,去了别说日常,就算暑期后面都很可能被优化。百度其实实习生权限挺高的,可以接触到一些含金量高的项目,但是现在的风评不如之前了,薪资也不高。二是转正概率和薪资是跟产出挂钩的,你都在手子已经积累产出了,去其他家日常实习产出都是从0开始,肯定不可能有你在手子转正可能性大啊,现在日常压根没必要去,而且我有两个师弟都是在快手日常转正的,不用太担心,安心留在手子一边多做一点产出然后一边冲字节腾讯暑期,字节腾讯今年实习岗位非常多的,不如好好把握这个,加油。
查看18道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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