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

每日面试实录·携程·社招·JAVA

📍面试公司:携程
👜面试岗位:后端开发工程师(社招)
🕐面试时长:约 50 分钟
🔄面试轮次:第 1 轮技术面


✨面试整体节奏:

这场携程的社招 Java 一面整体偏“系统设计 + 高并发 + 中间件 + Java 基础 + 算法”方向,涵盖了项目实战、分布式系统细节、Redis、MySQL 底层原理等。整体节奏紧凑,问题细致且深入原理,算法题也考察了复杂排序规则和编码能力。


✅ 面试题目逐题整理与解析:


1. 项目介绍 + 商品库为什么要 BC 分开维护

考察点:系统设计能力、业务理解能力
面试公司:携程
答案
B 端和 C 端面向的用户群体不同,商品属性、库存策略、定价方式可能存在较大差异。为了满足不同的业务模型和运营需求,BC 分开维护更灵活,方便分别做业务优化和权限控制。


2. BC 数据如何同步?是否存在不一致?

考察点:数据一致性、分布式同步策略
面试公司:携程
答案
同步方式可采用双写、事件总线(如 Kafka)、定时任务等。确实存在不一致可能,比如异步消息延迟、网络异常。通常通过幂等设计、补偿机制、状态校验等手段保障最终一致性。


3. 秒杀场景如何做减库存?

考察点:高并发控制、Redis 原子性操作
面试公司:携程
答案
常见方案:

  • 使用 Redis 预减库存,减成功再异步落库;
  • 使用 Lua 脚本确保 Redis 中的库存扣减原子性;
  • 利用消息队列异步处理订单,削峰填谷;
  • 数据库层做最终校验。

4. 异步操作如何与前端交互?

考察点:系统异步设计、用户体验优化
面试公司:携程
答案
一般通过轮询、WebSocket、长轮询、通知接口等方式。前端发起操作后立即返回操作状态或任务 ID,然后定期轮询后端接口或通过事件推送获取进度和结果。


5. Redis 是单机版还是 cluster 模式?

考察点:缓存架构设计
面试公司:携程
答案
生产环境一般推荐使用 cluster 模式,具备分片和高可用特性。单机版适合开发测试或小规模项目,不支持自动分片和容灾。


6. Redis 的主从同步原理

考察点:缓存高可用机制
面试公司:携程
答案
主从同步包括全量同步(初次连接)和增量同步(复制 backlog)。当从节点第一次连接主节点时,会触发 RDB 快照并发送数据,之后通过命令传播保持同步。


7. Redis 的 RDB 与 AOF 有何区别?

考察点:数据持久化机制
面试公司:携程
答案

对比项RDBAOF
保存方式定期快照每次写操作追加日志
启动恢复速度
数据完整性有数据丢失风险更安全
适用场景大批量恢复高可靠性需求

实际生产环境常组合使用。


8. Redis Cluster 分片策略 & 新节点加入机制

考察点:分布式缓存扩容机制
面试公司:携程
答案

  • Redis Cluster 使用 哈希槽(hash slot)机制,总共 16384 个槽。
  • 加入新节点后会触发 槽重分配(resharding),部分槽会从旧节点迁移到新节点,迁移时需考虑数据复制和一致性。

9. 缓存击穿怎么解决?

考察点:缓存异常处理
面试公司:携程
答案

  • 加互斥锁(如基于 Redis setnx)防止并发回源;
  • 设置热点 key 的 预热机制
  • 限流保护;
  • 使用本地缓存 + Redis 双层结构。

10. NIO 与 BIO 的区别?

考察点:Java 网络编程模型
面试公司:携程
答案

模型BIONIO
编程模型阻塞非阻塞
线程模型一个请求一个线程单线程处理多个请求
性能并发差并发强,适合高并发场景

11. HashMap 原理及线程安全问题

考察点:Java 容器原理
面试公司:携程
答案

  • HashMap 采用数组 + 链表 + 红黑树结构;
  • 使用 hash(key) 计算索引;
  • 非线程安全,可能引发死循环;
  • 线程安全推荐使用 ConcurrentHashMap。

12. ConcurrentHashMap 是如何实现线程安全的?

考察点:并发编程
面试公司:携程
答案

  • JDK 1.7 使用分段锁(Segment),每段加锁;
  • JDK 1.8 使用 CAS + synchronized + 链表/红黑树
  • 提高并发度同时保证数据一致性。

13. CMS 与 G1 垃圾回收器对比

考察点:JVM 性能调优
面试公司:携程
答案

特性CMSG1
回收策略标记-清除分区 + 并行回收
停顿时间更可控
吞吐量一般
碎片问题
推荐使用已废弃推荐使用 G1 及 ZGC 等新一代 GC

14. MySQL 的索引、锁机制

考察点:数据库底层原理
面试公司:携程
答案

  • 索引底层为 B+ 树;
  • 叶子节点存储的是完整记录的主键 ID(辅助索引需要回表);
  • 索引匹配原则:最左前缀、联合索引顺序、范围查询终止匹配;
  • 锁机制:行锁、间隙锁、意向锁等,InnoDB 默认支持行级锁。

15. 算法题:斗地主牌排序

考察点:集合使用、排序规则抽象、编码能力
面试公司:携程
题目描述
给定一手斗地主牌(17 张),按照斗地主的排序规则从大到小依次排序牌面。从大到小依次为:大王、小王、2、A、K、Q、J、10、…、3。相同牌面时按花色排序:黑桃 > 红心 > 方块 > 梅花。

答案示例(Java 代码略,思路如下):

  1. 自定义牌面权重 map;
  2. 自定义花色权重;
  3. 构建牌对象(包含牌面+花色);
  4. 使用自定义 Comparator 排序。

💡总结 & 面试复盘:

这场携程社招 Java 一面从多个层面进行了考察:

  • 系统设计:BC 商品维护分离、异步交互、缓存穿透等;
  • 中间件理解:Redis 的持久化、分布式集群原理、消息队列处理;
  • 并发编程:线程安全、ConcurrentHashMap 底层原理;
  • JVM 与数据库原理:GC 算法、MySQL 索引机制;
  • 算法题:考察代码抽象能力与逻辑思维。

✊写在最后:

这场携程的技术面,非常重视实战经验和原理理解,建议在准备时不要只停留在“用”,而要深入“为什么这么设计”。掌握中间件和高并发问题的应对方式,是面试成功的关键。

准备 Java 面试时,建议构建自己的知识体系:项目 → 原理 → 应用场景 → 性能优化,逐层递进,稳扎稳打,终会如愿拿下 offer!


如果你也在准备 Java 后端面试,可以留言交流或私信我,后续我也会持续整理高频 Java 面试题合集,助你顺利上岸!

相关文章:

每日面试实录·携程·社招·JAVA

📍面试公司:携程 👜面试岗位:后端开发工程师(社招) 🕐面试时长:约 50 分钟 🔄面试轮次:第 1 轮技术面 ✨面试整体节奏: 这场携程的社招 Java 一面…...

Redis增删改查

### 进入redis控制台 redis-cli --raw #加上raw,防止中文乱码### 增 127.0.0.1:6379> LPUSH list0 "hello" #增加一个list 1 127.0.0.1:6379> LRANGE list0 0 -1 #查看list hello### 删 127.0.0.1:6379> DEL list0 #删除list 1 127.0.0.1:6379> LRANG…...

机器学习 Day12 集成学习简单介绍

1.集成学习概述 1.1. 什么是集成学习 集成学习是一种通过组合多个模型来提高预测性能的机器学习方法。它类似于: 超级个体 vs 弱者联盟 单个复杂模型(如9次多项式函数)可能能力过强但容易过拟合 组合多个简单模型(如一堆1次函数)可以增强能力而不易过拟合 集成…...

学习笔记十九——Rust多态

🧩 Rust 多态终极通俗指南 📚 目录导航 多态一句话概念静态分派 vs 动态分派——根本差异参数化多态(泛型) 3.1 函数里的泛型 3.2 结构体里的泛型 3.3 方法里的泛型 3.4 枚举里的泛型Ad hoc 多态(特例多态&#xff0…...

交换机与路由器的主要区别:深入分析其工作原理与应用场景

在现代网络架构中,交换机和路由器是两种至关重要的设备。它们在网络中扮演着不同的角色,但很多人对它们的工作原理和功能特性并不十分清楚。本文将深入分析交换机与路由器的主要区别,并探讨它们的工作原理和应用场景。 一、基本定义 1. 交换…...

【Oracle专栏】Oracle中的虚拟列

Oracle相关文档,希望互相学习,共同进步 风123456789~-CSDN博客 1.背景 在EXP方式导出时,发现 出现如下提示 EXP-00107: virtual column 不支持,因此采用expdp方式导出。于是本文针对oracle虚拟列进行简单介绍。 2. 相…...

2020 年 7 月大学英语四级考试真题(组合卷)——解析版

🏠个人主页:fo安方的博客✨ 💂个人简历:大家好,我是fo安方,目前中南大学MBA在读,也考取过HCIE Cloud Computing、CCIE Security、PMP、CISP、RHCE、CCNP RS、PEST 3等证书。🐳 &…...

大语言模型的训练、微调及压缩技术

The rock can talk — not interesting. The rock can read — that’s interesting. (石头能说话,不稀奇。稀奇的是石头能读懂。) ----硅谷知名创业孵化器 YC 的总裁 Gar Tan 目录 1. 什么是大语言模型? 2. 语言建模&#xff…...

NEAT 算法解决 Lunar Lander 问题:从理论到实践

NEAT 算法解决 Lunar Lander 问题:从理论到实践 0. 前言1. 定义环境2. 配置 NEAT3. 解决 Lunar lander 问题小结系列链接0. 前言 在使用 NEAT 解决强化学习问题一节所用的方法只适用于较简单的强化学习 (reinforcement learning, RL) 环境。在更复杂的环境中使用同样的进化解…...

firewall指令

大家好,今天我们继续来了解服务管理,来看看打开或关闭指定端口,那么话不多说,开始吧. 1.打开或者关闭指定端口 在真正的生产环境,往往需要防火墙,但问题来了,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听通讯,这时,需要打开指定的端口,比如80,22,8080等. 2.fi…...

【MySQL】MySQL表的增删改查(CRUD) —— 上篇

目录 MySQL表的增删改查(CRUD) 1. 新增(Create)/插入数据 1.1 单行数据 全列插入 insert into 表名 values(值, 值......); 1.2 单行数据 指定列插入 1.3 多行数据 指定列插入 1.4 关于时间日期(datetime&am…...

STM32的三种启动方式

目录 一、从主闪存存储器启动(Main Flash Memory) 二、从系统存储器启动(System Memory) 三、从内置SRAM启动(Embedded SRAM) 一、从主闪存存储器启动(Main Flash Memory) >&g…...

软考高级系统架构设计师-第15章 知识产权与标准化

【本章学习建议】 根据考试大纲,本章主要考查系统架构设计师单选题,预计考3分左右,较为简单。 15.1 标准化基础知识 1. 标准的分类 分类 内容 国际标准(IS) 国际标准化组织(ISO)、国际电工…...

Spring Boot 整合 DeepSeek 实现AI对话 (保姆及教程)

文章目录 文章目录 前言 一、创建 spring boot 工程 二、申请key 三、修改配置文件 application.properties 四、编写控制器(controller) 五、运行调试 前言 提示:随着人工智能的不断发展,ai这门技术也越来越重要,很多…...

Java File 类详解

Java File 类详解 File 类是 Java 中用于表示文件和目录路径名的抽象类,位于 java.io 包中。它提供了丰富的 API,用于操作文件系统,包括创建、删除、重命名、查询文件属性等功能。 1. File 类核心知识点 (1)构造方法…...

通过特定协议拉起 electron 应用

在 Android 通过 sheme 协议可以拉起其他应用。 electron 应用也可以通过类似特定协议被拉起。 在同时有 web、客户端的应用里,可以通过这种方式在 web 拉起客户端。 支持拉起客户端 const PROTOCOL xxxif (process.defaultApp) {// 这里是开发环境,有…...

前端与传统接口的桥梁:JSONP解决方案

1.JSONP原理 1.1.动态脚本注入 说明&#xff1a;通过创建 <script> 标签绕过浏览器同源策略 1.2.回调约定 说明&#xff1a;服务端返回 函数名(JSON数据) 格式的JS代码 1.3.自动执行 说明&#xff1a;浏览器加载脚本后立即触发前端预定义的回调函数&#xff08;现代开…...

Vue3中provide和inject数据修改规则

在 Vue3 中&#xff0c;通过 inject 接收到的数据是否可以直接修改&#xff0c;取决于 provide 提供的值的类型和响应式处理方式&#xff1a; 1. 若提供的是普通值&#xff08;非响应式数据&#xff09; javascript 复制 // 父组件 provide(staticValue, 123); 子组件修改行…...

Mac-VScode-C++环境配置

mac上自带了clang所以不是必须下载Homebrew 下面是配置文件&#xff08;注释记得删一下&#xff09; package.json {"name": "git-base","displayName": "%displayName%","description": "%description%",&quo…...

Linux 文件系统目录结构详解

Linux 文件系统目录结构详解 Linux 文件系统遵循 Filesystem Hierarchy Standard (FHS) 标准&#xff0c;定义了各个目录的用途和文件存放规则。无论是开发者、运维工程师还是普通用户&#xff0c;理解这些目录的作用都至关重要。本文将全面解析 Linux 的目录结构&#xff0c;…...

编码器---正交编码器

一、正交编码器定义与核心作用 正交编码器&#xff08;Orthogonal Encoder&#xff09;&#xff0c;又称增量式编码器&#xff0c;是一种通过输出两路相位差90的脉冲信号&#xff08;A相、B相&#xff09;来测量旋转角度、速度和方向的传感器。其核心优势是通过A/B相的脉冲顺序…...

Java Streams 使用教程

简介 Stream 是 Java 8 引入的一个 函数式编程特性&#xff0c;可以让我们用声明式的方式操作集合&#xff08;如 List、Set、Map 等&#xff09;。 核心作用是&#xff1a; 从集合中提取数据&#xff08;流&#xff09; 对数据做中间操作&#xff08;filter/map/sort...&am…...

1001: 自由落体的计算

题目描述 一球从m米高度自由下落&#xff0c;每次落地后返回原高度的一半&#xff0c;再落下。 求它在第n次触地时会反弹多高&#xff1f;直到第n次触地时共经过多少米&#xff1f; 输入 一行,包含两个数m, n 其中0 < m < 1,000,000,000 0 < n < 1,000,000,000 输…...

开发环境解决浏览器层面跨域问题

适用于开发环境临时调试等情况 新建一个 Chrome 的快捷方式&#xff0c;目标后面跟上&#xff1a; –disable-web-security --disable-gpu --user-data-dir%LOCALAPPDATA%\Google\chromeTemp 打开后会给出不安全的提示...

2025年渗透测试面试题总结-拷打题库07(题目+回答)

网络安全领域各种资源&#xff0c;学习文档&#xff0c;以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具&#xff0c;欢迎关注。 目录 2025年渗透测试面试题总结-拷打题库07 1. CMS目录扫描的意义 2. 常见网站服务器容器 3. MySQL写入We…...

【leetcode刷题日记】lc.300-最长递增子序列

目录 1.题目 2.代码 1.题目 给你一个整数数组 nums &#xff0c;找到其中最长严格递增子序列的长度。 子序列 是由数组派生而来的序列&#xff0c;删除&#xff08;或不删除&#xff09;数组中的元素而不改变其余元素的顺序。例如&#xff0c;[3,6,2,7] 是数组 [0,3,1,6,2,…...

游戏引擎学习第236天:GPU 概念概述

回顾并展望通过视频采集卡进行流媒体传输的未来 昨天&#xff0c;我们迈出了大胆的一步&#xff0c;决定初始化硬件的 3D 加速&#xff0c;因为我有点厌倦了我们的游戏没有垂直同步&#xff08;vsync&#xff09;。如今&#xff0c;在 Windows 上&#xff0c;我找不到一种可靠…...

深入理解Linux中的线程控制:多线程编程的实战技巧

个人主页&#xff1a;chian-ocean 文章专栏-Linux 前言&#xff1a; POSIX线程&#xff08;Pthreads&#xff09; 是一种在 POSIX 标准下定义的线程库&#xff0c;它为多线程编程提供了统一的接口&#xff0c;主要用于 UNIX 和类 UNIX 系统&#xff08;如 Linux、MacOS 和 BS…...

【题解-Acwing】790. 数的三次方根

题目:790. 数的三次方根 题目描述 给定一个浮点数 n,求它的三次方根。 输入 共一行,包含一个浮点数 n 。 输出 共一行,包含一个浮点数,表示问题的解。 注意,结果保留 6 位小数。 数据范围 −10000 ≤ n ≤ 10000 时空限制 1s / 64MB 输入样例 1000.00输出样…...

【条形码识别改名工具】如何批量识别图片条形码,并以条码内容批量重命名,基于WPF和Zxing的开发总结

批量图片条形码识别与重命名系统 (WPF + ZXing)开发总结 项目适用场景 ​​电商商品管理​​:批量处理商品图片,根据条形码自动分类归档​​图书馆系统​​:扫描图书条形码快速建立电子档案​​医疗档案管理​​:通过药品条形码整理医疗图片资料​​仓储管理​​:自动化识…...