每天一套面试题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.消息队列如何保证顺序消费?

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

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

记录刷过的面试真题

全部评论

相关推荐

被前mentor说进不了TME,现在转正了。我有两段实习,前一段也是在一个音乐平台,回想起来,实习开局颇为不顺,第一个月对业务不熟导致一些差错。单聊时被mentor压力,说我产出不够,转正困难。后面他问我想进哪一个公司,反正留不下,我直接说腾讯音乐,他说我进不了腾讯音乐。本来打算熬够3个月,够刷一段简历就走,和mentor聊完,立马提桶跑路了,还浪费了我宜家200块买的小床垫。一、回学校就抓紧投了TME,还真拿了实习的offer。开始实习的时候,就一个状态,什么都无所谓,先立flag:在TME实习,存活且转正。mentor接我到工位,并且在中午请我吃了第一餐,豪刺!我的mentor是常说的那种从学历智商到工作能力,完全向下兼容我,但依然提供超级多情绪价值的人。这里的氛围是真爱夸夸啊,看到我干点什么小事儿或者提出点什么想法都能夸一句,属实给我情绪价值拉满了,搞得还有点不好意思到点下班(不可能本小老鼠已经要上天堂了,具体表现为每天上班都很积极,平时组里开会也大家都会带我去听。众所周知,实习生穷的一批,但靠着各位榜一的慷慨过得还不错。具体表现为组里有羊毛就薅,没有羊毛就要(bushi表现为mentor会经常带我中午去吃好吃的,同事们也常常投喂。我的岗位是做算法的,现在TME不少团队都在做AI,所以组里每周都会有一个前沿分享会,分头一起看点论文分享热点,一起讨探讨一些和业务不是那么直接相关的前沿问题。这个体验还是蛮好的,每周这个时候我都有点恍惚,到底是不是在学校。我在的组感觉哥哥姐姐们都是高能量人群,下班之后都忙着去玩自己的事儿,大家都很chill(没什么内卷,把想来扣在评论区)二、实习到转正到现在,发现会上班真的是一种能力!mentor 教我发脾气,为我兜底也让我松弛了。“你不需要这么 nice的”“这样的情况该怼就怼,不要憋气”也教我抓住机会,他在旁边给我兜底。我想多锻炼,mentor甚至专门去找leader要了点活过来给我。经过熟悉后,便开始交给我做具体的业务开发,我目前做的是音乐软件的搜索和推荐功能。具体说说就是当用户搜索某首歌曲时,系统需要智能展示其不同版本,在推荐场景中,则需要准确识别用户偏好并推送可能感兴趣的歌曲。我深刻地体会到了一段好的实习是无论你做什么分析和策略,背后都有人能给出客观的建议和有力的托举,通过own一些项目去成长,最有成就感的莫过于最终取得收益并推全的那一刻,和转正答辩通过的那一刻,好幸运能体验到这些!确实不是每个人都能轻松获得理想的实习机会,但还是要试着为自己创造可能。另外,心态调整也很关键。现在能拿到offer本身就不容易,甚至我身边不少同学到现在还在积极求职。三、下面分享一些我认为对成功转正有帮助的tips!!关键:确认headcount建议面试就问,到实习中期也找合适的机会主动问问mt或hr。如果这个岗位不是明确有转正,要表达你想留下来的意愿,试探有没有机会。一定厚脸皮问!这关系到你后面几个月的努力方向。一旦确定有hc,就尽快搞清楚转正需要满足哪些条件:比如实习天数、答辩流程、考核标准。心中有数,平时工作的时候也能有意识地去积累相关案例和数据。实习期间:谁不喜欢一个靠谱、主动、还有自己想法的实习生呢交给自己的事,尽量做到“事事有回应”,搞清楚需求再动手,明确交付时间和形式;我习惯把长期任务拆成几个阶段,每个节点都找导师对一下思路和框架,避免跑偏;定期主动沟通进度,简单复盘近期工作,也和同事保持友好交流,这些小事也很加分。答辩那天:人设!人设立出来(自己的记忆点)我的答辩框架(供参考:简单介绍自己(背景+实习岗位)整体工作概述重点讲1-2个项目(突出自己的角色和贡献)复盘与反思(学到了什么、哪些可以做得更好)未来的规划(想在这个岗位上成长为什么样的人)答辩前也可以提前准备一些常见问题的回答,比如:你觉得这个岗位最需要什么能力?实习中遇到最大的困难是什么?怎么解决的?你觉得自己最大的优势是什么?未来想在哪个方向深耕?!还有backup选项万一转正没通过,也别慌忙放弃。可以问问部门内部或者其他团队有没有校招hc,争取被推荐到其他岗位。很多同学都是通过内部推荐成功上岸的,近水楼台先得月!最后,无论大家拿到什么样的offer,都试着用积极的心态去面对和适应吧,之后再根据实际情况逐步调整、改变,毕竟世界上唯一不变的是变化本身。
__never_mi...:TME 感觉真不错吧
腾讯音乐娱乐集团成长空间 274人发布
点赞 评论 收藏
分享
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...:先努力过再去抱怨环境吧,通篇就给我一个感受 太懒了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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