2022百度大数据开发工程师实习面试经历
Posted 柳小葱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2022百度大数据开发工程师实习面试经历相关的知识,希望对你有一定的参考价值。
2022年2月28日,我将我改了4遍的简历上传至boss上,还没开始投递,但收到来自百度的hr消息,于是发了一下简历,没过几天便来自百度的面试邀请,直接上图吧。
实习面试:
1. 一面问题
- 自我介绍(正常回答)
- 你博客的电商分析项目中,我看你用到了很多组件,你能说说这些组件都是在干什么吗?(自己博客的项目,一步一步做的,比较熟悉,直接回答了kafka、flink、es、mysql、bi工具)
- 了解hadoop的组件吗?说一说yarn在hadoop中的位置,以及执行作业时yarn的作用?(回答yarn的组成部分和作用)
- 你刚才提到es,你使用过es吗?了解es的原理吗?(不了解,只知道大概,不会写es,因为es的代码和sql很不一样)
- 你会scala吗?(不会,一般都使用pyspark和pyflink,看得懂简单的scala)
- 说一下mapreduce的流程,以统计文本单词数为例?(正常的maptask和reducetask)
- 如果一份数据某个key值数量较多,我们应该怎么办?(规约操作)
- 大表join小表你会怎么处理,小表join大表呢?(mapjoin,小表join大表我犹豫很久回答正常的join就行,面试官说其实两者没有本质区别)
- 和别人相比,你觉得你你自己的优势在哪里,或者说自己的优点?(介绍自己的优点)
- 这些博客都是你自己写的吗?(很确信的回答是的)
最后,面试官说:我应该是你二面的面试官,但是由于流程安排有问题,我成为了你一面的面试官,sql题和python题就不考你了,你等后续的安排吧,一面的面试官会考你题。
一面结束后,当晚就收到了来自百度的二面电话,通知第二天下午3点二面。
2. 二面问题
- 自我介绍
- SQL题:在两张表,表中有3个字段(id,label,date),ID代表的是用户标识,label代表的是标识,date代表日期,我要寻找前后两天id一样,但label不一样的用户id和label(简单的join操作,where判断不同即可)
- SQL题:还是那两张表,这次表的id不唯一,要求出同一id下今日最大的label和昨日最大的label,并进行比较,只取出相等label的id(分组、join、where判断不同即可)
- 会用scala吗?(一面一样的问题,我感觉我要凉了)
- spark的并发数了解吗?怎么进行设置?(这道问题,我其实比较懵,只知道一个task要一个核,回答不太清楚)
- 看你用过es,你会es的命令吗?(一面一样的问题)
- 你知道spark的repartition算子吗?(我说是重分区的算子,可以重新设置分区)
- 我有一个这样的场景,在用spark处理数据的时候,需要很大的并发量,而我写入es时,并发量需要很小,否则容易崩溃,你觉得怎么实现这一过程?(问到这,我其实很慌,因为上面的spark的并发数我没回答出来,然后这里又问到了并发的案例。根据大数据的感觉,我回答在spark端处理的数据可以进行合并,然后合并到一定程度,再写入es。回答完后问我如何合并,我回答可以join呀,就是把数据合并起来。)
- 回答一下:分区数,并发和核心数的关系?(这道题我突然意识到,分区数和核心数到关系,分区数越多,需要处理的核心数越多,然后面试官再问,你觉得准确的关系是什么?我犹豫了一会说到了一对一,一个分区需要一个core。然后面试官说,可以这么回答。)
- 根据上述你回答的关系,你觉得在刚才的场景中,如何实现高并发处理,低并发写入es?(到了这一步,我瞬间豁然开朗,原来分区数决定着core数,core数决定并发,于是把第8题用重分区的方法减小并发说了出来。)
- 根据你的回答,repartition算子应该如何运用在上述过程中?(就是把重分区换成了repartition算子又说了一遍。)
- 除了repartition算子,你还能想到其他的算子能实现这个功能吗?(将比较常见的groupbykey,reducebykey,join产生shuffle的算子说了出来)
- 你知道coalesce算子吗?它合并分区不需要进行shuffle(这个算子我没听过,后面去找了,coalesce算子可以折叠同一个工作节点的分区,比如一个文件text存在rdd的两个分区上,可以使用coalesce折叠为一个分区,避免shuffle。)
- 平时用rdd的情况多吗?(sql较多,偶尔写写dataframe)
- 说一下你的经历吧,在滴滴实习的经历(把三个项目说了说,维度建模、数据开发、拉链表)
- 你能实习多久?(按照自己的情况回答即可)
面试官从头到尾都是很认真的态度,并且我从并发数那道题开始就回答不上来了,但过程中一直在引导我,后面支支吾吾完成了面试,看来自己在spark的运行机制上的理解还是很浅,有必要加强一下自己对spark整个流程的运作这方面的知识。
3. 总结
面试的要手撕的代码倒不难,但是难在对大数据组件的基础理解上,我原本以为作为一个数据开发人员不需要知道spark怎么配置,并行度是如何设置,计算资源是如何分配的,因为大数据开发人员有自己的配置规则,但二面的问题确实比较细,后续过程我会查找资料,将这些题的答案都公布在本博客,欢迎有知道以上问题的小伙伴给我丢链接、资料或者私信我呀!
20220303补充
面试完后,我将我不懂的问题总结了起来,主要是spark并发的一些问题,大家可以参考下面:
以上是关于2022百度大数据开发工程师实习面试经历的主要内容,如果未能解决你的问题,请参考以下文章