当前位置: 首页 > 面试经验 >

华为OD面试

优质
小牛编辑
96浏览
2023-08-28

华为OD面试

个人情况:23届硕,大数据方向,之前在导师安排下在某行北分实习一年,主要做些报表开发,后在字节实习半年做数据仓库,没有HC就没法转正,2023春招签约联洋国融,7月初入职,8.3被裁,理由:公司降本增效。找工作ing......

面试前:听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.代码题

N*3的矩阵,列顺序不变,任意挑出3行数据能组成对称矩阵,求有几种这样3*3的矩阵。

想到了回溯,但时间关系不敢去尝试,用了暴力遍历。

----------------------------------------------------------------------------------------------

二面过了之后HR说评级B级,技术定级不透漏,最高给到15k,接受不了就给拒了

#面经#
 类似资料: