新闻中心
字节一面大数据开发工程师面试自我介绍技巧与经验分享,大连加强网站建设
1 面试官:简单的做个自我介绍吧
面试官,您好!我叫 xxx 。我于 xxxx 年 x 月从 xxx 学校毕业,学历为 xx 。目前我在 xxx 公司的 xxx 部门就职,职位是大数据开发工程师。我主要从事 xxx 组件以及平台的开发工作。
工作后,我参与了 xxx 项目。我还参与了 xxx 项目。并且我参与了 xxx 项目。通过这些项目,我积累了丰富的项目经验。而且,这 x 个项目都获得了领导的一致好评。
我对 Flink 组件怀有浓厚的兴趣。在工作之余,我常常钻研技术,比如 Flink 的四大基石,还有 Flink 内核应用的提交流程以及 Flink 的调度策略等。
我入职已经 x 年了,并且曾经荣获过优秀员工。这就是我的自我介绍,接下来请面试官提问。
2 面试官:介绍一下你最拿手的项目
我重点来介绍流计算平台。这个平台是对标阿里云的实时计算 Flink 的。它是一个一站式且高性能的大数据计算、分析平台。其底层是基于 Flink 来实现的。平台能提供多种核心功能,还支持多种 、sink 插件。并且内置了统一的元数据管理。同时,它支持一键提交、应用管理、断点调试、监控告警、鉴权等多个核心模块。
我主要负责该平台的 Flink 版本升级工作,将原先的 Flink 1.11.0 升级到 1.14.0。同时,我还对平台进行了架构重构以及代码优化。此外,我参与了核心模块应用管理的工作,也参与了鉴权模块的开发工作。
解决了多部门提交 Flink 任务时需要大量开关配置的问题,解决了版本升级后 SQL 语法校验的问题,解决了应用提交报错的问题,还解决了鉴权问题。
3 面试官: 鉴权能介绍一下吗?是对哪方面进行鉴权?
鉴权是对表级别的读写进行鉴权。
通过 Flink sql 进行调用并解析后获取相关内容,接着判断该表的类型属于 DDL、DML 还是 DQL 中的哪一种,利用自研的 flink-插件去获取信息,从特定的地方提取关键信息,按照约定组成特定格式来进行鉴权,若鉴权成功,就依照 Flink 原生的执行逻辑继续执行下去,若鉴权失败则报出鉴权异常。
为什么要使用 Flink sql 进行鉴权呢?为什么不使用 Hive sql 鉴权呢?又为什么不使用 HDFS 本身的鉴权呢?
该流计算平台底层是以 Flink 来实现的。在鉴权方面,因为编写的 SQL 在提交时要经过 Flink SQL 提交流程,所以在进行鉴权时直接通过 SQL 解析,对拿到的对应的类型进行校验。同时,为了让流计算平台更适配,满足更多业务场景的需求,最终选用了 Flink SQL 鉴权。其实用 Hive SQL 也是能够进行鉴权的。
面试官询问:对于 Flink sql 之前的解析流程是否清楚呢?能否详细地介绍一下。
如下图所示:
Flink sql 调用某一方法,把某种东西转为 Flink 内部的某种形式。在这个过程中主要包含 4 大步骤。
调用 parse() 方法,把 sql 转化为未经校验的 AST 抽象语法树。在解析过程中,主要运用了词法解析以及语法解析。
词法解析会把 sql 语句转变为一组 token,语法解析会对 token 进行递归下降的语法分析。
调用某个方法,把 AST 抽象语法树转化为经过校验的抽象语法树。在校验阶段主要校验两方面的内容:
校验表名、字段名、函数名是否正确,
校验特殊类型是否正确,包括判断是否有 join 操作,以及是否存在嵌套等情况。
调用 rel() 方法,把抽象语法树转变为关系代数树(关系表达式)以及行表达式。在这个过程中,DDL 不会执行 rel 方法,原因是 DDL 实际上是对元数据进行修改,而非涉及复杂查询。
调用()方法,把 进行转化,转化后的内容包含多种类型,不过最终都会生成根节点 。
6 面试官:那在 之后又做了哪些操作?
如下图所示:
在 Flink 内部进行到某个阶段之后,会调用特定的方法把某事物转为另一事物。在这个过程中,经历了以下四大步骤:
调用()方法,首先把 转换成 逻辑计划树,接着再将其对应转换成( 逻辑计划树);
调用()方法把某个东西优化成。在这期间的优化规则包含基于规则的优化 RBO 以及基于代价的优化 CBO。
(3) 调用raph() 方法将物理计划转为 。
(4) 调用() 方法将 转为 。
7 面试官:ROB 里面都了解哪些规则优化?
RBO 规则优化包含了谓词下推,包含了 Join 优化,包含了列裁剪,还包含了分区裁剪等等。
8 面试官:分区裁剪主要解决什么问题?
分区剪裁针对分区表或分区索引而言,优化器能够依据分区键,从 from 和 where 中自动提取出需要访问的分区,这样就避免了对所有分区的扫描,进而降低了 IO 请求。
分区剪裁分为静态分区剪裁和动态分区剪裁。静态分区剪裁在 sql 语句编译阶段发生,动态分区剪裁在 sql 语句执行阶段发生。若分区键是常量值,优化器会走静态分区剪裁;若分区键是变量形式,优化器只会走动态分区剪裁。
面试官询问在 flink sql 中,join 包含哪些类型(主要是引擎层的实现方面)。
在“join”中包含了“join”、“join”、“join”、“join”。
join 包含有 left join 这种连接方式,也包含 right join 这种连接方式,还包含 inner join 这种连接方式,同时包含 full join 这种连接方式。
join 所指的是在时间区间内,两条流之间存在一段时间的 join 情况。
10 面试官:Spark 3.0 优化特性了解不?
了解 Spark 3.0 AQE 自适应查询优化。
AQE 自适应查询包含 3 种优化。其中有动态合并分区。还有动态调整 join 策略。另外有动态优化数据倾斜 join 等。
(1) 动态合并 分区
在 spark 里,前后的分区存在差异。若分区数过少,那么每个分区处理的数据量可能会很大,进而致使大分区处理时需要将数据落盘,使得查询效率变得很低;倘若分区过多,就会导致每个分区处理的数据较少,这样也会使 IO 请求增多,从而降低查询效率。
动态合并的含义是,在 map 端的两个分区经过特定操作后,原本会产生五个分区。然而,由于有两个分区的数据过小,所以直接对这两个分区进行合并操作,最终输出 3 个分区。
(2) 动态调整 join 策略。
包含 3 种 join 策略,分别是 hash join、hash join。
(3) 动态优化数据倾斜 join
面试官询问:假如两张表需要进行 join 操作,但是目前无法满足 hash Join 的要求,那么应该如何处理这种情况,才能够使其达到要求呢?
在.0 AQE 里会动态调整 join 策略。其中有一种情况是 hash join 的性能最佳,而这种情况的前提是参与 join 的一张表的数据能够被装入内存。正因为如此,当 Spark 估计参与 join 的表的数据量小于广播大小的阈值时,它就会把 Join 策略调整为 hash join。
所以当两张表进行 join 操作时,如果 A 表的数据量比广播大小的阈值大,那么就不能选择 hash join 。然而,如果恰好能够通过条件把 A 表的无用数据过滤掉,并且 B 表不包含无用数据,这样过滤掉后的 A 表数据量就会小于广播大小的阈值,在这种情况下就可以选择 hash join 。
12 面试官: 失败有遇到过吗,什么原因导致的?
遇到过这种情况,失败通常与反压相互关联。导致失败的原因主要有以下两个:
1. 数据流动缓慢, 执行时间过长。
我们知道,Flink 机制是以某种方式基于……的。在数据处理期间,它也如同普通数据那般,需在……中排队,等候被处理。倘若……较大或者数据处理较为缓慢,那么它到达算子就需要很长时间,进而触发……。特别是当存在反压情况时,它得在……中流动好几个小时,这就致使……执行时间过长,即便超过了……,依然还未完成,最终导致失败。
当需要对齐算子时,如果一个输入已经到达,那么该输入后面的数据会被阻塞,不能被处理,必须等到其他输入到达之后才能继续处理。在对齐过程中,其他输入数据的处理都要暂停,这会严重影响应用的实时性,使得执行时间过长,超过了规定时间还没有完成,从而导致执行失败。
2. 状态数据过大。
当状态数据过大时,会对每次的时间产生影响。并且在进行某种操作时,IO 压力会很大,导致执行时间过长。如果执行时间过长,就可能出现超时但仍未执行成功的情况,进而导致执行失败。
13 面试官:怎么解决的上述问题?
对于数据流动缓慢 解决思路是:
让 中的数据变少
让 能跳过 中存储的数据。
这对应社区提出的 FLIP-183 的 size 。其解决思路为只缓存配置时间内能够处理的数据量,这样能够很好地进行控制。
关于对齐问题,社区提出了 FLIP-76。其解决思路为:对于实时性要求较高但数据重复性要求低的情况,可采用不对齐模式。在还有其他流尚未到达时,为不影响性能,无需理会,直接处理后续的数据。等到所有流都到达后,就可以对该流进行相关操作。
对于 状态数据过大问题:
FLIP-158 提出了一种通用的增量快照方案,其核心思想是以 state 为基础,能够对状态数据的变化进行细粒度的记录。具体情况如下:
有状态算子会把状态变化写入状态后端,同时还会另外写一份到预写日志里。
预写日志上传到持久化存储后, 确认 完成。
state table 独立于其他部分之外,它会周期性地上传。这些上传到持久存储中的数据被称作物化状态。
上传 state 后,之前的部分预写日志就失去了作用,能够被裁剪掉。
14 面试官:滑动窗口有啥特点?
Flink 支持的窗口具备两个重要属性。一个属性是窗口长度 size,另一个属性是滑动间隔。通过窗口长度和滑动间隔这两个属性,能够区分滚动窗口和滑动窗口。
# 资阳网站官网建设费用
# 自己会做网站怎么做推广
# 营销推广平台公司电话
# 江苏网站建设硬件配置
# 远景营销推广方案范文
# 甘肃省网站建设空间
# 网站推广策略范文
# 昆山网站设计建设
# 南京网站建设找云世家
# 阆中工厂网站建设
# 淘宝网站建设800元
# 字节一面大数据开发工程师面试自我介绍技巧与经验分享
# 营销佣金推广语
# 软文营销的推广文案
# 钦州公司形象网站建设模板
# 深圳专门网站建设公司
# 网站建设小白到精通需要
# 安阳靠谱的推广营销费用
# 义马网站推广优化
# 推广与营销与推销的区别
# 福田品牌营销推广
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
好客搜网站优化公司:诚招代理,提供专业 SEO 优化服务,江苏推广微信小程序网站
如何通过SEO宣传提升网站流量与品牌曝光
金华创杰:专业 SEO 优化公司,为您解析搜索引擎优化的奥秘,山东高效网站建设公司
公司收录:如何通过精准收录提升品牌影响力与市场竞争力
中国电信安徽公司与安徽省住建厅签署战略合作协议,共推数字住建发展,四川抖音营销推广费用
在线发外链,助力网站快速排名提升的秘密武器
前端优化指南:从 head 到 body,提升网站 SEO 效果,电网网站建设方案
如何轻松驾驭“文案洗稿”,实现内容变现的无限可能?
在线用AI,让生活和工作更高效智能
SEO检测,让网站排名飞升的秘密武器
提升关键词排名的 9 种有效办法,外贸人必看,重庆推广策略智能营销工具公司
分类标题:如何为你的产品或服务选择完美的分类?
全球优化:智能时代下的全球资源配置革命
如何通过SEO建站提高网站流量,获得更多曝光?
藤设计建站公司:专注网络营销,助力中小企业实现品牌提升,辽源柳州网站推广
网站 SEO 优化价格大揭秘,收费标准由多因素决定,渝北网站建设哪家好
优化工具:提升工作效率的秘密武器
加大曝光,成就品牌腾飞的秘密武器
如何制定高效的SEO战略,提升网站流量和排名
丽江古城保护管理:举措、维护费征缴使用及未来发展,华润万家营销推广模式
法学专业高校大盘点:山东及省外众多高校等你来,绵阳网站建设模版
如何通过SEO订单提升网站排名,轻松获得精准流量?
网站优化中的内容建设:用户需求与价值提升的关键环节,H的网站建设
SEO笔记:如何打造高效的SEO策略提升网站排名
SEO自从上线后的演变与未来发展趋势
共创小助手:赋能团队创新与协作的全新利器
多站点建站-打造企业数字化布局的全新利器
如何提升搜索排名,让你的网站脱颖而出
商业SEO:助力企业稳步增长的数字营销利器
SEO永远,数字营销的核心力量
如何通过“SEO刷”实现网站排名的飞跃?揭开背后的秘密!
京东业绩再创新高:未来电商巨头的成功之道
关键拓展:开启企业发展新机遇的钥匙
SEO找出网站流量提升的终极策略,带你走向搜索引擎巅峰!
什么是蜘蛛弛?揭秘这个SEO优化背后的神秘工具
如何通过垂直类网站实现精准流量和深度变现
SEO 优化公司现状及问题分析:深度内容创造难,白帽手法慢且贵,酒泉网站建设营销
自适应网站与响应式网站的区别,你真的了解吗?,安达网站建设搭建
SEO获客的秘诀:如何通过搜索引擎优化提升客户获取能力
SEO趋势:2025年搜索引擎优化的未来发展
上海网站建设公司哪家好?选择合适的公司很重要,贵阳ktv网站建设
SEO这样做,轻松引爆流量,助力企业成长
伪免费时代:真正的“免费”背后隐藏的秘密
SEO如何通过正确的SEO策略引爆你的流量与排名
SEO要素:优化网站排名的关键因素全解析
如何轻松解决搜狗死链问题,提升网站搜索引擎排名
稻城亚丁景区拟确定为国家 5A 级旅游景区,你去过吗?,毕节手机网站建设机构
动生成-科技与创意的完美融合,开启未来之门
企业建设网站一般要多少钱?基础型和中端型网站费用大揭秘,常山网站推广电话多少
普通企业网站建站费用大揭秘,快来看看你需要准备多少钱,崇明区产品推广营销招聘


2025-02-26
浏览次数:次
返回列表