面试系列|蚂蚁金服技术面【1】

哈喽,大家好!今天分享一下蚂蚁金服的 Java 后端开发岗位真实社招面经,复盘面试过程中踩过的坑,整理面试过程中提到的知识点,希望能给正在准备面试的你一些参考和启发,希望对你有帮助,愿你能够获得心仪的 offer !
在这里插入图片描述
投递简历 2 天后收到电话通知「简历已通过,接下来我们约一下面试时间」。经过沟通发现可以约到下班时间,随即约到晚上8点,提前了解到第一轮是通过电话语音进行面试,刚开始还有点惊讶可以约到晚上面试,这样对在职打工人来说很友好,后面才了解到互联网公司社招基本都是远程面试,可以约到比较晚的时间进行面试。

晚上 8 点,还比较准时,面试官打电话过来,还比较礼貌地问了下是否方便进行面试,总体来说大厂面试官体验还是很不错的,下面是面试时语音实录复盘。


面试官这场面试主要是针对简历评估进行面试,主要是八股文,会持续大概半个小时。首先自我介绍一下。

候选者:(按照提前准备的内容回答)好的,我叫 XXX,目前在 XXX 公司担任 XXX 岗位,主要负责 …


面试官我看你简历上写了熟悉 Redis,那么你知道什么是缓存穿透吗?

候选者:(经典的八股文,面试基本必问)缓存穿透指的是查询的数据在数据库中根本不存在,但每次请求都绕过缓存直接查数据库,导致数据库压力暴增。常见场景包括恶意攻击或查询不存在的数据,如查询用户 id=-1 或某个极端值。


面试官好的,你 知道缓存击穿和缓存雪崩吗?它们有什么区别,平时如何处理这些场景?

候选者:(经典的八股文,面试基本必问,按照理解尽量讲清楚原理)缓存击穿是指某个热点数据在缓存中不存在或者已过期,而且恰好有多个请求同时查询这个数据,导致这些请求直接访问数据库,造成数据库压力过大。解决办法通常是让第一个请求查询数据库并将数据加载到缓存,后续请求则直接从缓存中获取数据。缓存雪崩指的是缓存中的多个热点数据同时过期,导致大量请求访问数据库。这个问题通常通过加缓存过期时间的随机化来避免,避免所有缓存同时过期导致的流量高峰。(观察面试官反应,看看是否需要补充缓存预加载。)


面试官不错。那么,如果 Redis 存储的数据量非常大时,这个如何扩展呢?

候选者:(心里一想,面试官是想考我分布式架构存储吗,可以考虑结合一下业务场景更有说服力)如果数据量非常大,我们可以引入分布式缓存,比如 Redis 集群,来分担压力。同时,结合异步加载缓存消息队列,避免每次都访问数据库。


面试官接下来,聊一聊消息队列。RocketMQ 和 RabbitMQ 有什么区别?你一般怎么选用?

候选者RocketMQ 是分布式消息队列,专为高并发、高吞吐量设计,适合大规模分布式系统,提供了较强的事务支持。RabbitMQ 是基于AMQP协议的消息队列,适用于消息传递较为可靠,且对实时性要求不高的场景。两者的最大区别是 RocketMQ 在消息的高并发吞吐和消息事务方面表现优越,而 RabbitMQ 更注重可靠性消息的持久化


面试官那聊聊线程池的四个主要参数,你知道吗?

候选者:(经典的线程池问题,面试基本必问)线程池有四个核心参数。corePoolSize:核心线程池的数量。maximumPoolSize:线程池最大线程数。keepAliveTime:当线程池中的线程数大于corePoolSize时,多余线程的最大空闲时间。blockingQueue:任务队列,用于存储待执行的任务。


面试官那如果线程池中的线程不断增多,资源也开始紧张,怎么解决这个问题呢?

候选者:如果线程池中的线程不断增多,说明任务处理压力过大,我们可以通过调节最大线程数调整队列大小,或者通过动态调整线程池参数来优化。极端情况下,可以考虑增加更多线程池或将任务分配到其他服务进行处理。


面试官我们再来一个问题,StringBuilder 和 StringBuffer 的区别?

候选者StringBuilderStringBuffer 的区别在于 StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的。StringBuffer 采用的是同步方法,在多线程环境中可以保证线程安全,但性能相对较差。单线程场景下,推荐使用 StringBuilder,因为它性能更高。如果在多线程环境下使用 StringBuffer,可以避免潜在的线程安全问题。


面试官好的,今天的面试就暂时到这里,你有什么想问我的吗?

候选者: (展现自己的兴趣和对岗位的关注)想请问下后面大概会有几轮面试?团队目前的核心技术栈有哪些?

面试官: 2 - 3 轮技术面,1 轮 HR 面,大概是这样的一个流程。技术栈的话是比较主流一些技术,主要有…

候选者: 好的,了解了,我这边暂时没有其他问题。

面试官: 后续有结果会邮件通知你这边,感谢你参与今天的面试。


面试时间大概持续半个小时左右,整体面试体验挺不错的,第二天收到电话通知简历面过了,是另外一位面试官打的,通知进行下一轮面试,下一篇继续整理。这一篇先整理到这,希望对你有帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/73476.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

eBPF 实时捕获键盘输入

eBPF 实时捕获键盘输入 本文将带你一步步实现一个基于eBPF kprobe的键盘记录功能,通过Go语言配合libbpfgo,你将学会如何无损地监控系统键盘输入,并从中获取实时数据,进一步提高系统安全和监控能力。 1. 说明 本文属于专栏 Go语言…

APB-清华联合腾讯等机构推出的分布式长上下文推理框架

APB (Accelerating Distributed Long-Context Inference by Passing Compressed Context Blocks acrossGPUs)是清华大学等机构联合提出的分布式长上下文推理框架。通过稀疏注意力机制和序列并行推理方式,有效解决了大模型处理长文本时的效率瓶颈。APB采用更小的Anch…

数据库分库分表介绍

分库分表是解决数据库性能瓶颈的常用技术手段,主要用于应对数据量过大、读写压力过高的问题。通过将数据分散到多个数据库或表中,可以提高系统的扩展性和性能。 1. 分库分表的核心概念 (1)分库 定义:将数据分散到多个…

#mapreduce打包#maven:could not resolve dependencies for project

打包报错: #报错信息: [ERROR] Failed to execute goal on project mapreduce_teacher1: Could not resolve dependencies for project org.example:mapreduce_teacher1:jar:1.0-SNAPSHOT: Failed to collect dependencies at org.apache.hive:hive-exe…

Rabit

之前发过rabit了,所以这里不再赘述,讲讲原理 在线Rabbit加密 | Rabbit解密- 在线工具 (sojson.com) rabbit加密原理 Rabbit加密算法是一种流密码算法,由Daniel J. Bernstein设计,并被广泛用于多种加密和安全通信应用中。它的设…

【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求

目录 一、模式支持要求 1.1 发现模式 1.2 连接模式 1.3 绑定模式 1.4 模式间依赖关系总结 1.5 注意事项 1.6 协议设计深层逻辑 二、安全机制(Security Aspects) 三、空闲模式操作(Idle Mode Procedures) 3.1 支持要求 …

模型蒸馏系列——开源项目

推荐项目:MiniMind(低成本全流程训练框架) GitHub:https://github.com/jingyaogong/minimind 核心特性:完整实现从数据清洗到模型部署的全流程,支持单卡低成本训练,代码全透明,适合…

【软考-架构】13.1、软件架构概述-构件技术

✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 ✨【重点】系统架构设计软件架构概述软件架构设计与生命周期构件🌟软件架构风格数据流风格调用/返回风格独立构件风格虚拟机风格仓库风格闭环控制风格C2体系结…

《Android启动侦探团:追踪Launcher启动的“最后一公里”》

1. 开机仪式的“黑屏悬案” 当Android设备完成开机动画后,某些产品会陷入诡异的“黑屏时刻”——仿佛系统在玩捉迷藏。此时,**Launcher(桌面)**就是躲猫猫的主角。我们的任务:揪出Launcher何时完成启动,终…

Redis事务与管道

Redis事务 可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序地串行执行而不会被其他命令插入,不许加塞。 一个队列中,一次性、顺序性、排他性的执行一系列命令。 Redis事务VS数据库事务 常用…

掌握这些 UI 交互设计原则,提升产品易用性

在当今数字化时代,用户对于产品的体验要求越来越高,UI 交互设计成为决定产品成败的关键因素之一。一个易用的产品能够让用户轻松、高效地完成各种操作,而实现这一目标的核心在于遵循一系列科学合理的 UI 交互设计原则。本文将详细阐述简洁性、…

Alembic 实战指南:快速入门到FastAPI 集成

一、快速开始 1.1 简介 Alembic 是一个基于 SQLAlchemy 的数据库迁移工具,主要用于管理数据库模式(Schema)的变更,例如新增表、修改字段、删除索引等,确保数据库结构与应用程序的 ORM 模型保持一致。 Alembic 通过版…

LRU(最近最少使用)算法实现

核心思想与基本思路 LRU(Least Recently Used)算法是一种缓存淘汰策略,其核心思想是淘汰最近最少使用的数据。 最近使用原则:最近被访问的数据在未来被访问的概率更高,因此应保留在缓存中。淘汰机制:当缓…

现在有分段、句子数量可能不一致的中英文文本,如何用python实现中英文对照翻译(即每行英文对应相应的中文)

以下是处理分段且中英文句子数量可能不一致的文本的Python实现方案,包含分句、翻译和对齐功能: from googletrans import Translator import redef split_paragraphs(text):"""按空行分割段落并清洗"""return [p.strip()…

C语言每日一练——day_8

引言 针对初学者,每日练习几个题,快速上手C语言。第八天。(连续更新中) 采用在线OJ的形式 什么是在线OJ? 在线判题系统(英语:Online Judge,缩写OJ)是一种在编程竞赛中用…

基础知识《Redis解析》

Redis 详细解析与介绍 Redis(Remote Dictionary Server)是一个开源的高性能键值对(Key-Value)数据库,支持多种数据结构(如字符串、哈希、列表、集合等),广泛应用于缓存、消息队列、…

区跨链知识和概念

1、以太坊 Geth 源码解析 Geth(Go Ethereum)是以太坊官方提供的 Go 语言实现的客户端,广泛用于以太坊全节点运行、挖矿、DApp 开发等。理解 Geth 的源码有助于掌握以太坊区块链底层逻辑,如区块同步、EVM 执行、P2P 交互等。 2、…

Vue 计算属性与 Data 属性同名问题深度解析

文章目录 1. 问题背景与核心概念1.1 Vue 响应式系统架构1.2 核心概念定义 2. 同名问题的技术分析2.1 同名场景示例2.2 问题发生机制 3. 底层原理剖析3.1 Vue 初始化流程3.2 响应式系统关键代码 4. 问题解决方案4.1 最佳实践建议4.2 错误处理机制 5. 性能影响分析5.1 递归调用性…

Mybatis——基础操作、动态SQL

目录 一.基础操作 1.删除 2.新增 3.更新 4.查询 5.XML映射文件 二、动态SQL 1.<if> 2.<where> 3.<set> 4.<foreach> 5.<sql> 6.<include> 一.基础操作 1.删除 参数占位符&#xff1a; 注意&#xff1a; #{...}相比于${...}…

[设计模式]1_设计模式概览

摘要&#xff1a;设计模式原则、设计模式的划分与简要概括&#xff0c;怎么使用重构获得设计模式并改善代码的坏味道。 本篇作概览与检索用&#xff0c;后续结合源码进行具体模式深入学习。 目录 1、设计模式原理 核心原则&#xff08;语言无关&#xff09; 本质原理图 原…