2026-01-08 09:05:54
一、机考经历
该同学在2023年7月5日参加了华为OD的机考,当时绝大多数人收到的试卷都是B卷。他抽到的题目难度适中,具体包括:
第一道题:判断字符串子序列
题目要求判断一个字符串是否为另一个字符串的子序列。
解题关键在于理解子序列的定义,即子序列中的字符顺序与原字符串中的字符顺序一致,但不一定连续。
第二题:相对开音节
题目涉及语言学知识,要求识别并统计给定单词中的相对开音节数量。
解题需要了解相对开音节的定义,通常以一个元音字母结尾,且该元音字母前有一个辅音字母(或一个辅音字母组合)并满足一定发音规则。
第三题:通过软盘拷贝文件
这是一道较为贴近实际应用场景的题目,要求模拟通过软盘拷贝文件的过程。
解题时需要考虑文件的读写操作、软盘的容量限制以及拷贝过程中的错误处理等。
该同学最终机考分数为395分,表明他对于所抽到的题目掌握得相当不错。如果购买了相关的题库并认真练习,应对这类机考题目应该不会有太大问题。
二、面试经历
该同学的技术栈是Java,因此面试主要围绕Java面经和项目经历展开。
一面面经(约一个多小时)
Spring事务传播机制
询问了Spring事务的传播机制有哪些,如REQUIRED、REQUIRES_NEW、SUPPORTS等。
接着询问了Spring实现事务的方式,如编程式事务管理和声明式事务管理。
设计模式
询问了对设计模式的了解程度,以及在实际项目中用过哪些设计模式。
具体讨论了单例模式的多种实现方式(如饿汉式、懒汉式、双重检查锁等)和工厂模式的使用场景。
Redis与MySQL缓存一致性
询问了如何保证Redis和MySQL之间的缓存一致性。
常见的策略包括延时双删、先更新数据库再删除缓存、使用消息队列等。
MySQL索引
询问了MySQL索引的类型,如B树索引、哈希索引、全文索引等。
深入讨论了聚簇索引的概念,以及最左前缀匹配规则在查询优化中的应用。
项目经历
了解了该同学的项目内容和在项目中承担的角色。
询问了项目中的分库分表策略、微服务划分原则等。
算法题
给出的算法题并非来自LeetCode,具体题目未记录。
二面面经(约四五十分钟)
Java垃圾回收机制
询问了Java垃圾回收机制的基本原理,包括标记-清除、标记-整理、复制等算法。
讨论了不同垃圾回收器的特点和使用场景。
Java线程池
询问了Java线程池的参数和运行机制。
常见的参数包括corePoolSize、maximumPoolSize、keepAliveTime等。
排序算法
询问了熟悉的排序算法有哪些,哪些算法的时间复杂度是O(nlogn)。
讨论了链表最适合使用的排序算法(如归并排序)。
项目技术栈
询问了项目的技术栈,以及用过的中间件和技术组件。
Spring Boot配置文件隔离
询问了如何在Spring Boot项目中根据环境隔离配置文件。
常见的做法包括使用profiles、多配置文件等。
Dubbo
询问了Dubbo的常用协议和注册配置中心使用的组件。
Dubbo的常用协议包括Dubbo协议、RMI协议、HTTP协议等。
RocketMQ消息堆积
询问了RocketMQ如何解决消息堆积问题。
常见的策略包括提高消费者处理能力、增加消费组、优化消息存储等。
算法题:无重复字符的最长子串
给出了无重复字符的最长子串这一经典算法题。
常见的解法包括滑动窗口、哈希表等。
三、入职与offer
从开始机考到最后拿到offer,该同学历时一个月。在全程辅导下,他成功完成了跳槽,工资涨幅达到了30%。之前他在某手机厂做外包工作,现在成功加入了华为OD体系。



综上所述,该同学的华为OD机考和面试经历相对顺利,凭借扎实的Java基础和丰富的项目经验,成功获得了华为的offer。希望他的经历能够为其他求职者提供一些有益的参考和借鉴。