外贸公司用什么建网站,速度啊网站,网页设计实验心得,网站建设最低多少钱一闪在摸爬滚打了数年后#xff0c;结合去年获得了个优秀员工#xff0c;现在负责数据开发一面。
神州员工#xff1a;一闪#xff0c;你们还缺人不#xff0c;不想当外包了。
一闪#xff1a;我只负责招开发#xff0c;实施的招聘我参与不了哇。#xff08;所以你能…一闪在摸爬滚打了数年后结合去年获得了个优秀员工现在负责数据开发一面。
神州员工一闪你们还缺人不不想当外包了。
一闪我只负责招开发实施的招聘我参与不了哇。所以你能不能练练普通话广普听着总是怪怪的 老员工一闪今天下午一点半面试一个甲方的中级开发招进来写Flink。
一闪又可以摸鱼了简历发我看看。
-- 5年工作经验简历中规中矩应该是个老实人。熟悉的语言是Java那么就不问Scala了打工人何苦为难打工人面试搞得花里胡哨没意思。不过是甲方面试还是要谨慎些不能和面试外包一样捣糨糊了 一闪早早的就到了会议室进入了腾讯会议等着受害人小伙子上线。结果小伙子刚进入腾讯会议人资小姐姐也进了会议室坐在了一闪的边上。看来最近行业确实不好招个中级开发都需要hr监督了。不要问hr小姐姐好不好看问就是好看
以下省略双方一段客套话和自我介绍 一闪今天我们主要就是从三个方面来做这个面试
①我看你简历上是熟悉Java所以我会和你简单聊一下有关的知识。
②我们这个岗位主要是负责之后我们实时模块的开发所以考察一下你Flink有关的技术。
③我看你是有5年的工作经验咱们还可以分享一下在项目中遇到的一些特殊场景互相学习下。
总之我们气氛是比较轻松的不用紧张。
小伙好的好的。
一闪在你开发的时候一般是怎么创建线程池的
小伙公司里是强制要求使用ThreadPoolExecutor的。这个方式也比较方便。
一闪具体聊聊呢比如说其他的方式有什么不足这个方式好在哪里呢这小伙咋话只说一半 小伙这个方式的灵活性比较高可以自定义一些参数其他的方式做不到。而且阿里的开发手册里面也要求了不能使用Executor提供的工厂类。
-- 卧槽内心一震看了看小伙的简历这小伙也不是阿里出来的啊看来有点东西。
一闪接下来问的问题你可以适当拓展一下需要详细沟通的地方我会再追问你一下哈。各位家人面试一定要学会拓展一个helloworld也能拓展到reflect咱们聊聊你在现在的工作中实时数仓的架构吧包括上下游和用到了哪些技术
小伙上游接的是kafka Topic相当于是ods层。然后通过flink计算输出了cdm层和ads层然后将结果数据存到了olap数据库clickhouse。在cdm层中我们使用了旁路缓存来关联维表提高了效率也使用到了CEP技术来处理复杂的事件。举个例子吧我们比如说要算一个商品的实时营收我们先从kafka topic里面把订单数据拿出来然后通过interval join把订单主子表合并关联维度再将数据聚合到我们想要的维度然后clickhouse中的表设置主键模型我们把结果数据直接写入然后给前端展示就ok了。此外我们还实现了精准一次性。
一闪(感觉还行啊)那你举例了一个商品营收的指标那这个商品的营收金额其实就是这个商品的一个state吧讲讲你对于flink中state的理解呢
小伙大类就分成键控和算子两种类型吧state就是存在状态后端的故障恢复的时候都会用的到。
AI大模型给出的答案↓可供参考在 Apache Flink 中State状态是指在流处理应用程序中维护和管理的数据。State 允许应用程序存储和访问与特定键相关联的数据以便跟踪和处理输入流中的信息。State 可以在不同的操作之间共享和传递使得 Flink 应用能够处理更加复杂的业务逻辑和状态管理。
具体来说Flink 中的 State 分为两种类型
Keyed State键控状态 Keyed State 是与特定键key相关联的状态。在 Flink 中数据流被划分为不同的 key 分区同一个 key 的所有数据会被分配到同一个任务处理。Keyed State 可以存储每个 key 对应的数据以便在处理过程中进行访问和更新。常见的 Keyed State 类型包括 ValueState、ListState、MapState 和 ReducingState。
Operator State算子状态 Operator State 是与整个操作符operator相关联的状态。Operator State 可用于在同一操作符的不同子任务之间共享状态信息或者在操作符重启时恢复状态。常见的 Operator State 类型包括 ListState 和 BroadcastState。
在 Flink 应用程序中State 起着重要的作用可以用来实现状态管理、窗口操作、事件处理和容错恢复等功能。通过使用 StateFlink 应用可以跟踪和维护数据流中的状态信息以实现高效、可靠的流处理逻辑。
需要注意的是State 在 Flink 中是有状态后端State Backend支持的State 可以被存储在内存、文件系统或外部存储中以便实现高性能和可靠性的状态管理。通过合理选择和配置状态后端可以满足不同场景下的状态管理需求。
-- 叼毛这小伙展开说说能少两斤肉吗不过讲的倒也没错
一闪那你提到了故障恢复你们一般面对flink故障的话是如何处理的呢
小伙就直接从最新状态恢复的因为我们都有配置checkpoint。
一闪那你了解savepoint吗它和ck有啥异同
小伙这个听说过具体倒不是很了解。。。。
AI大模型给出的答案↓可供参考
在 Apache Flink 中Savepoint保存点和Checkpoint检查点是两种不同的机制用于实现容错和恢复的功能。它们之间的主要异同点如下相同点
1. 容错机制Savepoint 和 Checkpoint 都是用于实现容错性即在发生故障时能够恢复应用程序的状态并继续处理数据。
2. 状态快照Savepoint 和 Checkpoint 都会对应用程序的状态进行快照保存数据流处理过程中的状态信息。不同点
1. 触发方式- Checkpoint Checkpoint 是由 Flink 自动周期性触发的用于持久化应用程序的状态。Checkpoint 可以配置间隔时间和条件例如基于记录数或时间间隔。- Savepoint Savepoint 是由用户手动触发的用于主动保存应用程序的状态。用户可以在需要时手动创建 Savepoint通常用于应用程序更新、迁移或调试等场景。2. 存储位置- Checkpoint Checkpoint 的状态信息通常存储在配置的状态后端State Backend中如内存、文件系统或远程存储。- Savepoint Savepoint 的状态信息会被持久化到可靠的持久化存储介质如分布式文件系统以便长期保存状态并支持应用程序的恢复。3. 作用范围- Checkpoint Checkpoint 主要用于实现应用程序的容错性并在故障恢复时使用。Checkpoint 通常是短期保存不适用于长期保存状态或应用更新。- Savepoint Savepoint 主要用于保存应用程序的状态可以被长期保存并用于应用程序更新、迁移、降级、调试等场景。总的来说Checkpoint 是 Flink 内部使用的容错机制用于实现应用程序的容错性和故障恢复而 Savepoint 则是由用户主动触发的保存点机制可以用于保存应用程序状态以支持应用程序的更新和管理。两者共同为 Flink 提供了强大的容错和状态管理能力。
一闪那你刚刚还提到了主子表关联聊聊你在flink中多流关联的实践呢
这个问题小伙回答的有点烂我就直接展示大模型的答案吧↓
AI大模型给出的答案↓可供参考
Flink 的 Join Hint 用于优化 Join 操作的执行策略。通过提供 Hint你可以指导 Flink 选择更合适的执行计划从而提高 Join 的性能。Flink 主要支持以下几种 Join HintBROADCAST_HASH_FIRST(table1) 将 table1 广播到所有参与 Join 的节点上并使用 Hash Join 算法。这种方式适用于 table1 数据量较小的情况可以避免数据 shuffle从而提高 Join 效率。BROADCAST_HASH_SECOND(table2) 将 table2 广播到所有参与 Join 的节点上并使用 Hash Join 算法。这种方式适用于 table2 数据量较小的情况。REPARTITION_HASH_FIRST(table1) 对 table1 进行重新分区并使用 Hash Join 算法。这种方式适用于 table1 数据量较大且数据分布不均匀的情况。REPARTITION_HASH_SECOND(table2) 对 table2 进行重新分区并使用 Hash Join 算法。这种方式适用于 table2 数据量较大且数据分布不均匀的情况。REPARTITION_SORT_MERGE_JOIN(table1, table2) 对 table1 和 table2 进行重新分区并使用 Sort-Merge Join 算法。这种方式适用于 table1 和 table2 数据量都较大的情况。使用方法在 Flink SQL 中你可以使用 /* ... */ 的语法来添加 Join Hint。例如sql
SELECT *
FROM table1
/* BROADCAST_HASH_FIRST(table1) */ -- 将 table1 广播
JOIN table2
ON table1.id table2.id;SELECT *
FROM tableA
/* REPARTITION_SORT_MERGE_JOIN(tableA, tableB) */ -- 使用 Sort-Merge Join
JOIN tableB
ON tableA.key tableB.key;
注意事项Join Hint 只是建议Flink 并不保证一定会按照 Hint 的指示执行。Flink 的优化器会根据实际情况选择最优的执行计划。
使用不当的 Join Hint 可能会降低性能。因此在使用 Join Hint 之前最好先进行测试和评估。
并非所有版本的 Flink 都支持所有类型的 Join Hint请参考 Flink 官方文档了解所使用版本的具体支持情况。
通过合理地使用 Join Hint可以帮助 Flink 优化 Join 操作提高应用程序的性能。 建议根据具体的数据量和数据分布情况选择合适的 Join Hint。 实际应用中可以通过观察执行计划和性能指标来判断 Join Hint 是否有效。
----------
后面还扯了些有的没的如果是高级开发那我肯定就否了但是中级开发我觉得要求没那么高我就给通过了.............
----------
后来小伙被人资小姐姐确定为培训班出身工作经验是假的毫不犹豫地pass了.......
老程序员二面面试官年轻人抬手不是抱歉是你还得练。
----------
后话面试一定要聊深点最好还能带上点源码说不定就把我这个年轻人唬住了呢。