大数据开发面试笔记Day1

面试优先级

眼前一亮的人:所有项目都需要能快速入手开发的年轻人,而这种能力一定程度上来自于对开源项目的贡献;另外,找到该公司该部门的研发重点,以及与周围部门的协同研发项目,如果某一个项目碰巧非常适合你并且急缺人手时,就必定录取。

必备项:计算机各种基础、面试题、java、大数据相关知识、实际代码算法能力与代码风格。

对开源项目的贡献

对开源项目的贡献,作者经验匮乏,也是第一次听到,所以进行以下查询。对于大数据开发和其他软件开发领域来说,对开源项目的贡献通常包括以下几个方面:

  1. 代码贡献:这是最直接的贡献方式,包括修复已知的bug、添加新功能、优化现有代码等。这也太特么难了……

  2. 文档编写和翻译:为项目提供详细的使用说明、开发文档、API文档等,并进行翻译,使之适应不同语言的用户。这个其实,可以写写自己的文档之类的,管它采不采纳。

  3. 问题反馈:在使用开源项目的过程中,积极地报告遇到的问题或bug,这也是对项目的一种贡献。这个可以有,但是区分是它有bug还是自己有bug是一件难事……

  4. 参与讨论:在项目的讨论区、邮件列表或其他社区渠道,参与关于该项目的讨论,提供自己的见解和建议。

  5. 推广和宣传:为开源项目提供宣传,如撰写博客、进行技术分享、在各种会议或活动中介绍项目等。这个好,这个好啊!大家快来写!!

  6. 赞助和捐赠:一些大型的开源项目也接受资金捐赠或硬件赞助,来帮助项目的持续发展。

对于大学生来说,如何培养对开源项目的贡献能力:

  1. 选择感兴趣的项目:开始之前,先找一个自己感兴趣的大数据开源项目,如Hadoop、Spark、Flink等。

  2. 深入了解该项目:从官方文档开始,系统地学习该项目的基本概念、使用方法和架构设计等。

  3. 积极参与社区:加入该项目的邮件列表、GitHub仓库、社区论坛等,积极参与讨论,了解社区的最新动态。

  4. 从小事做起:初次参与开源项目时,可以从文档的修正、翻译或简单的bug修复开始,逐渐积累经验。

  5. 勇于提出建议:在使用或学习开源项目的过程中,如果有任何建议或看法,不要害怕提出来。即使建议最后没有被采纳,这也是一个与社区交流的好机会。

  6. 持续学习:大数据领域的技术更新迭代速度很快,持续学习是非常重要的。可以关注相关的博客、教程、书籍等,不断提高自己的技术水平。

  7. 实际项目经验:尝试在自己的课程项目或实习中使用开源项目,这样可以更加深入地理解项目,也更容易找到可以贡献的地方。作者也在有意无意地使用过hive等项目,感觉实用一次,就有一次的收获。

可以自己准备一个大数据全栈的demo项目,很多人都是这样,要理解、了解项目使用到的各种组件,然后准备好面试比较常见的问题。这个要求不高,面试的重点就是看一下回答的流畅度还有对于大数据组件的了解程度是怎么样的。


对于询问分布式的问题的准备

直接说:个人实现过在单台服务器上模拟部署分布式集群。

这不是和作者学Redis集群搭建一毛一样吗?其实道理都是一样的,只不过大多数人是没有很多性能好的服务器的,所以这么说就可以。


短时间内找工作必做准备

项目打磨

即使工作和生活再忙碌,为了更好地展示自己的技能和经验,也应该为自己的项目留出至少半个月到一个月的时间进行打磨。一个精心准备的项目不仅可以增加自信,还可以在面试中为你加分。

准备八股文问题

所谓的“八股文问题”指的是那些几乎在每场面试中都会被问到的标准问题。

比如:“你为什么离开上一份工作?”、“你的长期职业规划是什么?”等。对这些问题的回答应该早早准备,思考清晰,避免在面试中临时组织语言。

查找公司技术公众号

  • 了解面试公司是否有技术公众号,这些公众号通常会分享该公司的最新技术动态和成果。这些信息对于面试非常有价值,因为它可以帮助你了解公司的技术方向和重点。
  • 一方面,你可以向面试官展示你对公司的关注度,表示你对公司的技术动态和成果很感兴趣。
  • 另一方面,这些信息也可以帮助引导面试官到我们所准备的技术方向,在面试中能够更好地与面试官沟通,因为我们已经了解了他们的技术方向和重点。

面试策略:信息战

  • 面试不仅仅是一个技术交流的过程,更是一个信息战。了解面试公司的技术方向和重点可以帮助你更好地准备面试,因为你已经知道了他们关心什么,希望找到怎样的人才。
  • 公众号中的信息往往比网络上的面经更有价值,因为公众号中的信息通常是公司官方的,更加准确和权威。

简历定制

  • 不同的职位对于技能和经验的要求可能会有所不同,因此,根据面试的职位对简历进行适当的修改和优化是非常有必要的。
  • 例如,如果你应聘的是一个前端开发职位,那么在简历中突出你的前端开发经验和技能会更加有利于你的面试。
  • 另外,简历中的信息应该简洁明了,突出重点,避免包含与应聘职位不相关的信息,这样可以更好地吸引面试官的注意。简历根据面试职位修改会提高命中率,不要喧宾夺主。

Java开发如何准备大数据相关组件知识及其他加分项

准备大数据相关的组件知识:

  • Hadoop: 作为大数据处理的标准框架,Hadoop的HDFS和MapReduce是大数据开发的基础。学习Hadoop的架构、原理以及实际应用场景是至关重要的。

  • Spark: Spark现在被广泛地用于大数据处理,比传统的MapReduce更快。你应该了解Spark的基本概念,例如RDD、DataFrame、DataSet以及Spark的计算模型。Flink也非常火爆!

  • Hive和Pig: 这两个组件都是建立在Hadoop之上的数据处理工具。Hive是一个基于SQL的数据仓库工具,而Pig是一个高级脚本语言。对它们的基本概念和使用方法都应该有所了解。

  • Kafka: 作为一个实时数据流处理平台,Kafka现在是许多大数据应用中的关键组件。了解Kafka的基本原理、架构以及如何生产和消费数据是很重要的。

  • 其他组件: 根据所应聘的职位,可能还需要了解其他组件,例如Flume、Sqoop、Zookeeper等。

进一步提升

  • 实践经验: 只是理论知识可能不足以应对面试。建议通过亲自搭建环境,运行样例程序或者参与实际的项目来获得实践经验。

  • 性能优化: 大数据组件的性能优化是一个重要的话题。了解如何配置和调优这些组件可以显著提高你在面试中的竞争力。

下面是简单常见的大数据组件性能优化知识:

Hadoop MapReduce性能优化
  • 调整内存设置:根据可用内存,为Map和Reduce任务设置合适的内存大小,避免频繁的垃圾回收。

  • 控制并发任务数量:在ResourceManager中,调整yarn.nodemanager.resource.cpu-vcoresyarn.nodemanager.resource.memory-mb来更有效地分配资源。

  • 选择合适的数据格式:例如,选择Parquet或ORC而不是纯文本,可以大大提高I/O效率可以,hudi就是这么办的!

  • 合理的分区和分桶:基于数据的访问模式,为Hive表进行合适的分区和分桶

  • 压缩中间数据:设置mapreduce.map.output.compresstrue,以减少磁盘和网络I/O。其实也和hudi有关。

Spark性能优化
  • 内存和核心管理:调整spark.executor.memory, spark.executor.coresspark.driver.memory来为Spark任务配置适当的资源。

  • 数据序列化使用Kryo序列化,它比Java序列化更快、更紧凑。通过设置spark.serializerorg.apache.spark.serializer.KryoSerializer

  • 广播大变量:如果一个变量需要在多个节点上使用,使用sparkContext.broadcast来广播这个变量,以减少数据的传输。

  • 持久化策略:当需要多次使用一个RDD或DataFrame时,考虑使用persist()cache()方法来持久化它们。

  • 避免数据倾斜:在进行连接、聚合或其他操作时,识别和处理数据倾斜。

Kafka性能优化
  • 调整分区数量:增加更多的分区可以并行处理更多的消息。

  • 使用合适的压缩技术:设置producer.compression.typegzip, snappylz4,可以在带宽和CPU使用之间取得平衡。

  • 批量发送消息:通过增加batch.sizelinger.ms来允许生产者批量发送消息,从而减少网络调用。

  • 增加消费者组的消费者数量:这可以并行处理更多的消息,但要确保分区数量大于或等于消费者数量。

  • 调整日志保留策略:基于时间或大小设置日志的保留策略,确保不会因为日志太多而耗尽磁盘空间。

总结:数据存储方式、空间压缩分配、增加变量或角色的作用持续时间和范围、减少其他非IO工作占用资源比例。

扩展到云原生和k8s

  • 云原生: 了解云原生的概念,如微服务、容器、CI/CD等,并了解它们如何与大数据组件结合。

  • Kubernetes (k8s): Kubernetes现在是容器编排的标准工具,对其基本概念、组件以及如何部署和管理应用都应该有所了解。

面试准备和策略

  • 简历深挖: 面试官会深入地审查你的简历,因此确保你的简历中提到的每一项技术和经验都是你真正掌握的。准备好与简历中提到的每一项相关的问题和答案。

  • 应届生和实习生: 尽管你可能缺乏工作经验,但是对于基础知识的深入理解和热情是很重要的。展示你的学习能力和解决问题的方法可能比实际的工作经验更重要。

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

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

相关文章

TouchGFX之后端通信

在大多数应用中,UI需以某种方式连接到系统的其余部分,并发送和接收数据。 它可能会与硬件外设(传感器数据、模数转换和串行通信等)或其他软件模块进行交互通讯。 Model类​ 所有TouchGFX应用都有Model类,Model类除了存…

Python--控制台获取输入与正则表达式

前言一、控制台获取输入1.1 字符串输入1.2 整数输入1.3 浮点数输入1.4 布尔值输入1.5 列表输入1.6 汇总 二、正则表达式2.1 匹配数字2.2 模式检查2.3 替换字符2.4 切分字符串2.5 搜索并提取匹配的部分2.6 使用捕获组提取匹配的部分2.7 非贪婪匹配2.8 忽略大小写匹配2.9 使用预定…

【Java高级技术】单元测试——概述和快速入门

单元测试——概述和Junit框架快速入门 1.概述 就是针对最小的功能单元(方法),编写测试代码对其进行正确性测试 可以用来对方法进行测试,它是第三方公司开源出来的(很多开发工具已经集成了Junit框架,比如I…

【计算机】CPU,芯片以及操作系统概述

1.CPU 什么是CPU? CPU(Central Processing Unit)是计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元,相当于系统的“大脑”。 CPU的工作流程? CPU 的工作流程分为以下 5 个阶段:取指令…

苹果ios系统ipa文件企业签名是什么?优势是什么?什么场合需要应用到?

企业签名是苹果开发者计划中的一种签名类型,允许企业开发者签署和分发企业内部使用的应用程序,而无需通过App Store进行公开发布。通过企业签名,企业可以在内部部署自己的应用程序,以满足特定的业务需求。 企业签名能够做到以下…

【JVM】 类加载机制、类加载器、双亲委派模型详解

文章目录 前言一、类加载机制二、类加载器三、双亲委派模型总结 前言 📕各位读者好, 我是小陈, 这是我的个人主页 📗小陈还在持续努力学习编程, 努力通过博客输出所学知识 📘如果本篇对你有帮助, 烦请点赞关注支持一波, 感激不尽 &#x1f4d…

【改进哈里鹰算法(NCHHO)】使用混沌和非线性控制参数来提高哈里鹰算法的优化性能,解决车联网相关的路由问题(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

嵌入式Linux应用开发-驱动大全-同步与互斥①

嵌入式Linux应用开发-驱动大全-同步与互斥① 第一章 同步与互斥①1.1 内联汇编1.1.1 C语言实现加法1.1.2 使用汇编函数实现加法1.1.3 内联汇编语法1.1.4 编写内联汇编实现加法1.1.5 earlyclobber的例子 1.2 同步与互斥的失败例子1.2.1 失败例子11.2.2 失败例子21.2.3 失败例子3…

【无标题】如何去掉柱状图后面的网格以及如何为柱状图设置指定颜色

在绘制柱状图时,通过 plt.grid(False) 可以去掉图中的网格线。将这行代码添加在 plt.show() 之前,即可在保存图片时去掉网格线。 import seaborn as sns import numpy as np import matplotlib.pyplot as plt import random# 准备数据 x_data [ASSISTm…

Vue3 defineProps使用

MyTag.vue <script setup> import { ref, nextTick, defineProps, defineEmits } from "vue"; const props defineProps({flag: Boolean,title: String, }); // 写成这样也可以 // const props defineProps(["flag", "title"]);const e…

互联网Java工程师面试题·MyBatis 篇·第二弹

目录 16、Xml 映射文件中&#xff0c;除了常见的 select|insert|updae|delete标签之外&#xff0c;还有哪些标签&#xff1f; 17、Mybatis 的 Xml 映射文件中&#xff0c;不同的 Xml 映射文件&#xff0c;id 是否可以重复&#xff1f; 18、为什么说 Mybatis 是半自动 ORM 映射…

2023年中国体育赛事行业现状及趋势分析:体育与科技逐步融合,推动产业高质量发展[图]

体育赛事运营是指组织体育赛事或获取赛事版权&#xff0c;并进行赛事推广营销、运营管理等一系列商业运作的运营活动。体育赛事运营相关业务主要包括赛事运营与营销、赛事版权运营两个部分。 体育赛事运营行业分类 资料来源&#xff1a;共研产业咨询&#xff08;共研网&#x…

5.外部中断

中断初始化配置步骤&#xff1a; IO口初始化配置 开启中断总允许EA 打开某个IO口的中断允许 打开IO口的某一位的中断允许 配置该位的中断触发方式 中断函数&#xff1a; #pragma vector PxINT_VECTOR __interrupt void 函数名(void){}#pragma vector PxINT_VECTOR __int…

开源白板工具 Excalidraw 架构解读

本文讲解开源白板工具 Excalidraw 的架构设计。 版本 0.16.1 技术栈 Vite React TypeScript Yarn Husky。 脚手架原来是用的是 Create React App&#xff0c;但这个脚手架已经不维护了&#xff0c;一年多没发布新版本了。 目前市面上比较流行的 React 脚手架是 Vite&…

RabbitMQ的基本介绍

什么是MQ 本质是一个队列&#xff0c;只不过队列中存放的信息是message罢了&#xff0c;还是一种跨进程的通信机制&#xff0c;用于上下游传递信息。在互联网架构中&#xff0c;MQ是一种非常常见的上下游“逻辑解耦物理解耦”的消息通信服务。使用了MQ之后&#xff0c;信息发送…

嵌入式Linux应用开发-驱动大全-同步与互斥④

嵌入式Linux应用开发-驱动大全-同步与互斥④ 第一章 同步与互斥④1.5 自旋锁spinlock的实现1.5.1 自旋锁的内核结构体1.5.2 spinlock在UP系统中的实现1.5.3 spinlock在SMP系统中的实现 1.6 信号量semaphore的实现1.6.1 semaphore的内核结构体1.6.2 down函数的实现1.6.3 up函数的…

户用储能争斗:华宝新能“稳”、正浩科技“快”、安克创新“急”

便携式储能市场一片红海&#xff0c;户用储能&#xff08;家用储能&#xff09;成为储能企业新的“格斗场”。 过去两年&#xff0c;房车游、户外旅行、露营等旅游项目热度攀升&#xff0c;户外用电需求与日俱增&#xff0c;嗅觉敏锐的资本方相继加码便携储能市场&#xff0c;越…

玩转Mysql系列 - 第26篇:聊聊mysql如何实现分布式锁?

这是Mysql系列第26篇。 本篇我们使用mysql实现一个分布式锁。 分布式锁的功能 分布式锁使用者位于不同的机器中&#xff0c;锁获取成功之后&#xff0c;才可以对共享资源进行操作 锁具有重入的功能&#xff1a;即一个使用者可以多次获取某个锁 获取锁有超时的功能&#xff…

【贪心的商人】python实现-附ChatGPT解析

1.题目 贪心的商人 知识点:贪心 时间限制:1s 空间限制: 256MB 限定语言:不限 题目描述: 商人经营一家店铺,有number种商品,由于仓库限制 每件商品的最大持有数量是item[index], 每种商品的价格在每天是item_price[item_index][day], 通过对商品的买进和卖出获取利润,请给…

去外地旅游遇到的问题和心得

去外地旅游核心的问题是&#xff1a;住、行、食三块&#xff0c;由于去一个陌生的城市&#xff0c;一切都不熟悉&#xff0c;也没有认识的人&#xff0c;所以一切都需要自己解决&#xff0c;而住、行、食就成最核心的问题&#xff0c;下面分别说明&#xff1a; 1 住&#xff0…