当前位置: 首页 > news >正文

美团一面面经

第一个问题:介绍一下最近做的项目

第二个问题:我对你项目有个地方比较感兴趣啊。就是你用的那个二级缓存,你的吞吐量有多大啊,为什么需要使用二级缓存?

答: 在二级缓存策略下,笔记详情接口的吞吐量为 9282/s , 平均响应时间为 10ms, 相比较直接走数据库查询,肯定是快的非常多。

第三个问题:缓存和数据库的一致性是如何保证的呢?

第四个问题:Redis是集中缓存,Caffeine是本地缓存,通常来说MQ的消息是机器中的一个实例去消费的,那其他实例的缓存如何解决?

第五个问题:我们在生产环境上它一个服务,可能部署多台机器。消费不会每台机器都消费同一个消息吧,所以你的代码应该考虑这种场景。

第六个问题:什么叫缓存穿透?

当用户访问的数据,既不在缓存中,也不在数据库中,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库也没有要访问的数据,没办法构建缓存数据,来服务后续的请求。当有大量这样的请求到来时,数据库的压力骤增,这就是缓存穿透问题。

第七个问题:讲解一下布隆过滤器的原理

布隆过滤器由[初始值都为0的位图数组]和[N个哈希函数]两部分组成。当我们写入数据库时,在布隆过滤器里做个标记,这样在下次查询数据是否存在数据库时,只需要查询布隆过滤器,如果查询到数据没有被标记,说明不在数据库中。
布隆过滤器会通过3个操作完成标记:

  • 第一步,使用N个哈希函数分别对数据进行哈希计算,得到N个哈希值
  • 第二步,将第一步得到的 N 个哈希值队位图数组的长度取模,得到每个哈希值在位图数组的对应位置、
  • 第三步,将每个哈希值在位图数组的对应位置设置为1。

第八个问题:讲一下令牌桶和漏桶的区别吧。

令牌桶与漏桶算法对比

8.1. 令牌桶(Token Bucket)

  • 工作原理:令牌以固定速率生成并存储在桶中,请求需要消耗令牌来进行处理。令牌可以积攒,允许一定的突发流量。
  • 特性
    • 允许突发流量
    • 请求可以等待令牌
    • 控制流量的平均速率
  • 适用场景:API 限流、网络流量控制、带宽管理等。

8.2. 漏桶(Leaky Bucket)

  • 工作原理:请求进入桶后,以固定速率处理,如果桶满了,新的请求会被丢弃。没有突发流量,输出速率恒定。
  • 特性
    • 不允许突发流量
    • 固定速率输出
    • 超过容量的请求会丢失
  • 适用场景:防止流量洪峰、稳定带宽控制、视频流输出等。

8.3. 令牌桶与漏桶的区别

特性令牌桶(Token Bucket)漏桶(Leaky Bucket)
流量控制允许突发流量,流量灵活不允许突发流量,流量平稳
请求处理请求可以等待令牌请求超出容量会被丢弃
输出速率可变速率,平滑流量恒定速率输出
典型应用API 限流、带宽控制防止流量洪峰、视频流稳定输出
总结:
  • 令牌桶适合平滑控制并允许突发流量的场景。
  • 漏桶适合对输出速率有严格要求并不允许突发流量的场景。

第九个问题: Ratelimiter令牌桶实现流量削峰防止打垮数据库,那么这个令牌桶是本地限流吗还是全局限流?

本项目采用的是本地API进行的局部限流,没有存到Redis进行全局限流。全局限流是不管加多少机器,要求整个服务一秒。

第十个问题:能说一下Java中线程池中有哪些参数以及其中的作用。

第十一个问题:如果使用无界队列作为线程池中的阻塞队列会有什么情况。

如果在线程池中使用 无界队列(如 LinkedBlockingQueue)作为阻塞队列,可能会导致以下几个问题:

  1. 线程池的核心线程无法及时释放

无界队列没有大小限制,意味着可以无限制地接受任务。当任务被提交到线程池时,任务会被放入队列中,即使所有线程池中的工作线程都忙碌,队列也会继续接收新的任务。这样,线程池的核心线程数可能会一直存在,而不会有线程因任务完成而被释放。
结果:线程池的核心线程数不会因为任务排队而减少,可能会导致线程池中的线程始终处于活动状态,浪费系统资源。

  1. 内存占用过大

如果无界队列不断积压任务且没有适当的控制机制(如监控队列长度或主动抛弃任务等),可能会导致内存被任务堆积消耗,甚至导致 内存溢出。虽然无界队列不会像有界队列那样会阻塞新任务的提交,但无止境的任务积压会占用大量内存。
结果:内存消耗增大,可能导致 OutOfMemoryError 或系统性能下降。

  1. 无法控制队列的积压

使用无界队列时,线程池的负载可能无法被有效控制。线程池会尽最大能力执行任务,但是队列会无限制增长,从而影响系统的稳定性。没有队列大小的限制,无法保证任务的积压程度,导致任务可能会一直等待而得不到及时执行。
结果:可能出现某些任务长时间没有执行,系统响应时间不可预测,甚至导致任务丢失(如果不处理好队列)。

  1. 可能导致线程池过载

在一些极端情况下,如果系统不断提交任务而没有足够的工作线程来执行这些任务,尽管线程池会尝试分配空闲线程执行任务,但由于无界队列的存在,任务会无限制地积压,这就会导致线程池的负载过重,可能导致 资源耗尽(如 CPU 和内存等)。
结果:系统的性能会严重下降,甚至可能崩溃。

  1. 任务的延迟执行

无界队列可能导致任务的执行延迟,因为任务会被推入队列中等待执行,而队列的大小没有限制,可能会导致任务在队列中等待很长时间。虽然不会立即丢失任务,但任务的执行时间变得不可预测,系统的响应性降低。
6. 没有流量控制

有界队列能够有效地控制队列中的任务量,防止提交过多任务给线程池。而无界队列则没有这个控制能力,线程池可能会因为接收过多任务而导致过载,这样无法动态地应对高负载的情况。

解决方法:

使用有界队列:可以为队列设置大小限制,防止任务积压过多。常用的有界队列如 ArrayBlockingQueue。
使用自定义拒绝策略:当队列满时,可以通过 RejectedExecutionHandler 设置拒绝策略,抛弃任务、抛出异常、或者直接将任务提交到外部队列等。
动态调整线程池大小:可以通过合理的核心线程数和最大线程数来控制线程池的并发能力,避免过度并发。

总的来说,使用无界队列时需要谨慎,合理配置线程池和队列,确保系统的稳定性和性能。如果没有适当的流量控制和任务限制机制,可能导致系统过载、内存消耗过大或者任务积压问题。

相关文章:

美团一面面经

第一个问题:介绍一下最近做的项目 第二个问题:我对你项目有个地方比较感兴趣啊。就是你用的那个二级缓存,你的吞吐量有多大啊,为什么需要使用二级缓存? 答: 在二级缓存策略下,笔记详情接口的吞…...

什么是报文的大端和小端,有没有什么记忆口诀?

在计算机科学中,**大端(Big-Endian)和小端(Little-Endian)**是两种不同的字节序(即多字节数据在内存中的存储顺序)。理解这两种字节序对于网络通信、文件格式解析以及跨平台编程等非常重要。 1…...

Spring中BeanFactory和ApplicationContext的区别

目录 一、功能范围 二、Bean的加载时机 三、国际化支持 四、事件发布 五、资源加载 六、使用场景说明 在Spring框架中,BeanFactory和ApplicationContext是两种常见的容器实现方式,它们在功能和使用场景上存在一些显著的差异。本文将详细解析这两种容…...

期货行业专题|基于超融合实现 IT 基础设施现代化与国产化转型实践合集

SmartX 期货行业重要进展 帮助近 60 家期货用户部署 730 超融合节点,含 230 信创节点。 深入 5 大应用场景: 核心生产资源池 主席灾备资源池 信创云资源池 云原生存储与容器资源池 分布式存储资源池 更多超融合金融核心生产业务场景实践&#xf…...

AI新玩法:Flux.1图像生成结合内网穿透远程生图的解决方案

文章目录 前言1. 本地部署ComfyUI2. 下载 Flux.1 模型3. 下载CLIP模型4. 下载 VAE 模型5. 演示文生图6. 公网使用 Flux.1 大模型6.1 创建远程连接公网地址 7. 固定远程访问公网地址 前言 在这个AI技术日新月异的时代,图像生成模型已经成为了创意工作者和开发者手中…...

Jenkins-pipeline Jenkinsfile说明

一. 简介: Jenkinsfile 是一个文本文件,通常保存在项目的源代码仓库中,用于定义 Jenkins Pipeline 的行为。使用 Jenkinsfile 可以使 CI/CD 流程版本化,并且易于共享和审核。 二. 关于jenkinsfile: jenkins的pipeline…...

vue3中为什么引入setup,引入setup是为了解决什么问题,setup的执行时机是什么?返回值是什么

在 Vue 3 中,引入 setup 函数是为了提供一种更加简洁、灵活、逻辑分离和可维护的方式来组织组件的逻辑。setup 使得 Vue 3 在构建应用时,能够更加有效地支持组合式 API(Composition API),解决了 Vue 2 中一些组件逻辑组…...

Ubuntu 安装 docker 配置环境及其常用命令

Docker 安装与配置指南 本文介绍如何在 Ubuntu 系统上安装 Docker,解决权限问题,配置 Docker Compose,代理端口转发,容器内部代理问题等并进行相关的优化设置。参考官方文档:Docker 官方安装指南 一、安装 Docker 1…...

自动化01

测试用例的万能公式:功能测试界面测试性能测试易用性测试安全性测试兼容性测试 自动化的主要目的就是用来进行回归测试 新产品--第一个版本 (具备丰富的功能),将产品的整体进行测试,人工创造一个自动化测试用例,在n个版本的时候…...

音频入门(二):音频数据增强

本文介绍了一些常见的音频数据增强方法,并给出了代码实现。 目录 一、简介 二、代码 1. 安装必要的库 2. 代码 3. 各函数的介绍 4. 使用方法 参考: 一、简介 音频数据增强是机器学习和深度学习领域中用于改善模型性能和泛化能力的技术。 使用数据…...

MySQL管理事务处理

目录 1、事务处理是什么 2、控制事务处理 (1)事务的开始和结束 (2)回滚事务 (3)使用COMMIT (4)使用保留点 (5)结合存储过程的完整事务例子 3、小结 …...

MySQL数值型函数详解

简介 本文主要讲解MySQL数值型函数,包括:ROUND、RAND、ABS、MOD、TRUNCATE、CEIL、CEILING、FLOOR、POW、POWER、SQRT、LOG、LOG2、LOG10、SIGN、PI。 本文所有示例中,双横杠左边为执行的SQL语句,右边为执行语句的返回值。 ROU…...

54.DataGrid数据框图 C#例子 WPF例子

首先是绑定一个属性&#xff0c;属性名称无所谓。到时候看属性设置的啥&#xff0c;可能要改。 <DataGrid ItemsSource"{Binding Index_instance}"/> 然后创建INotifyPropertyChanged的类&#xff0c;并把相关固定的代码粘贴上去。 然后把这个目录类建好&am…...

总结6..

背包问题的解决过程 在解决问题之前&#xff0c;为描述方便&#xff0c;首先定义一些变量&#xff1a;Vi表示第 i 个物品的价值&#xff0c;Wi表示第 i 个物品的体积&#xff0c;定义V(i,j)&#xff1a;当前背包容量 j&#xff0c;前 i 个物品最佳组合对应的价值&#xff0c;同…...

复位信号的同步与释放(同步复位、异步复位、异步复位同步释放)

文章目录 背景前言一、复位信号的同步与释放1.1 同步复位1.1.1 综述1.1.2 优缺点 1.2 recovery time和removal time1.3 异步复位1.3.1 综述1.3.2 优缺点 1.4 同步复位 与 异步复位1.5 异步复位、同步释放1.5.1 总述1.5.2 机理1.5.3 复位网络 二、思考与补充2.1 复…...

Gartner发布2025年网络治理、风险与合规战略路线图

新型网络风险和合规义务&#xff0c;日益成为网络治理、风险与合规实践面临的问题。安全和风险管理领导者可以参考本文&#xff0c;实现从被动、专注于合规的方法到主动、进一步自动化方法的转型。 主要发现 不断变化的监管环境和不断扩大的攻击面&#xff0c;使企业机构难以实…...

基于STM32的智能空气质量监测与净化系统设计

目录 引言系统设计 硬件设计软件设计 系统功能模块 空气质量检测模块自动净化模块数据显示与用户交互模块远程监控与数据上传模块 控制算法 空气质量检测与判断算法净化设备控制算法数据记录与远程反馈算法 代码实现 空气质量检测与显示代码自动净化与调节代码数据上传与远程控…...

人工智能之数学基础:线性代数中的线性相关和线性无关

本文重点 在线性代数的广阔领域中,线性相关与线性无关是两个核心概念,它们对于理解向量空间、矩阵运算、线性方程组以及人工智能等问题具有至关重要的作用。 定义与直观理解 当存在一组不全为0的数x1,x2,...,xn使得上式成立的时候,那么此时我们可以说向量组a1,a2...,an…...

08 工欲善其事必先利其器—常用类

1 字符串相关 1.1 String 所属包&#xff1a;java.lang 代表不可变的字符序列 注意&#xff1a;Java中&#xff0c;String是一个final类 1&#xff09;创建字符串方式 String a "hello"; // 开辟内存空间 String b new String("hello"); String d…...

Redis实战-初识Redis

初识Redis 1、Redis简介2、 Redis数据结构简介3、 Redis命令3.1 字符串3.2 列表3.3 集合3.4 散列3.5 有序集合3.6 发布与订阅3.7 其他命令3.7.1 排序3.7.2 过期时间 如有侵权&#xff0c;请联系&#xff5e; 如有错误&#xff0c;也欢迎批评指正&#xff5e; 本篇文章大部分是来…...

Java 并发编程封神!从入门到精通,面试再也不怕被问爆

目录 synchronized 支持重入吗&#xff1f;如何实现的? syncronized锁升级的过程讲一下 JVM对Synchornized的优化&#xff1f; 介绍一下AQS CAS 和 AQS 有什么关系&#xff1f; 如何用 AQS 实现一个可重入的公平锁&#xff1f; Threadlocal作用&#xff0c;原理&#x…...

Keil5环境下STM32F103ZET6工程创建与软件仿真全攻略

1. Keil5开发环境与STM32F103ZET6简介 STM32F103ZET6是STMicroelectronics推出的一款基于ARM Cortex-M3内核的微控制器&#xff0c;具有72MHz主频、512KB Flash和64KB SRAM&#xff0c;广泛应用于工业控制、消费电子等领域。Keil MDK&#xff08;Microcontroller Development K…...

10分钟打造你的专属BongoCat:跨平台桌面互动猫咪终极指南

10分钟打造你的专属BongoCat&#xff1a;跨平台桌面互动猫咪终极指南 【免费下载链接】BongoCat &#x1f431; 跨平台互动桌宠 BongoCat&#xff0c;为桌面增添乐趣&#xff01; 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 你是否厌倦了冰冷的电脑界面&a…...

如何高效配置无人机电子调速器:专业级ESC配置工具实战指南

如何高效配置无人机电子调速器&#xff1a;专业级ESC配置工具实战指南 【免费下载链接】esc-configurator A Web-App to flash your BLHeli_S and AM32 based ESCs from the browser using the Web-Serial API. 项目地址: https://gitcode.com/gh_mirrors/es/esc-configurato…...

网站页面标题和描述如何设置更有利于SEO_网站标题、标题标签、副标题如何设置

网站页面标题和描述如何设置更有利于SEO_网站标题、标题标签、副标题如何设置 在当今数字化时代&#xff0c;网站的SEO&#xff08;搜索引擎优化&#xff09;至关重要。如何设置网站的页面标题和描述&#xff0c;不仅能提升网站的可见度&#xff0c;还能吸引更多的点击和流量。…...

革新Unity网格变形:Deform插件的实时模型动画解决方案

革新Unity网格变形&#xff1a;Deform插件的实时模型动画解决方案 【免费下载链接】Deform A fully-featured deformer system for Unity that lets you stack effects to animate models in real-time 项目地址: https://gitcode.com/gh_mirrors/de/Deform 在3D内容创作…...

新手福音,用快马平台可视化学习apifox接口调用与测试

作为一个刚接触API开发的新手&#xff0c;第一次看到各种接口文档时完全摸不着头脑。直到发现了Apifox这个工具&#xff0c;配合InsCode(快马)平台的智能生成功能&#xff0c;终于找到了最适合新手的可视化学习路径。下面分享我的学习心得&#xff1a; 为什么选择Apifox作为入门…...

烽火HG680-KA刷机全攻略:海思MV310芯片优化+ADB免拆教程(附固件包)

烽火HG680-KA深度优化指南&#xff1a;解锁海思MV310芯片的隐藏潜能 当你手中的烽火HG680-KA机顶盒开始出现卡顿、存储不足或功能受限时&#xff0c;或许该考虑给它来一次彻底的"系统大扫除"了。作为一款搭载海思MV310芯片的主流设备&#xff0c;其硬件潜力远超市面上…...

如何彻底告别网盘下载烦恼:八大主流网盘直链下载助手完全指南

如何彻底告别网盘下载烦恼&#xff1a;八大主流网盘直链下载助手完全指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘…...

跨平台资源下载终极指南:一键获取视频号、抖音、快手等全网资源

跨平台资源下载终极指南&#xff1a;一键获取视频号、抖音、快手等全网资源 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 在…...