---
title: 华为 OD 275 天后，我进了腾讯！
category: 技术文章精选集
tag:
  - 个人经历
---

> **推荐语**：一位朋友的华为 OD 工作经历以及腾讯面试经历分享，内容很不错。
>
> <br/>
>
> **原文地址**：https://www.cnblogs.com/shoufeng/p/14322931.html

## 时间线

- 18 年 7 月，毕业于某不知名 985 计科专业；
- 毕业前，在某马的 JavaEE（后台开发）培训了 6 个月；
- 第一份工作（18-07 ~ 19-12）接触了大数据，感觉大数据更有前景；
- 19 年 12 月，入职中国平安产险（去到才发现是做后台开发 😢）；
- 20 年 3 月，从平安辞职，跳去华为 OD 做大数据基础平台；
- 2021 年 1 月，入职鹅厂

## 华为 OD 工作经历总结

### 为什么会去华为 OD

在平安产险（正式员工）只待了 3 个月，就跳去华为 OD，朋友们都是很不理解的 —— 好好的正编不做，去什么外包啊 😂

但那个时候，我铁了心要去做大数据，不想和没完没了的 CRUD 打交道。刚好面试通过的岗位是华为 Cloud BU 的大数据部门，做的是国内政企中使用率绝对领先的大数据平台……
平台和工作内容都不错，这么好的机会，说啥也要去啊 💪

> 其实有想过在平安内部转岗到大数据的，但是不满足“入职一年以上”这个要求；
> 「等待就是浪费生命」，在转正流程还没批下来的时候，赶紧溜了 😂

### 华为 OD 的工作内容

**带着无限的期待，火急火燎地去华为报到了。**

和招聘的 HR 说的一样，和华为自有员工一起办公，工作内容和他们完全一样：

> 主管根据你的能力水平分配工作，逐渐增加难度，能者多劳；
> 试用期 6 个月，有导师带你，一般都是高你 2 个 Level 的华为自有员工，基本都是部门大牛。

所以，**不存在外包做的都是基础的、流程性的、没有技术含量的工作** —— 顾虑这个的完全不用担心，你只需要打听清楚要去的部门/小组具体做什么，能接受就再考虑其他的。

感触很深的一点是：华为是有着近 20 万员工的巨头，内部有很多流程和制度。好处是：能接触到大公司的产品从开发、测试，到发布、运维等一系列的流程，比如提交代码的时候，会由经验资深、经过内部认证的大牛给你 Review，在拉会检视的时候，可以学习他们考虑问题的角度，还有对整个产品全局的把控。

但同时，个人觉得这也有不好的地方：流程繁琐会导致工作效率变低，比如改动几行代码，就需要跑完整个 CI（有些耗时比较久），还要提供自验和 VT 的报告。

### OD 与华为自有员工的对比

什么是 OD？Outstanding Dispatcher，人员派遣，官方强调说，OD 和常说的“外包”是不一样的。

说说我了解的 OD：

- 参考华为的薪酬框架，OD 人员的薪酬体系有一定的市场竞争力 —— 的确是这样，貌似会稍微倒挂同级别的自有员工；
- 可以参与华为主力产品的研发 —— 是的，这也是和某软等“供应商”的兄弟们不一样的地方；
- 外网权限也可以申请打开（对，就是梯子），部门内部的大多数文档都是可以看的；
- 工号是单独的 300 号段，其他供应商员工的工号是 8 开头，或着 WX 开头；
- 工卡带是红色的，和自有员工一样，但是工卡内容不同，OD 的明确标注：办公区通行证，并有德科公司的备注：

![](https://oss.javaguide.cn/github/javaguide/high-quality-technical-articles/personal-experience/1438655-20210124231550508-1315720640.jpg)

还听到一些内部的说法：

- 没股票，没 TUP，年终奖少，只有工资可能比我司高一点点而已；
- 不能借针对 HW 的消费贷，也不能买公司提供的优惠保险…

### 那，到底要不要去华为 OD？

我想，搜到我这篇文字的你，心里其实是有偏向的，只是缺最后一片雪花 ❄️，让自己下决心。

作为过来人之一，我再提供一些参考吧 😃

1）除了华为 OD，**还有没有更好的选择？** 综合考虑加班（996、有些是 9106 甚至更多）、薪资、工作内容，以及这份工作经历对你整个职业的加成等等因素；

2）有看到一些内部的说法，比如：“奇怪 OD 这么棒，为啥大家不自愿转去 OD 啊？”；再比如：“OD 等同华为？这话都说的出口，既然都等同，为啥还要 OD？就是降成本嘛……”

3）内心够强大吗？虽然没有人会说你是 OD，但总有一些事情会提醒你：**你不是华为员工**。比如：

a) 内部发文啥的，还有心声平台的大部分内容，都是无权限看的：

![](https://oss.javaguide.cn/github/javaguide/high-quality-technical-articles/personal-experience/1438655-20210124225007848-1701355006.png)

b) 你的考勤是在租赁人员管理系统里考核，绩效管理也是；

c) 自有员工的工卡具有消费功能（包括刷夜宵），OD 的工卡不能消费，需要办个消费卡，而且夜宵只能通过手机软件领取（自有员工是用工卡领的）；

d) 你的加班一定要提加班申请电子流换 Double 薪资，不然只能换调休，离职时没时间调休也换不来 Double —— 而华为员工即使自己主动离职，也是有 N+1，以及加班时间换成 Double 薪资的；

### 网传的 OD 转华为正编，真的假的？

这个放到单独的一节，是因为它很重要，有很多纠结的同学在关注这个问题。

**答案是：真的。**

据各类非官方渠道（比如知乎上的一些分享），转华为自有是有条件的（https://www.zhihu.com/question/356592219/answer/1562692667）：

1）入职时间：一年以上
2）绩效要求：连续两次绩效 A
3）认证要求：通过可信专业级认证
4）其他条件：根据业务部门的人员需求及指标要求确定

说说这些条件吧 😃

**条件 2 连续两次绩效 A**

上面链接里的说法：

> 绩效 A 大约占整个部门的前 10%，连续两次 A 的意思就是一年里两次考评都排在部门前 10%，能做到这样的在华为属于火车头，这种难得的绩效会舍得分给一个租赁人员吗？

OD 同学能拿到 A 吗？不知道，我入职晚，都没有经历一个完整的绩效考评。

（20210605 更新下）一年多了，还留着的 OD 同学告知我：OD 是单独评绩效的，能拿到 A 的比例，大概是 1/5，对应的年终奖就是 4 个月；绩效是 B，年终奖就是 2 个月。

在我看来，在试用期答辩时，能拿 A，接下来半年的绩效大概率也是拿 A 的。

但总的来说，这种事既看实力，又看劳动态度（能不能拼命三郎疯狂加班），还要看运气（主管对你是不是认可）……

**条件 3 通过可信专业级认证**

可信专业级认证考试是啥？华为在推动技术人员的可信认证，算是一项安全合规的工作。
专业级有哪些考试呢？共有四门：

- 科目一：上级编程，对比力扣 2 道中等、1 道困难；
- 科目二：编程知识与应用，考察基础的编程语言知识等；
- 科目三：安全编程、质量、隐私，还有开发者测试等；
- 科目四：重构知识，包括设计模式、代码重构等。

上面这些，每一门单季度只能考一次（好像有些一年只能考 3 次），每个都要准备，少则 3 天，多则 1 星期，不准备，基本都过不了。
我在 4 个月左右、还没转正的时候，就考过了专业级的科目二、三、四，只剩科目一大半年都没过（算法确实太菜了 😂
但也有同事没准备，连着好几次都没通过。

**条件 4 部门人员需求指标？**

这个听起来都感觉很玄学。还是那句话，实力和运气到了，应该可以的！成功转正员工图镇楼：

![](https://oss.javaguide.cn/github/javaguide/high-quality-technical-articles/personal-experience/1438655-20210124231943817-1976130336.jpg)

### 真的感谢 OD，也感谢华为

运气很好，在我换工作还不到 3 个月的时候，华为还收我。

我遇到了很好的主管，起码在工作时间，感觉跟兄长一样指导、帮助我；

分配给我的导师，是我工作以来认识到技术实力最厉害的人，定位问题思路清晰，编码实力强悍，全局思考问题、制定方案……

小组、部门的同学都很 nice，9 个多月里，我基本每天都跟打了鸡血一样，现在想想，也不知道当时为什么会那么积极有干劲 😂

从个人能力上来讲，我是进不去华为的（心里还是有点数的 😂）。正是有了 OD 这个渠道，才有机会切身感受华为的工作氛围，也学到了很多软技能：

- 积极主动，勇于承担尝试，好工作要抢过来自己做；
- 及时同步工作进展，包括已完成、待完成，存在的风险困难等内容，要让领导知道你的工作情况；
- 勤于总结提炼输出，形成个人 DNA，利人利己；
- 有不懂的可以随时找人问，脸皮要厚，虚心求教；
- 不管多忙，所有的会议，不论大小，都要有会议纪要，邮件发给相关人……

再次感谢，大家都加油，向很牛掰很牛掰前进 💪

## 投简历，找面试官求虐

20 年 11 月初的一天，在同事们讨论“某某被其他公司高薪挖去了，钱景无限”的消息。

我忽然惊觉，自己来到华为半年多，除了熟悉内部的系统和流程，好像没有什么成长和进步？

不禁反思：只有厉害的人才会被挖，现在这个状态的我，在市场上值几个钱？

刚好想起了之前的一个同事在离职聚会上分享的经验：

> 技术人不能闭门造车，要多交流，多看看外面的动态。
>
> 如果感觉自己太安逸了，那就把简历挂出去，去了解其他公司用的是什么技术，他们更关注哪些痛点？面几次你就有方向了。

这时候起了个念头：找面试官求虐，以此来鞭策自己，进而更好地制定学习方向。

于是我重新下载了某聘软件，在首页推荐里投了几家公司。

## 开始面试

11 月 10 号投的简历，当天就有 2 家预约了 11 号下午的线上面试，其中就有鹅厂 🐧

好巧不巧，10 号晚上要双十一业务保障，一直到第二天凌晨 2 点半才下班。

熬夜太伤身，还好能申请调休一天，也省去了找借口请假 🙊

这段时间集中面了 3 家：

> 第 1 个是广州的公司，11 号当晚就完成了 2 轮线上面试，开得有点低，就婉拒了；
> 第 2 个就是本文的重点——鹅厂；
> 第 3 个是做跨境电商的公司，一面就跪（恭喜它荣升为“在我有限的工作经历中，面试体验最差的 2 家公司之一”🙂️）

## 鹅厂，去还是不去？

一直有一个大厂梦，奈何菜鸟一枚，之前试过好几次，都跪在技术面了。

所以想了个曲线救国的方法：先在其他单位积累着，有机会了再争取大厂的机会 💪

很幸运，也很猝不及防，这次竟然通过了鹅厂的所有面试。

虽然已到年底，但是要是错过这么难得的机会，下次就不知道什么时候才能再通关了。

所以，**年后拿到年终再跳槽 vs 已到手的鹅厂 Offer，我选择了后者 😄**

## 我的鹅厂面试

如本文标题所说，16 天通关五轮面试，第 17 天，我终于收到了期盼已久的鹅厂 Offer。

做技术的同学，可能会对鹅厂的面试很好奇，他们都会问哪些问题呢？

我应聘的是大数据开发（Java）岗位，接下来对我的面试做个梳理，也给想来鹅厂的同学们一个参考 😊

> 几乎所有问题都能在网络上找到很详细的答案。
> 篇幅有限，这里只写题目和一些引申的问题。

### 技术一面

#### Java 语言相关

1、对 Java 的类加载器有没有了解？如何自定义类加载器？

> 引申：一个类能被加载多次吗？`java/javax` 包下的类会被加载多次吗？

2、Java 中要怎么创建一个对象 🐘？

3、对多线程有了解吗？在什么场景下需要使用多线程？

> 引申：对 **线程安全** 的认识；对线程池的了解，以及各个线程池的适用场景。

4、对垃圾回收的了解？

5、对 JVM 分代的了解？

6、NIO 的了解？用过 RandomAccessFile 吗？

> 引申：对 **同步、异步，阻塞、非阻塞** 的理解？
>
> 多路复用 IO 的优势？

7、ArrayList 和 LinkedList 的区别？各自的适用场景？

8、实现一个 Hash 集合，需要考虑哪些因素？

> 引申：JDK 对 HashMap 的设计关键点，比如初识容量，扩所容，链表转红黑树，以及 JDK 7 和 JDK 8 的区别等等。

#### 通用学科相关

1、TCP 的三次握手；

2、Linux 的常用命令，比如：

> ```shell
> ps aux / ps -ef、top C
> df -h、du -sh *、free -g
> vmstat、mpstat、iostat、netstat
> ```

#### 项目框架相关

1、Kafka 和其他 MQ 的区别？它的吞吐量为什么高？

> 消费者主动 pull 数据，目的是：控制消费节奏，还可以重复消费；
>
> 吞吐量高：各 partition 顺序写 IO，批量刷新到磁盘（OS 的 pageCache 负责刷盘，Kafka 不用管），比随机 IO 快；读取数据基于 sendfile 的 Zero Copy；批量数据压缩……

2、Hive 和 SparkSQL 的区别？

3、Ranger 的权限模型、权限对象，鉴权过程，策略如何刷新……

#### 问题定位方法

1、ssh 连接失败，如何定位？

> 是否能 ping 通（DNS 是否正确）、对端端口是否开了防火墙、对端服务是否正常……

2、运行 Java 程序的服务器，CPU 使用率达到 100%，如何定位？

> `ps aux | grep xxx` 或 `jps` 命令找到 Java 的进程号 `pid`，
>
> 然后用 `top -Hp pid` 命令查看其阻塞的线程序号，**将其转换为 16 进制**；
>
> 再通过 `jstack pid` 命令跟踪此 Java 进程的堆栈，搜索上述转换来的 16 进制线程号，即可找到对应的线程名及其堆栈信息……

3、Java 程序发生了内存溢出，如何定位？

> `jmap` 工具查看堆栈信息，看 Eden、Old 区的变化……

### 技术二面

二面主要是过往项目相关的问题：

1、Solr 和 Elasticsearch 的区别 / 优劣？

2、对 Elasticsearch 的优化，它的索引过程，选主过程等问题……

3、项目中遇到的难题，如何解决的？

blabla 有少量的基础问题和一面有重复，还有几个和大数据相关的问题，记不太清了 😅

### 技术三面

这一面是总监面，更多是个人关于职业发展的一些想法，以及在之前公司的成长和收获、对下一份工作的期望等问题。

但也问了几个技术问题。印象比较深的是这个：

> 1 个 1TB 的大文件，每行都只是 1 个数字，无重复，8GB 内存，要怎么对这个文件进行排序？

首先想到的是 MapReduce 的思路，拆分小文件，分批排序，最后合并。

**此时连环追问来了：**

> Q：如何尽可能多的利用内存呢？
>
> A：用位图法的思路，对数字按顺序映射。（对映射方法要有基本的了解）
>
> Q：如果在排好序之后，还需要快速查找呢？
>
> A：可以做索引，类似 Redis 的跳表，通过多级索引提高查找速度。
>
> Q：索引查找的还是文件。要如何才能更多地利用内存呢？
>
> A：那就要添加缓存了，把读取过的数字缓存到内存中。
>
> Q：缓存应该满足什么特点呢？
>
> A：应该使用 LRU 型的缓存。

呼。。。总算是追问完了这道题 😂

---

还有 GM 面和 HR 面，问题都和个人经历相关，这里就略去不表。

## 文末的絮叨

**入职鹅厂已经 1 月有余。不同的岗位，不同的工作内容，也是不同的挑战。**

感受比较深的是，作为程序员，还是要自我驱动，努力提升个人技术能力，横向纵向都要扩充，这样才能走得长远。

<!-- @include: @article-footer.snippet.md -->