腾讯今年薪资开了,有新变化!

液态神经网络(LNN):打破AI“静态快照”的连续动力学革命---AI大模型系统从零开始0029 MIT研究团队受秀丽隐杆线虫神经系统的启发,开发出革命性的液态神经网络(LNN)。该技术通过连续微分方程建模神经元动态,实现输入响应速度的自适应调节,解决了传统AI模型静态化、高能耗和低解释性的痛点。LNN具有三大突破性优势:仅需少量神经元(如20个)即可完成复杂任务;能处理非均匀时序数据;在自动驾驶、医疗监测等领域展现出卓越的适应性和鲁棒性。这项将生物智能与数学建模完美融合的技术,有望成为下一代AI的核心架构,目前已在无人机导航等场景验证了其高效性,被预测为2026年最具潜力的AI突破方向。 阅读详情
AI摘要

本文分享了腾讯Java后端校招面经,涵盖操作系统、数据结构、MySQL、Redis、Java、MQ等知识。介绍了进程线程区别、排序算法、存储引擎、数据类型等内容,还提及薪资变化、消息队列选型及可靠性保证等,最后有手撕算法和反问环节。

腾讯终于也陆陆续续开奖了,今年腾讯的薪资结构相比去年是有变化的。

往年腾讯校招生每个月都有 4k 的房补,然后是 16 薪资(12 薪资+4 个月年终),今年开始房补是加入到了月薪 base,并且把第 13 薪资平摊到了月薪 base,年终奖变为 3 个月,也就是变为了 15 薪资。

这样变化之后,月薪 base 相比之前就会高不少,每个月到手的变多了。

先看看去年 24 届腾讯的校招薪资:

图片

根据今年已开奖同学的薪资情况,我也整理了一个 25 届腾讯后端开发岗位的校招薪资:

图片

ssp offer:

  • 33k * 15 + 10w(股票分 2 年发)+ 签字费6w

  • 32k * 15 + 6w(股票分 2 年发)+ 签字费3w

sp offer:

  • 30k * 15 + 6w(股票分 2 年发)+ 签字费3w

  • 29k * 15 + 6w(股票分 2 年发)+ 签字费3w

  • 28k * 15 + 6w(股票分 2 年发) + 签字费3w

  • 27k * 15 + 签字费3w

普通 offer:

  • 26k * 15

  • 24k * 1

今天给大家分享,一位 Java 后端同学的腾讯校招面经,问的问题还是比较多的,接近 30 个问题,再加上写算法,一场面试下来,时长有 1 小时+。

腾讯面试的强度还是很大,很多同学跟我反馈,每次面完腾讯都一把汗,甚至有同学被腾讯面了 2 小时+。

图片

考察的知识还是比较多的,我这里简单给在大家列了一下:

  • 操作系统:进程&线程、进程隔离性

  • 数据结构:排序算法、排序稳定性、归并排序、快速排序

  • MySQL:存储引擎、聚簇索引、B+树、索引失效、事务隔离级别、脏读、幻读

  • Redis:数据类型、String 底层实现、热 key

  • Java:ArrayList、Vector、HashMap

  • MQ:消息队列选型、消息可靠性、消息确认机制、Kafka 、RocketMQ

总体考察的范围,就是编程语言+计算机基础+后端组件。

操作系统

进程和线程的区别

图片

  • 本质区别:进程是操作系统资源分配的基本单位,而线程是任务调度和执行的基本单位

  • 在开销方面:每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有自己独立的运行栈和程序计数器(PC),线程之间切换的开销小

  • 稳定性方面:进程中某个线程如果崩溃了,可能会导致整个进程都崩溃。而进程中的子进程崩溃,并不会影响其他进程。

  • 内存分配方面:系统在运行的时候会为每个进程分配不同的内存空间;而对线程而言,除了CPU外,系统不会为线程分配内存(线程所使用的资源来自其所属进程的资源),线程组之间只能共享资源

  • 包含关系:没有线程的进程可以看做是单线程的,如果一个进程内有多个线程,则执行过程不是一条线的,而是多条线(线程)共同完成的;线程是进程的一部分,所以线程也被称为轻权进程或者轻量级进程

为什么进程崩溃不会对其他进程产生很大影响

主要是因为:

  • 进程隔离性:每个进程都有自己独立的内存空间,当一个进程崩溃时,其内存空间会被操作系统回收,不会影响其他进程的内存空间。这种进程间的隔离性保证了一个进程崩溃不会直接影响其他进程的执行。

  • 进程独立性:每个进程都是独立运行的,它们之间不会共享资源,如文件、网络连接等。因此,一个进程的崩溃通常不会对其他进程的资源产生影响。

数据结构

知道哪些排序算法,时间复杂度

图片

  • 冒泡排序:通过相邻元素的比较和交换,每次将最大(或最小)的元素逐步“冒泡”到最后(或最前)。时间复杂度:最好情况下O(n),最坏情况下O(n^2),平均情况下O(n^2)。,空间复杂度:O(1)。

  • 插入排序:将待排序元素逐个插入到已排序序列的合适位置,形成有序序列。时间复杂度:最好情况下O(n),最坏情况下O(n^2),平均情况下O(n^2),空间复杂度:O(1)。

  • 选择排序:通过不断选择未排序部分的最小(或最大)元素,并将其放置在已排序部分的末尾(或开头)。时间复杂度:最好情况下O(n^2),最坏情况下O(n^2),平均情况下O(n^2)。空间复杂度:O(1)。

  • 快速排序:通过选择一个基准元素,将数组划分为两个子数组,使得左子数组的元素都小于(或等于)基准元素,右子数组的元素都大于(或等于)基准元素,然后对子数组进行递归排序。时间复杂度:最好情况下O(nlogn),最坏情况下O(n^2),平均情况下O(nlogn)。空间复杂度:最好情况下O(logn),最坏情况下O(n)。

  • 归并排序:将数组不断分割为更小的子数组,然后将子数组进行合并,合并过程中进行排序。时间复杂度:最好情况下O(nlogn),最坏情况下O(nlogn),平均情况下O(nlogn)。空间复杂度:O(n)。

  • 堆排序:通过将待排序元素构建成一个最大堆(或最小堆),然后将堆顶元素与末尾元素交换,再重新调整堆,重复该过程直到排序完成。时间复杂度:最好情况下O(nlogn),最坏情况下O(nlogn),平均情况下O(nlogn)。空间复杂度:O(1)。

归并排序和快速排序的使用场景

  • 归并排序是稳定排序算法,适合排序稳定的场景;

  • 快速排序是不稳定排序算法,不适合排序稳定的场景,快速排序是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;

排序稳定是什么意思?

图片

排序稳定指的是在排序过程中,对于具有相同排序关键字的元素,在排序后它们的相对位置保持不变。

换句话说,如果在排序前两个元素 A 和 B 的值相等,并且 A 在 B 的前面,那么在排序后 A 仍然在 B 的前面,这样的排序就是稳定排序。稳定排序保持了相同元素之间的顺序关系,适用于需要保持原始顺序的场景。

稳定和不稳定排序算法有什么特点?

稳定排序算法的特点:

  • 相同元素的相对位置不会改变,排序后仍然保持原始顺序。

  • 适用于需要保持元素间相对顺序关系的场景,如按照年龄排序后按姓名排序。

不稳定排序算法的特点:

  • 相同元素的相对位置可能会改变,排序后不保证原始顺序。

  • 可能会更快,但不适用于需要保持元素间相对顺序关系的场景。

MySQL

MySQL 的存储引擎有哪些?为什么常用InnoDB?

MySQL 的存储引擎常用的主要有 3 个:

  • InnoDB存储引擎:支持事务处理,支持外键,支持崩溃修复能力和并发控制。如果需要对事务的完整性要求比较高(比如银行),要求实现并发控制(比如售票),那选择InnoDB有很大的优势。如果需要频繁的更新、删除操作的数据库,也可以选择InnoDB,因为支持事务的提交(commit)和回滚(rollback)。

  • MyISAM存储引擎:插入数据快,空间和内存使用比较低。如果表主要是用于插入新记录和读出记录,那么选择MyISAM能实现处理高效率。如果应用的完整性、并发性要求比 较低,也可以使用。如果数据表主要用来插入和查询记录,则MyISAM引擎能提供较高的处理效率

  • MEMORY存储引擎:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。如果只是临时存放数据,数据量不大,并且不需要较高的数据安全性,可以选择将数据保存在内存中的Memory引擎,MySQL中使用该引擎作为临时表,存放查询的中间结果

常用InnoDB的原因是支持事务,且最小锁的粒度是行级锁。

B+ 树和 B 树的比较

B 树和 B+ 都是通过多叉树的方式,会将树的高度变矮,所以这两个数据结构非常适合检索存于磁盘中的数据。

但是 MySQL 默认的存储引擎 InnoDB 采用的是 B+ 作为索引的数据结构,原因有:

  • B+ 树的非叶子节点不存放实际的记录数据,仅存放索引,因此数据量相同的情况下,相比存储即存索引又存记录的 B 树,B+树的非叶子节点可以存放更多的索引,因此 B+ 树可以比 B 树更「矮胖」,查询底层节点的磁盘 I/O次数会更少。

  • B+ 树有大量的冗余节点(所有非叶子节点都是冗余索引),这些冗余索引让 B+ 树在插入、删除的效率都更高,比如删除根节点的时候,不会像 B 树那样会发生复杂的树的变化;

  • B+ 树叶子节点之间用链表连接了起来,有利于范围查询,而 B 树要实现范围查询,因此只能通过树的遍历来完成范围查询,这会涉及多个节点的磁盘 I/O 操作,范围查询效率不如 B+ 树。

除了聚簇索引,还有什么索引?

还有二级索引、联合索引、前缀索引、唯一索引等。

二级索引存放的有哪些数据?

索引又可以分成聚簇索引和非聚簇索引(二级索引),它们区别就在于叶子节点存放的是什么数据:

  • 聚簇索引的叶子节点存放的是实际数据,所有完整的用户记录都存放在聚簇索引的叶子节点;

  • 二级索引的叶子节点存放的是主键值,而不是实际数据。

索引失效的情况

索引失效的情况:

  • 当我们使用左或者左右模糊匹配的时候,也就是 like %xx 或者 like %xx%这两种方式都会造成索引失效;

  • 当我们在查询条件中对索引列使用函数,就会导致索引失效。

  • 当我们在查询条件中对索引列进行表达式计算,也是无法走索引的。

  • MySQL 在遇到字符串和数字比较的时候,会自动把字符串转为数字,然后再进行比较。如果字符串是索引列,而条件语句中的输入参数是数字的话,那么索引列会发生隐式类型转换,由于隐式类型转换是通过 CAST 函数实现的,等同于对索引列使用了函数,所以就会导致索引失效。

  • 联合索引要能正确使用需要遵循最左匹配原则,也就是按照最左优先的方式进行索引的匹配,否则就会导致索引失效。

事务隔离级别有哪些?

四个隔离级别如下:

  • 读未提交,指一个事务还没提交时,它做的变更就能被其他事务看到;

  • 读提交,指一个事务提交之后,它做的变更才能被其他事务看到;

  • 可重复读,指一个事务执行过程中看到的数据,一直跟这个事务启动时看到的数据是一致的,MySQL InnoDB 引擎的默认隔离级别;

  • 串行化;会对记录加上读写锁,在多个事务对这条记录进行读写操作时,如果发生了读写冲突的时候,后访问的事务必须等前一个事务执行完成,才能继续执行;

按隔离水平高低排序如下:

图片

什么情况下会出现幻读?

在一个事务内多次查询某个符合查询条件的「记录数量」,如果出现前后两次查询到的记录数量不一样的情况,就意味着发生了「幻读」现象。

举个栗子。

假设有 A 和 B 这两个事务同时在处理,事务 A 先开始从数据库查询账户余额大于 100 万的记录,发现共有 5 条,然后事务 B 也按相同的搜索条件也是查询出了 5 条记录。

图片

接下来,事务 A 插入了一条余额超过 100 万的账号,并提交了事务,此时数据库超过 100 万余额的账号个数就变为 6。

然后事务 B 再次查询账户余额大于 100 万的记录,此时查询到的记录数量有 6 条,发现和前一次读到的记录数量不一样了,就感觉发生了幻觉一样,这种现象就被称为幻读。

事务的 MVCC 是怎么实现的?

对于「读提交」和「可重复读」隔离级别的事务来说,它们是通过 Read View 来实现的,它们的区别在于创建 Read View 的时机不同:

  • 「读提交」隔离级别是在每个 select 都会生成一个新的 Read View,也意味着,事务期间的多次读取同一条数据,前后两次读的数据可能会出现不一致,因为可能这期间另外一个事务修改了该记录,并提交了事务。

  • 「可重复读」隔离级别是启动事务时生成一个 Read View,然后整个事务期间都在用这个 Read View,这样就保证了在事务期间读到的数据都是事务启动前的记录。

这两个隔离级别实现是通过「事务的 Read View 里的字段」和「记录中的两个隐藏列」的比对,来控制并发事务访问同一个记录时的行为,这就叫 MVCC(多版本并发控制)。

在创建 Read View 后,我们可以将记录中的 trx_id 划分这三种情况:

图片

一个事务去访问记录的时候,除了自己的更新记录总是可见之外,还有这几种情况:

  • 如果记录的 trx_id 值小于 Read View 中的 min_trx_id 值,表示这个版本的记录是在创建 Read View 前已经提交的事务生成的,所以该版本的记录对当前事务可见。

  • 如果记录的 trx_id 值大于等于 Read View 中的 max_trx_id 值,表示这个版本的记录是在创建 Read View 后才启动的事务生成的,所以该版本的记录对当前事务不可见。

  • 如果记录的 trx_id 值在 Read View 的 min_trx_id 和 max_trx_id 之间,需要判断 trx_id 是否在 m_ids 列表中:

    • 如果记录的 trx_id 在 m_ids 列表中,表示生成该版本记录的活跃事务依然活跃着(还没提交事务),所以该版本的记录对当前事务不可见。

    • 如果记录的 trx_id 不在 m_ids列表中,表示生成该版本记录的活跃事务已经被提交,所以该版本的记录对当前事务可见。

这种通过「版本链」来控制并发事务访问同一个记录时的行为就叫 MVCC(多版本并发控制)。

事务之间怎么避免脏读的?

针对不同的隔离级别,并发事务时可能发生的现象也会不同。

图片

也就是说:

  • 在「读未提交」隔离级别下,可能发生脏读、不可重复读和幻读现象;

  • 在「读提交」隔离级别下,可能发生不可重复读和幻读现象,但是不可能发生脏读现象;

  • 在「可重复读」隔离级别下,可能发生幻读现象,但是不可能脏读和不可重复读现象;

  • 在「串行化」隔离级别下,脏读、不可重复读和幻读现象都不可能会发生。

所以,要解决脏读现象,就要升级到「读提交」以上的隔离级别,这样事务只能读到其他事务已经提交完成的数据,而不会读到未提交事务的数据,就避免脏读的问题。

Redis

Redis 支持哪几种数据类型?

Redis 提供了丰富的数据类型,常见的有五种数据类型:String(字符串),Hash(哈希),List(列表),Set(集合)、Zset(有序集合)。

图片

图片

img

随着 Redis 版本的更新,后面又支持了四种数据类型:BitMap(2.2 版新增)、HyperLogLog(2.8 版新增)、GEO(3.2 版新增)、Stream(5.0 版新增)。Redis 五种数据类型的应用场景:

  • String 类型的应用场景:缓存对象、常规计数、分布式锁、共享 session 信息等。

  • List 类型的应用场景:消息队列(但是有两个问题:1. 生产者需要自行实现全局唯一 ID;2. 不能以消费组形式消费数据)等。

  • Hash 类型:缓存对象、购物车等。

  • Set 类型:聚合计算(并集、交集、差集)场景,比如点赞、共同关注、抽奖活动等。

  • Zset 类型:排序场景,比如排行榜、电话和姓名排序等。

Redis 后续版本又支持四种数据类型,它们的应用场景如下:

  • BitMap(2.2 版新增):二值状态统计的场景,比如签到、判断用户登陆状态、连续签到用户总数等;

  • HyperLogLog(2.8 版新增):海量数据基数统计的场景,比如百万级网页 UV 计数等;

  • GEO(3.2 版新增):存储地理位置信息的场景,比如滴滴叫车;

  • Stream(5.0 版新增):消息队列,相比于基于 List 类型实现的消息队列,有这两个特有的特性:自动生成全局唯一消息ID,支持以消费组形式消费数据。

热 key 是什么?怎么解决?

Redis热key是指被频繁访问的key,可能会导致单个key的访问量过大,影响系统性能。解决方法包括:

  • 开启内存淘汰机制,并选择使用LRU算法来淘汰不常用的key,保证内存中存储的是最热门的数据。

  • 设置key的过期时间,确保key在一段时间后自动删除,防止长时间占用内存。

  • 对热点key进行分片,将数据分散存储在不同的节点上,减轻单个key的压力。

String 是使用什么存储的?为什么不用 c 语言中的字符串?

Redis 的 String 字符串是用 SDS 数据结构存储的。

下图就是 Redis 5.0 的 SDS 的数据结构:

图片

结构中的每个成员变量分别介绍下:

  • len,记录了字符串长度。这样获取字符串长度的时候,只需要返回这个成员变量值就行,时间复杂度只需要 O(1)。

  • alloc,分配给字符数组的空间长度。这样在修改字符串的时候,可以通过 alloc - len 计算出剩余的空间大小,可以用来判断空间是否满足修改需求,如果不满足的话,就会自动将 SDS 的空间扩展至执行修改所需的大小,然后才执行实际的修改操作,所以使用 SDS 既不需要手动修改 SDS 的空间大小,也不会出现前面所说的缓冲区溢出的问题。

  • flags,用来表示不同类型的 SDS。一共设计了 5 种类型,分别是 sdshdr5、sdshdr8、sdshdr16、sdshdr32 和 sdshdr64,后面在说明区别之处。

  • buf[],字符数组,用来保存实际数据。不仅可以保存字符串,也可以保存二进制数据。

总的来说,Redis 的 SDS 结构在原本字符数组之上,增加了三个元数据:len、alloc、flags,用来解决 C 语言字符串的缺陷。

O(1)复杂度获取字符串长度

C 语言的字符串长度获取 strlen 函数,需要通过遍历的方式来统计字符串长度,时间复杂度是 O(N)。

而 Redis 的 SDS 结构因为加入了 len 成员变量,那么获取字符串长度的时候,直接返回这个成员变量的值就行,所以复杂度只有 O(1)。

二进制安全

因为 SDS 不需要用 “\0” 字符来标识字符串结尾了,而是有个专门的 len 成员变量来记录长度,所以可存储包含 “\0” 的数据。但是 SDS 为了兼容部分 C 语言标准库的函数, SDS 字符串结尾还是会加上 “\0” 字符。

因此, SDS 的 API 都是以处理二进制的方式来处理 SDS 存放在 buf[] 里的数据,程序不会对其中的数据做任何限制,数据写入的时候时什么样的,它被读取时就是什么样的。

通过使用二进制安全的 SDS,而不是 C 字符串,使得 Redis 不仅可以保存文本数据,也可以保存任意格式的二进制数据。

不会发生缓冲区溢出

C 语言的字符串标准库提供的字符串操作函数,大多数(比如 strcat 追加字符串函数)都是不安全的,因为这些函数把缓冲区大小是否满足操作需求的工作交由开发者来保证,程序内部并不会判断缓冲区大小是否足够用,当发生了缓冲区溢出就有可能造成程序异常结束。

所以,Redis 的 SDS 结构里引入了 alloc 和 len 成员变量,这样 SDS API 通过 alloc - len 计算,可以算出剩余可用的空间大小,这样在对字符串做修改操作的时候,就可以由程序内部判断缓冲区大小是否足够用。

而且,当判断出缓冲区大小不够用时,Redis 会自动将扩大 SDS 的空间大小,以满足修改所需的大小。

Java

编译型语言和解释型语言的区别?

编译型语言和解释型语言的区别在于:

  • 编译型语言:在程序执行之前,整个源代码会被编译成机器码或者字节码,生成可执行文件。执行时直接运行编译后的代码,速度快,但跨平台性较差。

  • 解释型语言:在程序执行时,逐行解释执行源代码,不生成独立的可执行文件。通常由解释器动态解释并执行代码,跨平台性好,但执行速度相对较慢。

  • 典型的编译型语言如C、C++,典型的解释型语言如Python、JavaScript。

动态数组的实现有哪些?

ArrayList和Vector都支持动态扩容,都属于动态数组。

ArrayList 和 Vector 的比较

  • 线程安全性:Vector是线程安全的,ArrayList不是线程安全的。

  • 扩容策略:ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。

HashMap 的扩容条件是什么?

Java7 的  HashMap  扩容必须满足两个条件:

  • 当前数据存储的数量(即size())大小必须大于等于阈值

  • 当前加入的数据是否发生了hash冲突

因为上面这两个条件,所以存在下面这些情况:

  • 第一种情况,就是hashmap在存值的时候(默认大小为16,负载因子0.75,阈值12),可能达到最后存满16个值的时候,再存入第17个值才会发生扩容现象,因为前16个值,每个值在底层数组中分别占据一个位置,并没有发生hash碰撞。

  • 第二种情况,有可能存储更多值(超多16个值,最多可以存26个值)都还没有扩容。原理:前11个值全部hash碰撞,存到数组的同一个位置(虽然hash冲突,但是这时元素个数小于阈值12,并没有同时满足扩容的两个条件。所以不会扩容),后面所有存入的15个值全部分散到数组剩下的15个位置(这时元素个数大于等于阈值,但是每次存入的元素并没有发生hash碰撞,也没有同时满足扩容的两个条件,所以也不会扩容),前面11+15=26,所以在存入第27个值的时候才同时满足上面两个条件,这时候才会发生扩容现象。

Java8 不再像 Java7中那样需要满足两个条件,Java8中扩容只需要满足一个条件:

  • 当前存放新值的时候已有元素的个数大于等于阈值

MQ

用的什么消息队列,消息队列怎么选型的?

项目用的是 RocketMQ 消息队列。选择RocketMQ的原因是:

  • 开发语言优势。RocketMQ 使用 Java 语言开发,比起使用 Erlang 开发的 RabbitMQ 来说,有着更容易上手的阅读体验和受众。在遇到 RocketMQ 较为底层的问题时,大部分熟悉 Java 的同学都可以深入阅读其源码,分析、排查问题。

  • 社区氛围活跃。RocketMQ 是阿里巴巴开源且内部在大量使用的消息队列,说明 RocketMQ 是的确经得起残酷的生产环境考验的,并且能够针对线上环境复杂的需求场景提供相应的解决方案。

  • 特性丰富。根据 RocketMQ 官方文档的列举,其高级特性达到了 12 种,例如顺序消息、事务消息、消息过滤、定时消息等。顺序消息、事务消息、消息过滤、定时消息。RocketMQ 丰富的特性,能够为我们在复杂的业务场景下尽可能多地提供思路及解决方案。

有没有消息积压的问题

导致消息积压突然增加,最粗粒度的原因,只有两种:要么是发送变快了,要么是消费变慢了。

要解决积压的问题,可以通过扩容消费端的实例数来提升总体的消费能力。

如果短时间内没有足够的服务器资源进行扩容,没办法的办法是,将系统降级,通过关闭一些不重要的业务,减少发送方发送的数据量,最低限度让系统还能正常运转,服务一些重要业务。

RocketMQ 消息可靠性怎么保证?

使用一个消息队列,其实就分为三大块:生产者、中间件、消费者,所以要保证消息就是保证三个环节都不能丢失数据。

图片

  • 消息生产阶段:生产者会不会丢消息,取决于生产者对于异常情况的处理是否合理。从消息被生产出来,然后提交给 MQ 的过程中,只要能正常收到 ( MQ 中间件) 的 ack 确认响应,就表示发送成功,所以只要处理好返回值和异常,如果返回异常则进行消息重发,那么这个阶段是不会出现消息丢失的。

  • 消息存储阶段:RabbitMQ 或 Kafka 这类专业的队列中间件,在使用时是部署一个集群,生产者在发布消息时,队列中间件通常会写「多个节点」,也就是有多个副本,这样一来,即便其中一个节点挂了,也能保证集群的数据不丢失。

  • 消息消费阶段:消费者接收消息+消息处理之后,才回复 ack 的话,那么消息阶段的消息不会丢失。不能收到消息就回 ack,否则可能消息处理中途挂掉了,消息就丢失了。

Kafka 和 RocketMQ 消息确认机制有什么不同?

Kafka的消息确认机制有三种:0,1,-1:

  • ACK=0:这是最不可靠的模式。生产者在发送消息后不会等待来自服务器的确认。这意味着消息可能会在发送之后丢失,而生产者将无法知道它是否成功到达服务器。

  • ACK=1:这是默认模式,也是一种折衷方式。在这种模式下,生产者会在消息发送后等待来自分区领导者(leader)的确认,但不会等待所有副本(replicas)的确认。这意味着只要消息被写入分区领导者,生产者就会收到确认。如果分区领导者成功写入消息,但在同步到所有副本之前宕机,消息可能会丢失。

  • ACK=-1:这是最可靠的模式。在这种模式下,生产者会在消息发送后等待所有副本的确认。只有在所有副本都成功写入消息后,生产者才会收到确认。这确保了消息的可靠性,但会导致更长的延迟。

RocketMQ 提供了三种消息发送方式:同步发送、异步发送和单向发送:

  • 同步发送:是指消息发送方发出一条消息后,会在收到服务端同步响应之后才发下一条消息的通讯方式。应用场景非常广泛,例如重要通知邮件、报名短信通知、营销短信系统等。

  • 异步发送:是指发送方发出一条消息后,不等服务端返回响应,接着发送下一条消息的通讯方式,但是需要实现异步发送回调接口(SendCallback)。消息发送方在发送了一条消息后,不需要等待服务端响应即可发送第二条消息。发送方通过回调接口接收服务端响应,并处理响应结果。适用于链路耗时较长,对响应时间较为敏感的业务场景,例如,视频上传后通知启动转码服务,转码完成后通知推送转码结果等。

  • 单向发送:发送方只负责发送消息,不等待服务端返回响应且没有回调函数触发,即只发送请求不等待应答。此方式发送消息的过程耗时非常短,一般在微秒级别。适用于某些耗时非常短,但对可靠性要求并不高的场景,例如日志收集。

Kafka 和 RocketMQ 的 broker 架构有什么区别

  • Kafka 的 broker 架构:Kafka 的 broker 架构采用了分布式的设计,每个 Kafka broker 是一个独立的服务实例,负责存储和处理一部分消息数据。Kafka 的 topic 被分区存储在不同的 broker 上,实现了水平扩展和高可用性。

  • RocketMQ 的 broker 架构:RocketMQ 的 broker 架构也是分布式的,但是每个 RocketMQ broker 有主从之分,一个主节点和多个从节点组成一个 broker 集群。主节点负责消息的写入和消费者的拉取,从节点负责消息的复制和消费者的负载均衡,提高了消息的可靠性和可用性。

其他

  • 手撕:字符串乘法,输出 2 的 1000 次方

  • 反问:流程,业务

26、遥感图像无监督变化检测方法解析 本文详细解析了遥感图像中的无监督变化检测方法,重点介绍了基于快速模糊 C-均值聚类的无监督变化检测方法(CDFFCM)在滑坡映射中的应用。CDFFCM 方法利用图像结构信息和高斯金字塔技术,提高了检测的准确性,减少了参数数量,并缩短了计算时间。该方法通过与传统方法的对比,展现出在高分辨率遥感图像滑坡检测中的显著优势。此外,文章还探讨了 CDFFCM 的未来发展趋势,包括技术融合、多模态数据应用以及智能化与自动化方向。 阅读详情

相关推荐

分组背包问题(MCKP)三大算法对比:贪心、Dyer-Zemel和动态规划谁更强?

本文深入对比了分组背包问题(MCKP)的三大主流算法:贪心算法、Dyer-Zemel算法和动态规划。通过分析各自的原理、实现及性能表现,揭示了贪心算法速度快但非最优,动态规划精确但受限于规模,而Dyer-Zemel算法则在效率与最优性间取得了最佳平衡,是解决中等至大规模MCKP问题的首选方案。

vscode6remote的博客 226

腾讯员工收入曝光,我顿悟了一个成人世界的残酷事实

最近,一张腾讯员工的收入证明火了。收入证明上显示:这位员工的职位是腾讯(成都)某游戏客户端开发,已入职9年。而在他的税后年收入那一栏,显示着251多万元,包括工资、奖金和津贴等,平均月收入约20万。算下来,税前大概是450万。这张图在网上流出后,引发热议。一些人表示不相信:“有人说,自己以前也在某大厂的游戏部门干过,基本月薪也就和普通程序员差不多,一个月3、4万不错了。但很快,一位腾讯前员工一语道破真相:“这位小哥可不是普通的游戏工程师。

Libra1313的博客 4391

基于CNN网络的轴承故障诊断

内容参考:《基于卷积神经网络的轴承故障 诊断算法研究》–张伟 代码参考: https://github.com/AaronCosmos/wdcnn_bearning_fault_diagnosis 1 背景: 基于信号处理的特征提取+分类器的传统智能诊断算法,对专家经验要求高,设计耗时且不能保证通用性,已经不能满足机械大数据的要求。提出使用基于卷积神经网络智能诊断算法来自动完成特征提取以及故障识别。 1.1 挑战 机电产品故障诊断面临的挑战,有三大特点: (1)数据量大,专业分析人员的数量严重不足,仅依靠人

weixin_45679938的博客 7万+

腾讯最新工资公布: 人均年薪超108万

上一篇:一线体面男的收入腾讯最近公布了2024年第三季度的财报,成绩相当出色。首先来看媒体普遍关注的薪酬数据。根据报告,截至2024年9月30日,腾讯集团员工总数达到108,823人,较2023年同期的105,309人有所增长。在2024年第三季度,腾讯的薪酬总支出为296亿元。经过简单计算,腾讯员工的平均年薪大约为108万元。这个数字涵盖了工资以及股份等其他福利。如果按照季度薪酬来计算,截至20...

Java和Android架构 1933

Impala>Impala安装部署

文章目录1.安装前提2.下载安装包、依赖包3.虚拟机新增磁盘(可选)4.配置本地yum源5.安装Impala6.修改Hadoop、Hive配置7.修改impala配置8.启动、关闭impala服务 1.安装前提 集群提前安装好hadoop,hive。 hive安装包scp在所有需要安装impala的节点上,因为impala需要引用hive的依赖包。 hadoop框架需要支持C程序访问接口,查看下...

qq_44509920的博客 838

AD(Altium Designer)器件封装——立创商城导出原理图和PCB完成器件封装操作指南

官网:www.SZLCSC.COM以芯片为例器件类——>芯片类——>对应芯片确定芯片——>数据手册1:原理图2:PCB3:打开操作流程选中原理图——>文件——>导出——>AD1: ✔2:导出AD文件操作流程选中PCB图——>文件——>导出——>AD1: ✔2:导出AD文件1:PCB图2:原理图操作流程文件——>打开操作流程选中文件——>打开操作流程项目文件——>添加新的...到工程——>Schematic Library新原理图库操作流程项目文件——>添加新的...到工程——>PCB Library新的PC

XU157303764的博客 5437

招聘信息|2024届腾讯校招薪资公开

2024年腾讯校招薪资大揭秘

铃灵狗的水墨书乡 9247

[工作流节点24] 外部用户审批的实现方式:让客户、供应商也能参与流程决策

摘要: 明道云支持通过三种方式实现外部用户审批:1)外部表单审批(推荐方案),通过公开表单让外部用户提交审批意见并自动触发流程;2)链接参数审批,通过含参数的URL实现一键确认;3)API/Webhook审批,适用于系统集成场景。三种方案均无需外部用户登录,支持记录操作日志和安全审计。典型应用包括客户确认报价、供应商发货确认等,实现内外流程无缝衔接。建议根据业务复杂度选择:无代码需求用外部表单,轻量审批用链接参数,系统对接用Webhook。

每日出拳老爷子的博客 347

腾讯员工平均月薪高达8.5万元,过来人教你普通人如何进大厂

互联网大厂又又又上热搜了!昨日#腾讯员工平均月薪达8.54万元#的词条登上了热搜第一,点进去看发现,是腾讯发布了 2022 年度第二季度财报。财报中,除了腾讯的整体数据外,还有一个数据让广大网友吃惊,虽然腾讯第二季度整体的业绩和第一季度相比不佳,但薪酬总成本567.79亿元,比去年同期增加28%。且腾讯目前的员工仍高达110715人,比去年同期增加了16533人。从数据换算可以得知,腾讯员工的平均月薪依旧高达85473.21元,对比一季度仅减少900元。

2301_76161259的博客 2900

点云语义分割:RandLANet模型推理C++部署(2)

一、数据读取及预处理 二、模型推理 三、结果保存

zhaoguanhua的博客 3800

模型预测控制(MPC)算法介绍

模型预测控制(Model Predictive Control,MPC)是一种先进的控制策略,广泛应用于工业过程控制、机器人控制、电力系统等领域。它基于系统的模型,通过滚动优化来预测系统未来的行为,并据此确定当前的最优控制输入。

AI的内部世界的博客 7174

阿里-P10、腾讯-T4、华为-18,互联网公司职级、薪资、股权大揭秘

这次面试问的还是还是有难度的,要求当场写代码并且运行,也是很考察面试者写代码因为Android知识体系比较庞大和复杂的,涉及到计算机知识领域的方方面面。在这里我和身边一些朋友特意整理了一份快速进阶为Android高级工程师的系统且全面的学习资料。涵盖了Android初级——Android高级架构师进阶必备的一些学习技能。

keyoukewude的博客 1万+

实战指南:Qwen3-ASR-1.7B 语音识别

本文介绍了Qwen3-ASR语音识别模型的安装与使用。

举世誉之而不加劝,举世非之而不加沮,定乎内外之分,辩乎荣辱之境,斯已矣。 1807

腾讯开奖,薪资倒挂!

十月中旬了,今年的秋招即将结束,各个公司的薪资也大都水落石出了。而腾讯突然登上了知乎热搜。原因是今年腾讯的白菜价40w+,同时倒挂了老员工:说下我了解到的腾讯的情况:腾讯总包= 月薪 * ...

cainiao_python的博客 679

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

腾讯开奖,应届生年薪40万,白菜价,薪资倒挂!

阅读本文大概需要7分钟。十月中旬了,今年的秋招即将结束,各个公司的薪资也大都水落石出了。而腾讯突然登上了知乎热搜。原因是今年腾讯的白菜价40w+,同时倒挂了老员工:说下我了解到的腾讯的情况...

湾区人工智能 774

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【民间】互联网大厂历年薪资变化

以下内容来自民间,仅供参考 互联网大厂一向以工资高、福利好著称。前几天,腾讯宣布薪资调整,引发了互联网圈的强烈关注。为了让大家更加清晰地了解整个互联网行业的薪资情况,我整理了一份互联网大厂历年薪资(公司内占比最多的薪资)的变化图。从这些薪资变化中,也能看出这两年互联网行业的变化。哪些大厂薪资涨了,哪些大厂薪资降了,一起来看——腾讯-腾讯工资30-50K占比最多占51.7%,2024年较2023年下...

fengdu78的博客 1832

16家大厂历年薪资变化,阿里居然一路增长,华为、小米意外落榜

互联网大厂一向以工资高、福利好著称。 前几天,腾讯宣布薪资调整,引发了互联网圈的强烈关注。为了让大家更加清晰地了解整个互联网行业的薪资情况,我整理了一份互联网大厂历年薪资(公司内占比最多的薪资)的变化图。 从这些薪资变化中,也能看出这两年互联网行业的变化。哪些大厂薪资涨了,哪些大厂薪资降了,一起来看看吧

智能运维及数据中台探索 4248

互联网大厂历年薪资变化

互联网大厂一向以工资高、福利好著称。前几天,腾讯宣布薪资调整,引发了互联网圈的强烈关注。为了让大家更加清晰地了解整个互联网行业的薪资情况,我整理了一份互联网大厂历年薪资(公司内占比最多的薪资)的变化图。从这些薪资变化中,也能看出这两年互联网行业的变化。哪些大厂薪资涨了,哪些大厂薪资降了,一起来看——腾讯-腾讯工资30-50K占比最多占51.7%,2024年较2023年下降2%。本科工资¥33.4K...

数据森麟 1466

腾讯校招薪资结构变化与后端面试要点解析

可以快速搭建面试题库demo,无需配置环境就能体验完整功能。实际使用中发现其AI生成项目功能特别适合技术面试准备,能自动生成包含数据库设计和API接口的完整项目框架,大大节省搭建时间。

CitrineLion90的博客 479

毕业入职腾讯,工作三年薪资待遇变化

对于写操作,ConcurrentHashMap 使用 CAS 操作来实现无锁的更新,这是一种乐观锁的实现,因为它假设没有冲突发生,在实际更新数据时才检查是否有其他线程在尝试修改数据,如果有,采用悲观的锁策略,如 synchronized 代码块来保证数据的一致性。在技术派实战项目中,我们将文章的基本信息和文章详情做了垂直分表处理,因为文章的详情会占用比较大的空间,并且更新频繁,而文章的基本信息占用的空间比较小,且更新频率较低。第一步,从根节点开始,因为比 25 大,所以从右子树开始。

lingqu+wx bjmsb06 2793

偷偷盘点一下这几年秋招薪资的变化

不得不说,时间过得真快,转眼间24年(也就是25届)秋招的征程又开启了。众所周知,互联网行业近年来的行情属实一般。在互联网逐渐进入存量竞争,而各大公司也都在降本增效的这样一个大背景下,这几年的秋招大盘连带着也属实一般,HC收缩了,难度倒是逐渐提高了,竞争更是愈发激烈了。那大家肯定也会好奇,这几年秋招给到的薪资这块有没有什么变化呢?是有所提高还是原地踏步?甚至说比原来还降了?所以今天这篇文章,我们就来整理一下最近几年来几个主要互联网大厂的秋招薪资变化情况,顺带也给大家提供一个趋势和范围上的参考。

CodeSheep 663

腾讯调整职级体系薪资有变化吗?腾讯调整职级体系与阿里职级对比

腾讯调整职级体系薪资有变化吗?腾讯调整职级体系与阿里职级对比?据了解,腾讯发内部信称将进行“系统性升级,重新定义专业职级体系”,具体动作包括取消大级子等设置,合并部分子等,职级的设置也将从目前的1.1-6.3级改为4-17级。对此,腾讯方面表示不予置评。那么,下面小编带大家了解下腾讯调整职级体系薪资有变化吗?腾讯调整职级体系与阿里职级对比。 腾讯10日发内部邮件,对公司现有职级体系进行变革:取消了原有的6级18等(1.1-6.3级)的职级体系设计,将专业职级体系优化为14级(4-17级),..

码农研习社 4820

开奖了 | 揭秘2022届美团和腾讯校招薪资,香水团完全不输鹅厂!

点击上方,选择星标或置顶,每天给你送上干货大家好,我是对白。最近2022届校招火热进行中,腾讯率先开启抢人大战,知乎到处流传着:2022年校招互联网大厂薪资情况是怎样的。依稀还记得去年是我团率先公布薪资,一时之间,开水团变成了香水团,也把我这位被其他大厂疯抢的小鲜肉收割在了他的石榴裙下。哈哈开个玩笑,我们先来分析一下腾讯今年的开奖情况。根据目前offershow以及周围同事的爆料:腾讯算法岗今年相比去年base涨了2k左右,今年SSP的base为25k,不仅如此,腾讯还上调了房补,从去年1250元/月给到了

1530

2020互联网大厂硕士生薪资出炉!来源OfferShow爆料整理!

今天和大家聊一聊 2020 届秋招硕士生开发岗位的薪资情况。 最近看网上有人爆料 2020 互联网大厂校招硕士生的薪资情况,这份榜单中包含了 10 家公司,其中有 4 家是我秋招中拿到 offer 且谈过薪资的。榜单中列出的薪资情况和我了解到的基本一致,而且我也问了身边很多同学以及抽查了一些 OfferShow 上的爆料,可以认定这份薪资还是比较真实可靠的!现在将分享给大家!需要说明的是这只是技...

Java学习 2万+

腾讯2022校招薪资首发,白菜总包近40w!网友宣布:宇宙的终点是腾讯

打工人打工魂,晚生一年人上人。以前以为早就是优势,早出来工作多挣点钱,结果现在大厂校招薪资一年比一年高 … 近日,万众期待的国内互联网大厂校招终于开始谈薪了,打响第一枪的是腾讯,目前已经拆包的有腾讯和大疆,美团也有爆料的。其他大厂预计这几天会陆续开奖。 腾讯2022届校招第一批薪资出来后,相关话题迅速冲上各大网站热榜。去年腾讯白菜价是30W,这次直接飙到40W+,这不是妥妥的倒挂老员工吗? 图片来源于OfferShow : 在这里,先给不太懂这些数字的朋友解释一下,总包40w+的薪资结构。腾讯总包=月

技术专家 1583
上一篇: 比亚迪开始追查员工学历 ...
下一篇: 美国教授痛心:UC伯克利GPA 4.0计算机本科生,毕业即失业?ML博士直呼太卷后悔转行
职言职语
博客等级 码龄6年 6732粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值