本以为PDD挂了,结果开了50万SSP

大家好,我是土哥。

2024 届校招已然落下帷幕,互联网大厂为将优秀人才招致麾下,纷纷使出浑身解数。在薪资待遇方面,更是各有千秋 。

这里给大家分享一位2024届求职的小伙伴,PDD 非技术岗拿到 50w 的 SSP offer~

我盆友圈的一个粉丝,之前和土哥交流,说她投递的PDD 上海岗位,从面试完到开奖,中间过了快2个月,本以为都挂了,结果开出了50w,真是高兴了很久。

土哥听到这个消息,替她感到非常高兴,校招生,一入职就已经赢到了起跑线,又有多少同学能拿到这个水平呢?

想起当年土哥的校招薪资,那也比她低好多呀。说多了都是泪。

当然,羡慕别人的同时,我们还是要先学习起来,不管是实习、校招、还是社招,打铁还需自身硬,下面给大家分享一些大数据的面试题,更好的帮助大家,找到一份更好的工作。

Zookeeper 功能

1 你了解 zookeeper 的选举机制吗?

首先,ZooKeeper 是一个分布式协调服务,广泛应用于分布式系统中,用于维护配置信息、命名服务、提供分布式同步以及组服务等。为了保证高可用性,ZooKeeper 通常以集群模式部署。在 ZooKeeper 集群中,通常为 Leader 选举机制。

1 背景

  • Leader:负责处理所有写请求,并向 Followers 发送更新。

  • Follower:接收客户端的读请求;参与投票过程;从 Leader 接收更新。

  • Observer(可选):类似于 Follower,但不参与选举过程。主要用于增加系统的读取吞吐量而不影响写性能。

2 选举触发条件

  • 初始启动时没有指定 Leader。

  • 当前 Leader 失效或与大多数节点失去联系。

  • 系统重启后需要重新选举新的 Leader。

3 选举算法

ZooKeeper 使用一种基于 Fast Leader Election (FLE) 的改进版本来选择其 Leader。这个过程可以分为几个阶段:

a. 投票初始化

每个服务器都开始一个新的选举周期,并给自己投票。每张选票包含三个关键信息:

1、myid:该服务器自己的标识符。

2、zxid:事务ID,反映了该服务器最后处理的一个事务编号。

3、epoch:逻辑时钟值,用来避免旧的信息干扰当前选举。

b. 交换选票

服务器之间通过心跳检测等方式互相发送选票信息。如果发现有比自己更合适的候选者(即具有更大的 zxid 或者相同 zxid 下更大的 myid),则会更改自己的投票给那个候选者,并继续广播这一决定。

c. 收集选票

当某个服务器获得了超过半数的支持票后,它就被认为是新任的 Leader。此时,它将转换状态并通知其他服务器结束选举过程。

d. 宣布结果

一旦确定了 Leader,所有其他服务器都将转变为 Follower 角色,并准备好接受来自新 Leader 的命令。

4 特殊情况处理

  • 如果网络分区导致部分节点无法通信,则只有能够相互通讯的大部分节点才能成功完成选举过程。

  • 在某些情况下,可能因为没有足够的有效投票而导致选举失败,这时整个集群可能会暂时不可用,直到恢复到足够数量的健康节点为止。

Spark lazy

2 spark 的 lazy 体现在哪里?

在 Apache Spark 中,操作分为两种类型:Transformations 和 Actions。

Transformations:这些操作是懒操作,不会立即执行。它们只是记录下要执行的操作,并返回一个新的 RDD(弹性分布式数据集)或 DataFrame/Dataset。常见的 Transformation 操作包括 map, flatMap, filter, reduceByKey 等。

Actions:这些操作会触发实际的计算。当一个 Action 操作被调用时,Spark 会根据之前记录的所有 Transformation 操作来构建一个执行计划,并执行该计划。常见的 Action 操作包括 collect, count, save, foreach 等。

懒加载的意义

1、避免无意义的计算:

  • 减少中间结果:由于 Transformations 是懒操作,只有在需要的时候才会真正执行,因此可以避免生成大量的中间结果。这不仅节省了内存资源,还减少了磁盘 I/O 和网络传输。

  • 优化执行计划:Spark 可以在执行前看到整个操作链,从而进行全局优化。例如,它可以合并多个 Map 操作,或者重新排列操作顺序以提高效率。

2、执行优化:

  • DAG 优化:Spark 使用有向无环图(DAG)来表示计算任务。通过懒加载,Spark 可以在执行前分析整个 DAG,并进行一系列优化,如合并操作、广播变量、分区优化等。

  • 数据局部性:Spark 可以利用数据局部性原则,将计算任务调度到数据所在的节点上,从而减少数据传输开销。

3、容错和重试:

  • 容错机制:懒加载使得 Spark 可以更好地处理故障。如果某个任务失败,Spark 只需要重新计算相关的部分,而不是整个作业。

  • 细粒度重试:由于每个 Transformation 都是独立的,Spark 可以在细粒度级别上进行重试,从而提高系统的可靠性和稳定性。

4、资源管理:

  • 资源利用率:懒加载使得 Spark 可以更灵活地管理资源。它可以根据当前集群的负载情况动态调整任务的执行,从而提高资源利用率。

  • 延迟加载:对于大数据集,懒加载可以避免一次性加载所有数据,而是按需加载,从而减少内存压力。

给个实例:

val data = sc.textFile("input.txt")
val words = data.flatMap(line => line.split(" "))
val wordCounts = words.map(word => (word, 1)).reduceByKey(_ + _)
wordCounts.collect()  // 这是一个 Action 操作,会触发前面所有的 Transformation 操作

在这个示例中,flatMap, map, 和 reduceByKey 都是 Transformation 操作,不会立即执行。只有当 collect 被调用时,才会触发实际的计算。

Paimon 功能

3、paimon 组件你了解吗?有什么功能,解决什么问题?

Paimon 是一个由阿里云开源的流式数据湖存储系统,它为流处理和批处理提供了一种高效的数据存储方案。Paimon 设计的主要目的是解决传统数据湖在实时性、性能以及易用性方面存在的问题。

1 paimon 支持实时更新

  • 主键表支持大规模更新的写入,具有非常高的更新性能,通常通过Flink 流入实时导入

  • 支持多种Merge Engine,可以根据需要更新记录

去重保留最后一行(deduplicate)、部分更新(partial-update)、聚合记录(aggregate)、去重保留第一行(first-row)

  • 支持定义 changelog-producer,在 Merge engine 的更新中生成正确和完整的变更日志,用于支持下游进一步流式增量计算。

2 支持超大非主键表处理能力

  • 支持非主键表的批处理和流式处理能力,自动小文件合并能力

  • 支持使用order, z-order排序进行数据压缩以优化文件布局,基于minmax等索引提供快速查询和data skipping 的能力

3 支持湖格式能力

  • 可扩展的元数据,支持存储PB级大规模数据集和大量分区的存储
  • 支持ACID事务,Time travel 和 Schema evolution

以上就是本次分享的几道面试题~

增值服务

增值服务:简历修改|面试辅导|Flink资料|模拟面试

你好,我是土哥,计算机硕士毕业,现某大厂资深大数据开发工程师。出生在一个 18 线开外的小村庄,通过自己努力毕业一年在新一线城市买房,在社招、校招斩获 28 家中大厂 offer。

土哥社招参加 28 场面试,100% 通过率,拿到全部 offer!

土哥这半年的悲惨人生,经历过被鸽 offer,最终触底反弹~

25 年新的一年,很多公司已经开启了节前面试-年后入职的流程。如果你想跳槽,但苦于一个人孤军奋战、无人指导、复习无从下手,或者不擅长写简历,手上只有拿不出手的毫无难点亮点的项目经历...

那么我的建议是多和身边的大佬沟通,哪怕是付费咨询,只要你能从他身上学到经验,那就是值得的。如果身边没有这样的人,那么我就毛遂自荐一下吧,毕竟,茫茫网络你能看到这篇文章何尝不是一种命运安排。

如果这篇文章对您有所帮助,或者有所启发的话求一键三连:点赞、转发、在看。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/868728.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Win32汇编学习笔记11.游戏辅助的实现

Win32汇编学习笔记11.游戏辅助的实现-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 游戏基址 游戏基址的概念游戏基址是保持恒定的两部分内存地址的一部分并提供一个基准点,从这里可以计算一个字节数据的位置。基址伴随着一个加到基上的偏移值来确定信息准…

黑狂野大数据2

--拉链表 --增量导入是没有overwrite 且加载的是最新分区的数据

others_shellcode 1

其实这题直接nc连一下就可以了。其实考的是系统调用来着 32位程序系统调用号用 eax 储存, 第一 、 二 、 三参数分别在 ebx 、ecx 、edx中储存。 可以用 int 80 汇编指令调用。 64位程序系统调用号用 rax 储存, 第一 、 二 、 三参数分别在 rdi 、rsi 、rdx中储存。 可以用 sys…

一篇解决编译原理大作业,基于Flex、Bison设计编译器(含语法分析树和符号表)

1.工具简单介绍 Flex 和 Bison 是编译器开发中常用的两个工具,分别用于生成词法分析器和语法分析器。它们通常一起使用,共同完成源代码的词法分析和语法分析工作。 Flex: Flex通过读取一个规则文件(通常是.l文件),这个文件中定义了一系列的模式和对应的动作。模式用于匹配…

python 删除txt的前三行并保存原文件

数据 #!usr/bin/env python # -*- coding:utf-8 _*- """@author:Suyue @file:raindrop.py @time:2025/01/$ {DAY} @desc: """ def remove_first_three_lines(file_path):# 读取原始文件的所有行with open(file_path, r, encoding=utf-8) as file…

P3586 [POI2015] Logistyka

P3586 [POI2015] Logistyka 题目描述 维护一个长度为 \(n\) 的序列,一开始都是 \(0\),支持以下两种操作:U k a 将序列中第 \(k\) 个数修改为 \(a\)。 Z c s 在这个序列上,每次选出 \(c\) 个正数,并将它们都减去 \(1\),询问能否进行 \(s\) 次操作。每次询问独立,即每次询…

Java编程规范-命名规范

命名风格 抽象类/异常类/测试类 抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。 数组 中括号是数组类型的一部分,数组定义如下:String[] args。 反例: 使用 String args[] 的方式来定义。 POJO…

go序列化库--msgpack

简介 msgpack是一个基于二进制高效的对象序列化类库,可用于跨语言通信。 它可以像JSON那样,在许多种语言之间交换结构对象。 但是它比JSON更快速也更轻巧。 支持Python、Ruby、Java、C/C++、Go等众多语言。 宣称比Google Protocol Buffers还要快4倍。官方的说法它像 JSON, 但…

图灵完备游戏介绍

怎么从软件到硬件 这个问题对于我来说很难理解。即使我本身是程序员,即使看了很多科普视频,但仍然不知道。硬件是不可变的,软件是多变的,怎么用不变实现变化? 我偶然间看了系统推荐的游戏视频,发现了这个游戏。于是就趁着无聊玩了下。这个游戏展现了怎么从硬件到软件。逻…

推荐4款基于.NET开源、功能强大的CMS建站系统

前言 CMS系统作为一种强大的内容管理工具,在数字化时代发挥着越来越重要的作用。无论是个人博客还是大型企业官网,选择一个合适的CMS都能极大地提高效率和用户体验。今天大姚给大家推荐4款基于.NET开源、免费、功能强大的CMS建站系统,希望可以帮助到有需要的同学。 SSCMS SS…

DVWA靶场CSP Bypass (漏洞绕过) 漏洞通关及源码审计

CSP Bypass CSP Bypass(Content Security Policy Bypass)漏洞涉及的是绕过网站部署的内容安全策略(Content Security Policy,CSP)限制,从而执行潜在的恶意操作。CSP 是一种安全机制,用于防止跨站脚本(XSS)、数据注入攻击等。其通过限制网页能够加载和执行的内容来源…