程序员必备的面试技巧——大数据工程师面试必备技能

本文涉及的产品
实时计算 Flink 版,5000CU*H 3个月
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 程序员必备的面试技巧——大数据工程师面试必备技能

前言

“程序员必备的面试技巧,就像是编写一段完美的代码一样重要。在面试战场上,我们需要像忍者一样灵活,像侦探一样聪明,还要像无敌铁金刚一样坚定。只有掌握了这些技巧,我们才能在面试的舞台上闪耀光芒,成为那个令HR们心动的程序猿!”


一、不同工程师的职责和技能要求

在不同层,对于工程师的职责、技能要求都会存在差异。

1、数仓开发工程师

      根据企业的要求搭建数仓体系(DW),是企业所有级别决策的制定过程,基于分析性报告和决策支持目的,为需要业务智能的企业,提供指导业务流程赶紧、监视时间、成本、质量以及控制,为战略策略做数据支持。主要负责核心业务模块数据仓库的构建,对数据模型进行设计,ETL实施、ETL性能优化、ETL数据监控以及一系列技术问题的解决;构建用户主题、各业务线主题、推荐主题、BI门户系统,并对全产品线数据字典维护,提升数据资产质量。

需要熟悉的技能:

(1)需要深入理解常用的数据建模理论,独立把控数据仓库的各层级设计;

(2)熟练掌握Hive/SQL、Spark/Map-Reduce/MPI分布式计算框架;

(3)熟悉大数据的离线和实时处理,可以进行海量数据模型的设计、开发。

2、算法挖掘工程师

       在大厂重创新、研究,在小厂重赋能、产品,有本质上的区别,也分很多种类型,包括搜索算法、导航算法、NLP、视觉算法、图像识别、自动驾驶、安全算法、通信算法等,需要掌握的技能差异性也很大,整体来看,有以下共性。

需要熟悉的技能:


(1)数据分析:通过编程语言进行科学分析,python、sql、spark,分布式计算框架Hadoop/Spark/Storm/ map-reduce/MPI;

(2)文献阅读:能够关注市面上的主流比赛算法应用,能够对学术、工业论坛、论文有非常多的积累;

(3)创新思维:场景迁移/举一反三能力,例如看到广告推荐中的根因定位,应该能马上切换到安全中的异常溯源;

(4)算法原理:机器学习、深度学习、强化学习、算法导论等;

(5)数学功底:扎实的数学功底,能够完成公式推导,并进行调优。

3、大数据平台开发工程师

       大数据平台开发有两个方面,平台自研、应用开发,需要熟悉Web后端开发语言、大数据开源组件,至少精通掌握一种开发语言golang、php、java; 对开发框架的原理&源码都有一定的了解(如laravel)。

需要熟悉的技能:

(1)平台自研,属于研发级开发,基于Hadoop组件开发HBase、Hive、Avro、Zookeeper等,完成元数据系统、数据质量、数据采集、数据计算平台、任务调度平台等系统性建设;

(2)应用开发,在大数据平台Hadoop及Spark进行具体的应用开发,搭建数据报表平台、自助数据分析平台、数据地图、标签库等。

4、大数据前端开发工程师

       给用户看到的都叫做前端,比如APP界面、Web 界面,与交互设计师、 视觉设计师协作,根据设计图,依据相关编程语言进行界面内容实现,把界面更好地呈现给用户;前端从业人员主要分布于我国中东、南部地区,其中北京的前端开发工程师最多,其次是深圳、上海、成都、杭州、广州、武汉、南京、长沙和西安。


需要熟悉的技能:


(1)熟悉W3C技术标准,精通HTML、Javascript、Ajax、DOM、HTML5、CSS3等前端开发技术;

(2)熟练掌握Vue、jequry、webpack等前端框架和相关技术并了解其实现原理,熟悉nginx、nodejs等webserver技术;

(3)熟悉前端性能分析和调优,并保证兼容性和执行效率,可编写复用的用户界面组件;

(4)掌握前端开发的安全风险和对策,良好的分析和解决问题的能力。

二、大数据技术架构图

可以参考一下大数据的技术架构:

在企业里面,如果按照数据流向来看,有一个主链路:

(1)系统对接:大数据平台开发工程师负责,对接各个业务系统,提供数据接入的能力;

(2)采集存储:数仓开发工程师,通过工具定期进行数据接入,并进行维度建模,抽象出DW层,建立指标;

(3)数据挖掘:算法挖掘工程师,结合数仓的底层模型表,dws表构建数据特征,挖掘数据的业务价值;

(4)数据呈现:大数据前端开发工程师,根据数据接口信息,在前端进行数据的可视化图表呈现,系统集成。

三、大数据相关的技术内容

       由于数据中台的出现,组织架构和分工可能会有一定到差异,根据所需要做的内容和事情,所需要掌握的技能树是类似的,按照日常使用情况,可以归纳为以下几种:

1、关于python、sql、spark、hadoop和消息

综合对大数据开发过程的技术要求,比较主流的几个工具和技术:


(1)python:主要解决数据处理、分析、挖掘的内容;

(2)SQL:主要是在数仓存储、模型存储、指标接口开发过程中需要非常熟练;

(3)Spark:在算法挖掘、大批量数据计算、机器学习应用方面的应用;

(4)Hadoop神态:对数据存储、大数据平台开发都有非常强的要求,依赖HDFS、HIVE等特性;

(5)消息:数据接口开发,对于数据应用,和上层应用系统之间的互通有比较高的要求。

2、关于实时计算相关的技术栈

flink:在实时计算,处理批、流数据,实现秒级计算并赋能给业务系统的核心技术。flink:在实时计算,处理批、流数据,实现秒级计算并赋能给业务系统的核心技术。

四、大数据面试经验

目前市面上的大数据开发岗位主要分为两大方向:【大数据ETL开发】和【大数据分析】。

不同的岗位对技术要求的侧重点不一样,前者的市场岗位需求更大。

1、大数据开发岗位

岗位简介:


       这个岗位的核心工作是负责将原始的数据源接入到大数据平台,然后用平台中的各种大数据组件对数据做各种数据的转换、清洗,然后有的就可以直接入库,用于各种BI系统的报表展现;而有的清洗后的数据则提供给大数据分析人员作为数据源,用于各种机器学习算法、人工智能模型等手段进行分析、挖掘,最终得出想要的结果。


(1)全局视角:一个好的大数据ETL开发,应该对你所在的大数据系统(或者叫大数据平台)有一个全局性的认识。这样,才清楚每一次代码开发,对应运行在这个系统的哪个位置,会与哪些模块交互、模块间的兼容性如何、上下游的数据处理链路是怎么样的。任何一个大数据系统它都是有套路的,都可以将其拆解为3大部分:数据源接入模块、数据计算模块、结果存储模块。


(2)局部思维:在写代码开发具体的功能的时候,是否想过为什么要用这个技术?使用这个技术的优劣势在哪?为什么不用另个一个呢?比如在对数据源接入时,很多时候都用kafka这个组件,来承接数据的落地,那为什么会选这个组件?都知道它快,为什么快,是什么原理支撑它快的,数据结构?通信原理?等等。


(3)业务理解能力:所有的开发,目的都是完成业务需求,那么对业务数据的理解能力就显得特别重要。比如在数据处理过程中常常遇到的效率优化问题,用计算引擎对数据计算时出现分区之间数据不平衡问题(也叫数据倾斜)如何解决?这个时候其实需要对业务有比较深的理解才可以,不是单纯的技术问题能解决的,如果要平衡新的分区,就要基于当前业务要求作出新的调整。


(4)基础能力:这里指的是计算机基础,编程语言基础。任何一个坚实稳定的软件工程都需要一个牢靠的地基支撑。这个也是每次面试的必考察项。比如:JVM原理、常用容器类型、常用数据结构与算法、网络IO、计算机组成等等。

2、大数据分析岗位

岗位简介:

       这个岗位跟上一个岗位相比,从理论上来说应该是要少很多的,但是一些注重算法的公司在这个岗位上的人员投入比例却非常的大。

(1)理论知识:

       一是基础数学统计知识,二是市场研究方法论。

       基础数学统计知识,这里不过多的介绍。一方面因为只要大学里学过统计学,有一定的数理分析能力基本就能过关,另一方面也是因为我们有各种各样的计算器及计算软件可以辅佐。

       具备良好的市场研究方法论,是一个优秀数据分析师的基础。因为作为一个数据分析师,当你面对海量的数据,只有快速找到并牵起那根线头,才能开展后续所有的工作。这个“找线头”的工作,往往需要数据分析师们通过充分的市场环境调查、市场基本情况调查、客户情况调查与竞争对手调查,进行多方面信息收集和调研分析。信息收集为市场调查提供数据,调研分析能够对数据的内在规律进行深入的剖析。


(2)常用分析工具:

1)数据库

       我们可以将数据库简单理解为,企业为自己搭建的,根据数据结构组织、存储和管理数据的“仓库”。要进行数据分析时,我们需要将一些数据放入这个“仓库”中,根据我们的需求进行相应的处理。比如说人力资源部,将各个部门的员工当年固定工资、绩效奖金、年终奖,员工的工龄、岗级等数十项数据放入“仓库”,再结合正确的数据筛选和抽取、计算方法,就可以以此为基础制作一份企业的人力成本分析报告,供管理层参考与决策使用。


2)专业软件

       数据分析师可使用的专业软件种类繁多,但最常用的其实就3种——SQL、BI和Python。这些软件想要用到精深,每一个都需要花大量的时间,下苦功夫,但如果只是做到熟练掌握基本功能,满足日常范围内的数据检索、调用和分析需求,难度则大为下降一一通过专业化、系统化的学习和培训即可。


3)日常办公软件

       与数据分析师日常联系最密切相关的办公软件,就是Excel了——这也是使用者上限和下限差异巨大的软件,可能没有之一。在普通人手中,这就是个填表格的软件,但在高手手中,Excel甚至能做一些微型编程工作。对于数据分析师来说,熟练掌握Excel的函数和数据透视表功能,基本上已经能够完成日常大部分数据的基础处理工作了。

总结

       对于大数据,随着技术的不断迭代,数字化的发展,对数据职能的区分度会越来越细分,持续保持对前沿知识的关注,通过和周边的大佬进行学习,结合场景进行深度应用,在数字化的道路上才能走的更长远。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
目录
相关文章
|
8天前
|
存储 网络协议 安全
30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场
本文精选了 30 道初级网络工程师面试题,涵盖 OSI 模型、TCP/IP 协议栈、IP 地址、子网掩码、VLAN、STP、DHCP、DNS、防火墙、NAT、VPN 等基础知识和技术,帮助小白们充分准备面试,顺利踏入职场。
24 2
|
2月前
|
存储 大数据 索引
解锁Python隐藏技能:构建高效后缀树Suffix Tree,处理大数据游刃有余!
通过构建高效的后缀树,Python程序在处理大规模字符串数据时能够游刃有余,显著提升性能和效率。无论是学术研究还是工业应用,Suffix Tree都是不可或缺的强大工具。
51 6
|
3月前
|
分布式计算 资源调度 Hadoop
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
Hadoop入门基础(五):Hadoop 常用 Shell 命令一网打尽,提升你的大数据技能!
|
3月前
|
网络协议 网络架构
OSPF邻居关系建立失败?揭秘网络工程师面试中最常见的难题,这些关键步骤你掌握了吗?网络配置的陷阱就在这里!
【8月更文挑战第19天】OSPF是网络工程中确保数据高效传输的关键协议。但常遇难题:路由器间无法建立OSPF邻居关系,影响网络稳定并成为面试热点。解决此问题需检查网络连通性(如使用`ping`),确认OSPF区域配置一致(通过`show running-config`),校准Hello与Dead计时器(配置`hello`和`dead`命令),及核查IP地址和子网掩码正确无误(使用`ip address`)。系统排查上述因素可确保OSPF稳定运行。
72 2
|
3月前
|
运维 Kubernetes 关系型数据库
云计算运维工程师面试技巧
【8月更文挑战第6天】
389 1
|
4月前
|
存储 大数据 索引
解锁Python隐藏技能:构建高效后缀树Suffix Tree,处理大数据游刃有余!
【7月更文挑战第19天】Suffix Tree 概述:** 为高效处理字符串搜索、匹配和大数据分析,后缀树是一种优化数据结构,可快速检索后缀、执行最长公共后缀查询及字符串排序。Python中虽无内置实现,但可通过第三方库或自建代码构造。应用于字符串搜索、生物信息学等领域,提升大数据处理效率。
95 3
|
4月前
|
算法 网络协议 Linux
|
5月前
|
SQL 大数据
常见大数据面试SQL-每年总成绩都有所提升的学生
一张学生成绩表(student_scores),有year-学年,subject-课程,student-学生,score-分数这四个字段,请完成如下问题: 问题1:每年每门学科排名第一的学生 问题2:每年总成绩都有所提升的学生
|
3月前
|
存储 Java
【IO面试题 四】、介绍一下Java的序列化与反序列化
Java的序列化与反序列化允许对象通过实现Serializable接口转换成字节序列并存储或传输,之后可以通过ObjectInputStream和ObjectOutputStream的方法将这些字节序列恢复成对象。
|
12天前
|
存储 算法 Java
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
本文详解自旋锁的概念、优缺点、使用场景及Java实现。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
大厂面试高频:什么是自旋锁?Java 实现自旋锁的原理?
下一篇
无影云桌面