本系列博客,会为大家整理一些 OD 面试者经验,素材来源互联网真实面试分享,希望对大家有所启发。
为了更好的通过 OD 机试,欢迎订阅对应专栏
🤩🤩 特别提醒,订阅专栏前一定要看好题解语言哦~
- 🖐️华为 OD 机考 Python https://blog.youkuaiyun.com/hihell/category_12199275.html
- 🖐️华为 OD 机考 C++ https://blog.youkuaiyun.com/hihell/category_12199283.html
- 🖐️华为 OD 机考真 C 语言 https://blog.youkuaiyun.com/hihell/category_12225286.html
- 🖐️华为 OD 机考 JAVA https://blog.youkuaiyun.com/hihell/category_12201821.html
- 🖐️华为 OD 机考 JS https://blog.youkuaiyun.com/hihell/category_12201825.html
- 🖐️华为 OD 机考 Golang https://blog.youkuaiyun.com/hihell/category_12231589.html
23 届硕士面试华为 OD 的经历
个人情况:23 届硕,大数据方向,之前在导师安排下在某行北分实习一年,主要做些报表开发,后在字节实习半年做数据仓库,没有 HC 就没法转正,2023 春招签约联洋国融,7 月初入职,8.3 被裁,理由:公司降本增效。
面试前:听 HR 说华为 OD 是按照招聘者选择开发语言进行面试的,之前实习主要做数据仓库,好久没碰 Java 了,顿时紧张起来…
笔试机考(不到 300,有个题实在想不出用例)+性格测试
技术一面(2023-08-23):
1.为什么没在字节转正
行情不好,没有 HC
2.讲一下常见的数据结构
顺序表,链表,然后讲了下他们的区别;栈,队列;树,图,大致讲了些常见的种类。
面试官又问了下队列,刚才应该是跟招聘部门联系了,没太注意我说,然后又问了堆(这个是我忘了说),接着说跟招聘部门沟通了,主要是做大数据相关,问些大数据相关知识(心里窃喜)
3.讲一下大数据的三驾马车
讲了 Hadoop 的 HDFS、MapReduce 和 Yarn(我相信大多数人都会这样讲)。面试官说 Yarn 和 MR 应该属于一驾马车,让我想想还有没,然后给我说还有一驾马车是 HBASE,我心里想着是不是面试官不是做大数据的所以不太懂呀,后来搜了下,小丑竟是我自己最早学习 Hadoop 时确实看过大数据的发展史,但那么久早忘完了,大数据的三家马车基于 Google 发表的三篇论文:分布式文件系统 GFS、大数据分布式计算框架 MapReduce 和 NoSQL 数据库系统 BigTable。具体有兴趣的可以自行 查阅相关知识。
4.刚才你讲的 HDFS 中,除了三副本存储之外,还知道哪些保证高可靠性的技术?
一开始说了校验和保证数据的正确性,但面试官想要的不是这个结果,想起了 Hadoop3.0 有个纠错码技术,节省存储成本同时还可以通过算法恢复丢失的部分数据,面试官应该想要这个答案,说了个类似得技术,名字没听过,但技术类似。
5.MapReduce 存在的问题怎么解决?
刚开始以为问的点是 Shuffle 的痛点,答了一些优化知识,后来发现面试官想要的答案是 Spark 等较新的技术对 MR 的优化部分,就是 Shuffle 是不可避免的,把中间结果落盘存储改到内存中;还提了下 Tez 引擎,最后听面试官的话应该直接说 Spark 为什么 MR 快,模型、计算等方面。
6.Spark 调度过程
简单打了下任务的提交,StageSchedule、TaskSchedule 以及资源分配
7.Flink 相对 Spark 的优势
Flink 不太了解,就没回答。
8.讲下 HBASE
这点没问具体问题,直接让自己将,就讲了下大概,没往深处将。后来想想还是应该选择一个点往深处讲。
9.谈一下对大数据未来发展方向的看法
一下子高度就拉满了,讲了处理响应时间这一块,后来想了下还可以讲下存储这一块。
10.讲下过去做的项目
11.深度遍历和广度遍历
这个比较简单,还 OK
12.算法题,上台阶
斐波那契数列,用 dp 数组写了之后问还能不能,优化下,就用三个变量滚动式计算节省了空间。
最后又问我斐波那契数列的原理,当场去世…
技术二面(2023-08-25):
这次面试就纯纯 Java 后端的问题了
1.字节实习主要做了哪些内容?
2.遇到哪些问题?
3.对数仓做过哪些优化?
4.有没有接触过一些事务的处理?
实践没接触过,回答了下事务的四大特性,以及 MySQL 中的事务级别。
5.连接池的优点?
减少连接响应时间;面对激增的连接请求有个缓冲作用(专业词:平滑扩展);提供特殊需求(可配置),如单连接连接池。后来查了下,还有个资源复用。
6.讲一下死锁
回答了产生死锁的四大必要条件,想要避免死锁,只需打破其中任意一个条件即可。(进程和线程都可能发生死锁)
7.讲一下知道的 Java 设计模式
23 中设计模式,知道的有单例模式,工厂模式,服务端-客户端模式,观察者模式,后面俩还只是知道
8.讲一下循环的递归的区别
递归就是重复调用自己,需要有个退出条件,如果达不到条件可能一直递归,然后 OOM,循环中每一步的动作都是一样的。然后面试官给讲了下可以从代码的实现,可读性和维护性上分析,这点确实是没考虑到的。
9.进程和线程的区别
通常一个进程包含多个线程;
进程是操作系统分配资源的最小单位(线程是调度和任务执行的最小单位,这句没说出来);
进程内所有线程共享资源(说的不准确,方法空间和代码是共享的,但程序计数器和运行栈是私有的);
进程之间通讯要比较麻烦,而进程内线程通讯相对来说比较简单;
(进程的切换花销要比线程的切换大);
(进程有自己的执行入口,顺序执行序列和执行出口。线程不能独立执行)
10.代码题
N3 的矩阵,列顺序不变,任意挑出 3 行数据能组成对称矩阵,求有几种这样 33 的矩阵。
想到了回溯,但时间关系不敢去尝试,用了暴力遍历。
为了更好的通过 OD 机试,欢迎订阅对应专栏
🔈🔈 特别提醒,订阅专栏前一定要看好题解语言哦~
- 华为 OD 机考 Python https://blog.youkuaiyun.com/hihell/category_12199275.html
- 华为 OD 机考 C++ https://blog.youkuaiyun.com/hihell/category_12199283.html
- 华为 OD 机考真 C 语言 https://blog.youkuaiyun.com/hihell/category_12225286.html
- 华为 OD 机考 JAVA https://blog.youkuaiyun.com/hihell/category_12201821.html
- 华为 OD 机考 JS https://blog.youkuaiyun.com/hihell/category_12201825.html
- 华为 OD 机考 Golang https://blog.youkuaiyun.com/hihell/category_12231589.html
2021 年 普通本科 毕业,工作经验 2 年 java 开发 面试华为 OD
个人情况:2021 年 普通本科 毕业,工作经验 2 年 java 开发
1. 笔试:
第一周周一联系的 hr 给了资料,刷了些相应的牛客题库,周日开始考试 1 题 90%,2 题 100%,3 题 100%
第一题:
题目大概是多个网络设备,可以互相发送消息,设备发送消息给另一个设备之后会收到另一个设备的响应,未收到说明存在故障,现在收集到了这些设备的报文数据,如下:
A B
B C
D C
C D
判断这些设备是否是正常工作
思路:当时并没有读懂想要干什么,按照 设备 A 对 设备 B 发了,设备 B 也必须对 设备 A 发写的,测试用例通过 90%
第二题:
给定字符串数组,求其中所有字符串的最长公共前缀
思路:第一层循环枚举最长公共前缀的长度(0 - n),同时作为最新的答案,第二层枚举每个字符串,该字符串长度比第一层循环枚举的长度大直接返回,该字符串所在相应索引的字符 和 上一个字符串所在同样索引的字符不同 也直接返回
第三题:
给定一个字符串例如 str = “abcFGHtyu(abc)jun(mJHD)uh(Crt)”,只包含 26 字母,每个括号内的字符是等价字符,比如 (abc) -> a、b 和 c 等价,如果两个括号内含有相同字符(忽略大小写的相等),则这两个括号内的字符都是等价的,比如 (abc) 和 (Crt) 存在相同字符 c == C,则 a、b、c、C、r、t 是等价的,需要输出结果 ans,ans 中只保留不在括号内的字符,里面的每个字符如果在某一个等价集合中存在等价的字符(此处相等区分大小写),则将其替换成相应集合中字典序最小的那个字符
思路:单个括号内的字符提取出来放到数组中,data = [[a, b, c], [m, J, H, D], [C, r, t]],然后双重循环利用并查集合并,初始时 parent = [0, 1, 2],合并完成之后变成 parent = [2, 1, 2],之后构建 map<int, list> table,将 data[i] 根据 key = parent[i] 合并到 table[key] 中,最后遍历字符串的每个字符,查看 table 的某个 value 是否有和当前字符相等的字符,有则替换为 value 中最小的字符,无则不替换
2. 性格测试
对接的 hr 会说相应的流程和资料,主要选一些积极向上的选项,注意前后一致(会有相似的),第二周周一测试完成
3. 技术一面
第二周周五 1 面
算法题:给定一个字符串,求不包含重复字符的字串的最大长度,双指针即可
java 垃圾回收机制
线程池
mysql 隔离级别、事务
mysql 优化方式
反问,问了部门常用技术栈
4. 技术二面
第二周周六 2 面
算法题:给一个只包含 (、)、[、]、{、} 的字符串,判断是否是合法的嵌套,用栈就可以了
做过什么项目
项目这个功能的实现流程,用到哪些技术
根据流程的某个点,问一下为什么这么解决
幂等、redis 内存淘汰策略、redis 持久化、分布式事务怎么解决的
反问,问了部门工作的流程
5. 资格面
第三周周一晚上大概 7 点收到资格面电话
主要是为什么离职、期望薪资等,反问多久晋升一次、薪资结构之类的,差不多 10 分钟
6. 主管面
第三周周三下午主管面
主要是工作中遇到过什么困难,怎么解决的,有什么兴趣爱好,之前学习的技术,愿不愿意学习这个工作中需要使用的技术,总体就是积极向上愿意学习的态度去回答,反问问了部门技术栈
7. 第四周周日收到 offer
一个正在面试过程中的华为 OD 分享经验
背景:因为大四下的成绩登记问题学位证晚拿两个月,原公司不愿意等,只能重新找工作。感触良多,记录一下吧。
8.13 联系接口人
8.11 刚接到 Offer 失效通知,emo 中,过了个周末开始找工作,然后又准备其他面试,拖了一段时间才笔试。
8.22 机试
三道题都不难,应该最多中等难度吧。
1.所有(Ai, Bj)数对
同一个数轴 X 上有两个点的集合 A={A1,A2,…,Am}和 B={B1,B2,…,Bn},Ai 和 Bj 均为正整数,A、B 已经按照从小到大排好序,A、B 均不为空,给定一个距离 R(正整数),列出同时满足如下条件的所有(Ai,Bj)数对…
1)Ai<= Bj
2)Ai,Bj 之间的距离小于等于 R 3)在满足 1)2)的情况下,每个 Ai 只需输出距离最小的数对即可 2.数据分类
对一个数据 a 进行分类,分类方法为:此数据 a(四个字节大小)的四个字节相加 % 一个给定的值,如果得到的结果小于一个给定的值 c,则此结果即为数据 a 的类型;如果得到的结果大于或者等于 c,则此结果无效即为数据 a 的类型无效。
比如一个数据 a = 0x01010101,b = 3,按照分类方法计算(0x01 + 0x01 + 0x01 + 0x01)% 3 = 1。所以如果 c = 2,则此 a 的类型是 1,如果 c = 1,则此 a 的类型是无效。
示例 1:
现给定 c = 5,b = 2,数据 a = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}。计算数据最多的类型(有效类型)有多少个数据。
输出:5 3.数据最节约的备份方法
有若干个文件,使用刻录光盘的方式进行备份,假设每张光盘的容量是 500MB,求使用光盘最少的文件分布方式
所有文件的大小都是整数的 MB,且不超过 500MB;文件不能分割、分卷打包
输入:一组文件的大小
输出:使用的最少的光盘数量
8.23 性格综测
没啥好说的,积极向上就完事了,我没怎么注意,感觉有些前后不一致啥的,也过了
8.25 hr 资面(15min)
看了一圈好像华为云的喜欢先 hr 面
纯聊天,问了为啥现在还在找工作,聊期望薪资,工作地点,部门业务,未来发展,建议我好好准备面试他好给我定工资……
8.28 一面(1h30min)
只记得这么些个了
自我介绍
1.聊项目,挑一个最熟悉的介绍。讲了项目背景,项目架构和主要工作。问了消息队列的设计、k8s 的 pod 是什么、计算任务的流转时间、公有云用的谁家的 blabla。然后开始锐评
Q:为什么 SLA 要设得这么短?
A:???甲方要求的
Q:pod 运行状态和任务计算状态为什么放 redis,我觉得 mysql 就行
A:单个任务生命周期有多次状态更新,qps 挺高的,而且需要频繁更新频繁读取做聚合分析。
Q:我觉得没必要,不要为了用技术而用
A:你说得对
Q:用过这个 app 吗
A:没,我就只是个计算平台,业务前台关我啥事
Q:开发也要懂业务啊
A:你说得对
2.做题,自定义排序方式
给定一个数组 data 和数组 sortBy,对 data 数组内的数据按照 sortBy 数组给定的顺序排序,如果数据不在 sortBy 数组内,则按升序排列并放在这些数据之后
示例
输入: data:[3,1,1,3,4,5] sortBy[3,1]
输出: [3,3,1,1,4,5]
想写快排边界没判定好没写出来,写了个冒泡混过去了(气死
ps:面试官觉得我 compare 方法 if 判断太多次,想给我优化一下,想了会没想出来,打个哈哈过了
3.java 基本数据类型
4.Exception 和 error
5.ArrayList 和 LinkedList
6.Set、Map,底层
7.单例模式,怎么防止反射或反序列化攻击
8.如何启动线程
9.线程池,挑几个说说
10.把数组内的偶数排到数组后方,奇数排到前方(口述)
11.try catch finally ++i 啥的问你输出和返回值
12.1g 内存,100g 文件,排序(刚说到一半想了一会就被他打断了
13.反问
8.29 二面(50min)
自我介绍
无情的八股机器,基本只问了 java 相关,计网数据库都没问
做题 二选一
1.判断单向链表是否回文 2.最长公共前缀
没有反问环节
以上内容来自互联网,如有侵权,请联系删除。
为了更好的通过 OD 机试,欢迎订阅对应专栏
🔈🔈 特别提醒,订阅专栏前一定要看好题解语言哦~
- 华为 OD 机考 Python https://blog.youkuaiyun.com/hihell/category_12199275.html
- 华为 OD 机考 C++ https://blog.youkuaiyun.com/hihell/category_12199283.html
- 华为 OD 机考真 C 语言 https://blog.youkuaiyun.com/hihell/category_12225286.html
- 华为 OD 机考 JAVA https://blog.youkuaiyun.com/hihell/category_12201821.html
- 华为 OD 机考 JS https://blog.youkuaiyun.com/hihell/category_12201825.html
- 华为 OD 机考 Golang https://blog.youkuaiyun.com/hihell/category_12231589.html