大数据开发面试笔记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现在是容器编排的标准工具,对其基本概念、组件以及如何部署和管理应用都应该有所了解。

面试准备和策略

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

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

你可能感兴趣的:(大数据,#,面试,笔记)