985本,去华为od,亏吗?

有 gap 期的话,找工作是比较被动的,哪怕教育背景很不错,比如 985 本。

星球里就有这样一位 23 届的球友,985 本,在 xx 工作过一年,做的是 Java 开发,因为公司想让他转 PHP 开发,就索性裸辞了。

24 年10 月份拿到了两份 offer,一个是华为 od,另外一个暂时先保密,薪资待遇比华为 OD 这个低一些。

可能很多小伙伴看到这里会觉得 985 本去华为 OD 太亏了吧?

但现实情况摆在面前,当你第一份工作的内容很 low,技术发展受限,再加上一小段 gap 期,再找工作的时候就会非常难受。

小厂看不上,大厂够不着

唯有华为 OD 这种大厂外包,是一个相对说的过去的选择。

第一,华为 OD 的面试相对容易一些,我们来看一下往期《Java 面试指南》里收录的面试题感受一下。

基本上都是比较常见的题目,比如说 MySQL 用过哪些函数,容易吧?

Linux 使用过的命令、chmod 参数,不难吧?

多线程、线程池也属于常规题目。

HTTP、OSI 七层模型、了解哪些设计模式、Docker 也都是面渣逆袭上强烈要求大家掌握的内容。

剩下的 Redis 了解多少,队列和栈的区别,引用类型的变量有什么特点,都很 easy。

第二,华为 OD 比较不在乎你以往的工作经历,只要你学历是 985 本、211 本,都会给机会。

第三,华为 OD 的薪资待遇相对来说,比很多中小厂给的都要靠谱的多。

像我之前统计的这份华为 OD 薪资一览表,其实就很能说明问题。

拿济南 OD 的 16K 来说,虽然没办法和大厂动辄 20-30k 的薪资比,但如果比较的对象是当地的企业,那真的要赢麻了。

找工作最忌讳的是,别人说垃圾你也觉得是垃圾。

就比如说很多人羡慕华为的工作,但喷华为的人可不在少数。

就比如说大厂的外包很多人连门槛都摸不到,但是依然会 diss 几句,外包不如狗,OD=our dog。

很多事情,喷几句是会舒服,但与事无益。

我现在遇到黑子的标准做法是,不回应不反驳,默默拉黑

就拿 985 本去华为 OD 这件事来说,亏不亏?

如果你没有更好的 offer,肯定不亏。

如果你腾讯、阿里、百度、字节、京东、美团的 offer 都拿了个遍,你去华为 OD 干什么,亏麻了呀。

适可而止。

给自己和解吧,别背着沉重的包袱前行。

华为 OD 面试题一道

JOIN操作为什么要小表驱动大表?

第一,如果大表的 JOIN 字段有索引,那么小表的每一行都可以通过索引快速匹配大表。

时间复杂度为小表行数 N 乘以大表索引查找复杂度 log(大表行数 M),总复杂度为 N*log(M)。

显然小表做驱动表比大表做驱动表的时间复杂度 M*log(N) 更低。

第二,如果大表没有索引,需要将小表的数据加载到内存,再全表扫描大表进行匹配。

时间复杂度为小表分段数 K 乘以大表行数 M,其中 K = 小表行数 N / 内存大小 join_buffer_size。

显然小表做驱动表的时候 K 的值更小,大表做驱动表的时候需要多次分段。

sql 复制代码
-- 小表驱动(高效)
SELECT * FROM small_table s
JOIN large_table l ON s.id = l.id;  -- l.id有索引

-- 大表驱动(低效)
SELECT * FROM large_table l
JOIN small_table s ON l.id = s.id;  -- s.id无索引
  1. 当使用 left join 时,左表是驱动表,右表是被驱动表。
  2. 当使用 right join 时,刚好相反。
  3. 当使用 join 时,MySQL 会选择数据量比较小的表作为驱动表,大表作为被驱动表。

----这部分是帮助大家理解 start,面试中可不背----

为了验证这一点,我特意新建了两个表 departments 和 employees。

插入测试数据:

sql 复制代码
-- 插入测试数据
INSERT INTO departments VALUES
    (1, '研发部'),
    (2, '市场部'),
    (3, '人事部');

-- 插入更多数据到员工表
INSERT INTO employees VALUES
    (1, '张三', 1),
    (2, '李四', 1),
    (3, '王二', 2),
    (4, '赵六', 2),
    (5, '钱七', 3),
    (6, '孙八', NULL),
    (7, '周九', 1),
    (8, '吴十', 2);

然后用 explain 查看执行计划:

当使用 left join 的时候,第一行是 employees 表,说明左表是驱动表;当使用 right join 的时候,第一行是 departments 表,说明右表是驱动表;当使用 join 的时候,第一行是 departments 表,说明 MySQL 默认选择了小表作为驱动表。

----这部分是帮助大家理解 end,面试中可不背----

这里的小表指实际参与 JOIN 的数据量,而不是表的总行数。大表经过 where 条件过滤后也可能成为逻辑小表。

sql 复制代码
-- 实际参与JOIN的数据量决定小表
SELECT * FROM large_table l
JOIN small_table s ON l.id = s.id
WHERE l.created_at > '2025-01-01';  -- l经过过滤后可能成为小表

也可以强制通过 STRAIGHT_JOIN 提示 MySQL 使用指定的驱动表。

sql 复制代码
explain select table_1.col1, table_2.col2, table_3.col2
from table_1
straight_join table_2 on table_1.col1=table_2.col1
straight_join table_3 on table_1.col1 = table_3.col1;

explain select straight_join table_1.col1, table_2.col2, table_3.col2
from table_1
join table_2 on table_1.col1=table_2.col1
join table_3 on table_1.col1 = table_3.col1;
相关推荐
麻瓜code3 分钟前
【LeetCode】两数相加:模拟加法竖式,用进位 flag 一次遍历解决
java
zzzll11111 小时前
Spring Boot 实现数据脱敏:自定义注解 + Jackson 序列化器
java·spring boot·后端
再吃一根胡萝卜5 小时前
08 · 前端:Vue3 + SSE 流式与执行链路可视化
面试
再吃一根胡萝卜5 小时前
03 · 后端:FastAPI 与分层架构
面试
vx-Biye_Design5 小时前
SSM伴侣动物伴护星小程序06330-计算机课程设计、毕业设计
spring boot·后端·elasticsearch·小程序·架构·课程设计·idea
2分钟速写快排7 小时前
什么是 RAG?如何用 RAG 实现一个用户记忆?
前端·后端·ai编程
面向Google编程7 小时前
Apache Iceberg Variant 类型:v3 半结构化数据不再「二选一」
大数据·后端
lhldsg8 小时前
全民健身解决方案小程序开发:从0到1的技术实战
java·数据库·需求分析
jason成都8 小时前
Spring WebFlux 适配达梦新方案|dm‑r2dbc:Netty 异步传输的实验性 R2DBC 驱动
java·后端·spring
泡海椒8 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python