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

链接题目来自牛客

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

7.详细的说说Redis的数据类型

String 计数器 Set 集合交并差 共同关注 List 消息队列 ZSet 班级排名 Hash 对象

Stream 消息队列 GEO 查看附近的位置 HyperLogLog 以固定的较少内存实现不精确的去重计数,如网站UV统计 BitMap 位图,二值,签到,用户状态

8.说说Redis的持久化策略。

我的博客详解

Redis提供两种持久化策略:RDB和AOF。 AOF记录的是操作命令。如果要做恢复。得有执行命令的过程。 如果用RDB,那么直接把他读入内存就可以。所以RDB更快 RDB通过定时生成数据快照实现,适合快速恢复但可能丢失部分数据;AOF记录所有写操作命令,数据完整性更高但文件较大。此外,Redis支持混合持久化模式(AOF+RDB),结合两者优势实现高效备份与恢复。

9.讲一下乐观锁和悲观锁

我的博客详解

  1. 思想: “乐观锁和悲观锁是解决并发数据竞争的两种不同思路,核心区别在于它们对冲突可能性的预期不同。”

  2. 分别阐述:

    • 悲观锁: 先讲思想(“总是假设最坏的情况”),再讲实现(Java的synchronizedLock;数据库的for update),然后说优缺点和场景。
    • 乐观锁: 先讲思想(“总是假设最好的情况”),再讲实现(版本号机制、CAS),然后说优缺点(一定要提到ABA问题及其解决方案)和场景。
  3. 对比总结(画龙点睛):

    特性 悲观锁 乐观锁
    核心思想 防患于未然 亡羊补牢
    实现方式 synchronized, Lock 版本号,CAS
    开销 大(上下文切换) 小(无阻塞,但冲突高时重试开销大)
    适用场景 写多读少,临界区大 读多写少
    数据库类比 SELECT ... FOR UPDATE 使用version字段
  4. 结合实际(加分项):

    • “比如在电商系统中,扣减商品库存这个操作,如果是个秒杀场景,写操作非常密集,用悲观锁可能更合适,因为冲突概率极高。如果是普通商品,浏览多购买少,用乐观锁性能会更好。”
    • “在Java的java.util.concurrent包中,很多并发容器(如ConcurrentHashMap)在实现时都大量使用了CAS这种乐观锁技术来保证线程安全的同时提升性能。”

10.从「敲下一个 URL」到「页面出现在屏幕」整条链路全景

DNS 主机到本地域名服务器递归查询,本地域名服务器,为了完成对客户端的递归查询承诺,向根、顶级、权限域名服务器发起查询,并接收来自它们的迭代查询响应,最终拿到域名对应的IP。

ARP协议,由目的IP得到目的MAC(路由器的MAC)

TCP三次握手建立连接

应用层:生成 HTTP 请求 传输层:TCP 分段,添加端口号 网络层:IP 封装,添加 IP 地址 数据链路层:添加 MAC 地址,形成帧 物理层:转换为比特流传输

由IP协议指路到达服务器

服务器再一层层拆开,拆到应用层,解析,响应经过HTTP应用层,TCP传输层,IP网络层,网络接口层等封装,返回客户端

浏览器解析渲染

TCP四次挥手断开连接 (连接管理:根据 HTTP 版本和头信息决定是否保持连接或关闭,现代HTTP/1.1默认长连接,可能不会立即断开)

11.如何在 UDP 之上实现可靠传输?

小林(QUIC)

12.消息队列如何保证顺序消费?

消息队列通过生产者按顺序发送至同一分区/队列,消费者单线程顺序处理实现。需确保同一业务标识的消息路由到相同分区,并限制分区仅被一个消费者消费。部分中间件支持全局顺序或局部顺序控制,同时需处理异常重试机制防止乱序。

#面试真题#
每日一套面试真题 文章被收录于专栏

记录刷过的面试真题

全部评论

相关推荐

11-08 16:38
已编辑
门头沟学院 Java
面完感觉稳了,过了一会去官网看状态直接变成业务复试。最舒服的一次,面了70min,化身八股杀手,而且跟面试官沟通起来也及其舒服。八股有一些遗漏了忘了问题是啥了,八股问了挺多的。然后就是一些场景结合之类的了,最后就是ai方面的1、自我介绍2、问我最近的一个项目,但是我这里回答的是实习期间的项目,然后追着问了一会八股环节为什么用kafka,kafka有什么好处,跟其他的消息队列相比,然后追问了一会,这个答得不太好,好多忘记了。tcp三次挥手,一定要三次吗,减少一次会怎么样。你说的syn具体是什么,作用是什么tcp的报文结构进程间通信的方式有几种信号跟信号量有什么区别,具体他们是怎么通信的讲一下用户态和内核态中间还有几个操作系统的问题讲一下java中的list讲一下ArrayList和Linkedlist,他们的底层实现ArrayList扩容讲一下,插入的时候是怎么插入的map讲一下,Hashmap,hashtable,treemap,concurrentHashmap这几个的底层和实现还有部分的扩容机制都讲了,然后问了Hashmap会有什么问题,中间又有几个java八股忘了题目是什么了线程池参数和原理拒绝策略有哪些让你设计线程池一般怎么分配参数线程越多越好吗new一个对象在jvm中的完整流程。怎么判断对象是否是垃圾,有哪些算法。这里是引用计数法和可达性分析算法。从gc roots出发未达到的对象就一定是垃圾吗,不一定,这里可能还会二次确认如果不让你使用spring会有什么不一样,这里就是讲spring的一些核心特性讲一下aop,ioc的底层实现,具体怎么运作的mybatis的二级缓存原理,运行流程redis的数据类型,讲一下他们的底层实现msql常见的引擎,索引之类的,一般怎么使用讲一下b+树和b树的区别平时怎么使用ai,这里又聊了一会然后就是反问环节了。
查看26道真题和解析
点赞 评论 收藏
分享
11-18 11:16
已编辑
蚌埠坦克学院 Java
11/12 后端长沙1.问实习,介绍实习项目说说开发流程难点啥的2.java你了解的锁有哪些,延伸问synchronized这些介绍使用3.守护线程4.缓存的实践经验有哪些?5.Redis性能好的原因是什么?6.Redis的持久化方式有哪些?各自原理是什么?7.Redis宕机重启后的加载流程是什么?RDB和AOF会先加载哪份数据?8.Redis的内存淘汰策略有哪些?9.缓存击穿、穿透、雪崩的现象及核心解决思路?10.布隆过滤器的原理是什么?11.url流程12.长连接短连接13.JVM的内存模型分为哪些部分?14.JVM内存管理的算法有哪些?15.新生代和老年代互相转换的时机是什么?16.除了新生代GC,还有哪些GC类型?17.慢查询优化排查18.索引失效19.除了索引优化、SQL写法优化,还有哪些优化查询性能的方案?(分库分表)20.怎么理解spring中的bean21.依赖注入(DI)是怎么做的?22.多个相同类型的Bean如何注入匹配?23. @Bean和@Component的区别及适用场景?24.如何拆解提示词让大模型帮助优化接口响应时间?25.写提示词的原则、思路或技巧有了解吗?26.若Cursor生成的SQL语句有语法错误(如缺少关键字),如何修复并与大模型交互?27.了解大模型的原理吗?(如Agent、RAG相关概念)28.如何看待大模型对开发效率的提升29.大模型相关的学习或了解计划是什么?30.分布式事务和普通事务区别31.反问时长45分钟面试官人很好,也有指出不足的地方,每个问题也有反馈有不太了解的地方也会介绍一下-----------------------------30分钟后业务复试-----------------------------11/18约二面
查看60道真题和解析
点赞 评论 收藏
分享
11-02 15:12
已编辑
门头沟学院 后端工程师
说一下我的学习和实习经历:我大二学的Java和springboot,但是也没有学到很精,大三下今年3月份的时候 准备找实习,最后找到一个在武汉工资还不错的实习,但是实习进去之后是Python+fastapi后端开发,当时看这个实习离学校近有工资可以,虽然不是Java但还是去。然后整个实习过程实习了6个月(怪自己当时自己懒得找第二段)。最后因为没有转正,我9月4号离职,由于实习做的是Python,而且在实习六个月再也没有学java了,所以写了份Python后端+ai应用的简历,9月6号正式开始投。然后就出现两种情况:ai应用这方面的岗位,我也在投递的过程中有了认知,我目前公司学的那点以及我的学历,跟这类岗位不匹配。然后我就all in python后端,后端Python真的确太少了,再加上自己双非本的学历,全是笔试(有些挂了,有些过了一直没面试),在九月只有一个面试。到九月底了,我在武汉面了一个3个月实习考核签三方的200多人的小公司,这个公司签三方也有10000,整体还行吧 大不了边实习边秋招,这个做个保底。面试的时候说的python和go,结果来了才知道后端js为主(因为公司产品是聊天产品),让我学习js。因为我之前实习的mt已经我的程序员亲戚他们都跟我说除了java那一套太重了,后端开发语言不重要,都是比较容易转的,所以我当时也就接受了js。我是10月十几号来这里开始实习 ,在实习第一个星期我参加了保融的软件开发Python 线下笔试和线下群面一面,面试问的问题就是那种你实习遇到的难点,你最得意的成果这种,我答的一塌糊涂,话也没那么多,毫无疑问挂了。然后实习第二个星期,拼多多给我面试,问的全是实习经历然后最后一到算法题(这个岗位是java开发,可能我简历写的实习是Python所以没问什么吧),毫无疑问挂了。然后第三个星期,学校有个国企来线下宣讲会笔试面试招java开发工程师,很心动但是已经在实习了,只是抽时间学了一些java的就去了。笔试面试都很简单,但是我好久没学java相关的,很多东西都是听过知道,但是具体就不知道了。感觉应该是挂的。现在开始反省自己,1. 方向错误,2 .有些懒,没学的多好,3. 自身学历不行。这个实习考核也不简单,边实习边秋招也没精力了。目前看来,如果踏踏实实在这里实习,学的东西还是很多的,所以决定现在还是现在这里全力实习吧。
北斗导航Compas...:先努力过再去抱怨环境吧,通篇就给我一个感受 太懒了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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