找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 112|回复: 0

华为投资控股有限公司一面

[复制链接]

1288

主题

0

回帖

4008

积分

论坛元老

积分
4008
发表于 2026-5-25 16:03:14 | 显示全部楼层 |阅读模式
基本信息
  • 形式:一面采用半结构化技术面形式,包含自我介绍、项目深度追问、基础知识考察、手撕代码/场景题。
  • 时长:约45-60分钟。自我介绍控制在3-5分钟,项目深挖约20-30分钟,技术问答约10-15分钟。
  • 氛围:注重基础知识的广度与深度。面试官会围绕简历项目中的技术栈层层追问,考察知识体系是否扎实。

面试流程
机考/测评通过→一面通知→按时参加面试→自我介绍(附PPT者更佳)→项目深度追问→技术基础知识问答→手撕代码/场景题→反问环节→退场。
面试问题及参考回答
1. 自我介绍
参考回答:面试官你好,我叫[姓名],毕业于[学校]的[专业]。在校期间我主要学习了Java后端开发技术栈,包括Java基础、Spring Boot框架、MySQL数据库、Redis缓存以及消息队列等。在[项目名称]中,我负责了[核心模块]的设计与开发,解决了[具体技术难点],最终实现了[量化成果]。平时我会通过阅读技术博客、参与开源项目来提升自己。我非常希望能加入贵公司,在一个优秀的平台上继续磨练技术、创造价值。谢谢!
提示:自我介绍应控制在1-2分钟,突出与应聘岗位相关的技术能力和项目经验,避免过多无关信息。

2. 先问项目,干了什么,主要负责部分
参考回答:我介绍一下我参与过的[项目名称]。该项目是一个[电商/物流/管理系统]平台,主要实现了[用户管理/订单处理/消息推送]等核心功能。我在项目中主要负责[订单模块/消息中间件集成/缓存设计]部分。
具体工作:
  • 设计了订单状态机的流转逻辑,使用RocketMQ处理订单支付成功后的异步通知,保证了消息的可靠性和最终一致性。
  • 针对热点商品缓存,采用Redis存储库存数据,并使用Lua脚本保证扣减库存的原子性。
  • 参与了数据库表的设计,对订单表按时间进行了分区,并对查询频繁的字段建立了联合索引。

通过这个项目,我加深了对分布式系统中消息可靠性和缓存一致性的理解。
提示:按照STAR法则(情境-任务-行动-结果)组织语言,重点突出你的个人贡献和技术选型思考。

3. 说一下mq的基本应用,各个组成部分
参考回答:消息队列(MQ)的核心作用是异步处理、应用解耦、流量削峰。
基本应用场景:
  • 异步处理:用户注册后发送短信或邮件,不需要同步等待。
  • 应用解耦:订单系统支付成功后,通过MQ通知库存系统、积分系统,各系统独立部署。
  • 流量削峰:秒杀活动中,将海量请求先写入MQ,后端消费者按能力拉取处理。

主要组成部分(以RocketMQ为例):
  • Producer(生产者) :消息的发送者,负责将消息发送到Broker。
  • Consumer(消费者) :消息的接收者,通过拉取或推送方式消费消息。
  • Broker(消息服务器) :负责消息存储、转发,核心组件。
  • NameServer(命名服务) :提供路由信息,管理Broker集群。
  • Topic(主题) :消息的分类,生产者按Topic发送,消费者按Topic订阅。
  • Message Queue(消息队列) :Topic下实际存储消息的物理队列。


4. mq消息重复怎么处理,死信队列是什么,你们项目怎么解决延迟消费,t设置的多少
参考回答:
(1)消息重复处理(幂等性设计)
  • 消费者端必须设计幂等逻辑,即同一条消息多次消费的结果与一次消费相同。
  • 常用方案:利用数据库唯一键约束(如消息ID作为唯一索引)、Redis分布式锁+状态标记、或利用业务表的版本号进行乐观锁更新。

(2)死信队列(Dead Letter Queue, DLQ)
  • 当消息在队列中消费失败达到一定次数(如重试16次),或者消息过期未被消费,Broker会将消息转入死信队列。
  • 死信队列中的消息通常需要人工介入排查原因(如消费代码bug、数据格式异常),修复后重新投递或归档。

(3)延迟消费的实现
  • 我们项目使用RocketMQ的定时消息功能实现延迟消费。发送时设置delayTimeLevel(如level 3代表10秒后投递)。
  • 业务场景:订单创建30分钟未支付自动取消。我们设置延迟消息在30分钟后投递,消费者收到后检查订单状态,若仍未支付则执行取消操作并释放库存。
  • 延迟时间设置:订单取消场景我们设置为30分钟(1800000毫秒)。根据业务需要可以灵活调整,RocketMQ支持多个预设延迟级别(1s/5s/10s/30s/1m/2m...)。

5. 说一下mysql索引有哪些,索引失效
参考回答:
(1)MySQL索引类型
  • 普通索引(INDEX) :最基本的索引,无唯一性限制。
  • 唯一索引(UNIQUE) :列值必须唯一,但允许NULL。
  • 主键索引(PRIMARY KEY) :特殊的唯一索引,不允许NULL,一张表只能有一个。
  • 联合索引(复合索引) :在多个列上建立的索引,遵循最左前缀原则。
  • 全文索引(FULLTEXT) :用于文本内容的模糊搜索,MyISAM和InnoDB(5.6+)支持。
  • 空间索引(SPATIAL) :用于地理数据类型。

(2)索引失效的常见场景
  • 使用 != 或 <> 操作符。
  • 在索引列上进行函数操作或表达式计算(如 WHERE age+1 = 20)。
  • 使用 LIKE '%keyword' (前导模糊查询)会导致索引失效;但 LIKE 'keyword%' 可走索引。
  • 数据类型隐式转换(如 varchar 列传入数字)。
  • OR条件中只要有一个字段没有索引,整个查询就不会走索引(建议改为 UNION)。
  • 联合索引未遵循最左前缀原则(例如索引 (a,b,c),条件只用到 b 或 c)。
  • 全表扫描比使用索引更快时(如数据量小或过滤条件选择性差)。


6. 说一下三大范式
参考回答:数据库设计三大范式是为了减少数据冗余、避免更新异常。
第一范式(1NF) :要求数据库表的每一列都是不可分割的基本数据项,即列具有原子性。例如“地址”字段不应该包含省、市、区,应拆分为多个字段。
第二范式(2NF) :在1NF的基础上,要求表中的每一列都完全依赖于主键,而不能只依赖主键的一部分(针对联合主键)。例如订单表中,订单号+商品号作为联合主键,商品名称只依赖于商品号,而不依赖于订单号,就违反了2NF。
第三范式(3NF) :在2NF的基础上,要求表中的每一列都直接依赖于主键,不能存在传递依赖。例如学生表中:学号 → 学院 → 学院地址,学院地址传递依赖于学号,应该将学院信息拆成独立表。
实际工程中:为了性能,有时会适当违反范式(反范式设计),比如冗余一些字段以避免多表关联查询。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|知行公社 ( 粤ICP备2020096454号 )

GMT+8, 2026-9-6 03:06 , Processed in 0.047812 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表