【面经】大数据开发和架构!

大家好,我是Lucy@FinTech社区,今天的文章将为大家带来大数据研发和架构的面经。欢迎添加以下微信,加入FinTech社区-大数据群,提认知,攒人脉,求职招聘,投资有术!

 

数据分析:

  1. 大数据开发与数据挖掘
  2. 面试面面观
  3. 大厂面经总结

 

01 大数据架构与开发

顾名思义大数据是一个以数据为核心的产业。大数据产业从数据的生命周期的传导和演变上可分为这几个部分:数据收集、数据储存、数据建模、数据分析、数据变现

通过各种渠道收集数据,继而通过云数据中心储存,再通过数据科学家或业务进行建模和加工,最后数据分析找到大量看似不相关数据背后的因果关系。这些产生的信息可以作为宝贵的资产,帮助业务决策者对未来进行预测,减少试错成本,也可以降低成本风险,增强业务竞争力。

目前市场上人才需求观和部署企业自身大数据项目来看,大致分为3个方向:大数据架构大数据开发大数据分析
 

那么本期我们就聚焦技术要求更硬核的架构与开发职位

让我们从目前市场上的需求入手,为大家分析这两个炙手可热的岗位。

某顶级独角兽互联网:数据开发工程师


 

大数据开发

大数据开发偏重应用实现,注重服务器端开发、数据库开发、呈现与可视化人机交互等衔接数据载体和数据加工各个单元以及用户的功能落地与实现。

主要研究方向

数据库开发:RDBMS、NoSQL、MySQL、Hive等。

数据流工具开发:Flume、Heka、Fluentd、Kafka、ZMQ等。

数据前端开发:HightCharts、ECharts、JavaScript、D3、HTML5、CSS3等。

数据获取开发:爬虫、分词、自然语言学习、文本分类等。
 

某top互联网公司:资深大数据架构开发

大数据架构

大数据架构偏重基建和架构,更多注重的是Hadoop、Spark、Storm等大数据框架的实现原理、部署、调优和稳定性问题,以及它们与Flume、Kafka等数据流工具以及可视化工具结合技巧。再有就是一些工具的商业应用问题,如Hive、Cassandra、HBase、PrestoDB等。

能够将这些概念理解清楚,并能够用辩证的技术观点进行组合使用,达到软/硬件资源利用的最大化,服务提供的稳定化,这是大数据架构人才的目标。

 

主要研究方向

架构理论:高并发、高可用、并行计算、MapReduce、Spark等

数据流应用:Flume、Fluentd、Kafka、ZeroMQ等

储存应用:HDFS、Ceph等

软件应用:Hive、HBase、Cassandra、PrestoDB等。

可视化应用:HightCharts、ECharts、D3、HTML5、CSS3等。
 

大数据架构师对架构层面、数据流层面、存储层面、软件应用层面等都需要做比较深入的理解和落地应用。

不难发现大数据开发和架构很多的关键关键词是重合的,但一个主要是开发,一个主要是对于各种大数据技术的加以应用
 

开发更注重的是熟练掌握,快速实现,应用要求的是懂得各种大数据技术功能上的异同,并且在选择实现方式时候的方案和取舍。大家可以根据自己的情况进行细分,但在面试中是可以兼顾的。
 

02 大数据研发面试技术栈

那么如何有条不紊的准备大数据开发架构岗位的面试呢,我们为大家整理了6个主要的维度, 可以根据以下的目录查漏补缺。
 

2.1 编程语言和手撕代码

对于大数据来说,我们有众多的工具和框架,Java还是主力编程语言。可以说做大数据,Java是必须要熟练掌握的。那么对于Java的学习,基础、并发、JVM都是重点。
 

2.2 计算机基础

数据结构,包括常见的布隆过滤器,Bitmap,B+树,LSM Tree,跳表。计算机网络常见TCP-IP协议,网络连接。操作系统问题。Linux基础,Linux进程通信和线程通信, 数据库范式等。
 

2.3 Hadoop&Spark

MapReduce、YARN、HDFS,Spark几大经典项目的概念,实现,关系。经典机制的讲解和辨析。
 

2.4 分布式和流计算

分布式理论概念,原则。Zookeeper、Raft的概念和讲解。Flink、Storm/Jstorm等流计算框架的对比,特色,使用场景。
 

2.5 存储和消息队列

非关系存储:Redis、Hbase、Tair、Tbase,这些存储包含什么样的数据结构,如何底层实现,有什么数据持久化的方式。一致性哈希

消息队列:Kafka,包括基本原理,和其他的MQ相比的优势。实现细节如高阶,低阶消费者API的区别,ack有哪几种。消费者如何Kafka取数据,怎么保证Exactly Once,有序性。
 

2.6 数据仓库与可视化

了解和使用HTML5、CSS3, Tableau作为可视化的工具。如何构建数仓,如何做分层,辨析范式建模和维度建模,星型模型和雪花模型的区别。


 

03 面经

一、二轮面:

简答题与算法题

Java:

Java的多态

final关键字,volatile关键字的作用,与synchronized关键字的不同

了解HashMap的内部结构吗?自己实现一个HashMap

HashMap、Hashtable、ConcurrentHashMap的原理与区别

Java实现生产者消费者模型,可以用BlockingQueue阻塞队列

设计模式
 

Hive:

Hive 基础函数辨别,row_number,rank。

Hive窗口函数怎么设置窗口大小,分桶

Hive order by, sort by, distribute by, cluster by 区别,使用场景

Hive map,reduce数怎么设置

Hive SQL数据倾斜原因和优化

Hive数据选择的什么压缩格式

Hive的udf、udaf和udtf了解过吗?自己有没有写过udf

join操作底层的MapReduce是怎么去执行的
 

MapReduce&Spark:

MapReduce的作业流程,涉及到几次排序

Spark任务执行过程

MapReduce Shuffle 和 Spark Shuffle的区别,bypass

Spark的内存管理模型

Spark使用中遇到什么问题,怎么解决的
 

深入面:

场景设计和简历项目

Hadoop,Spark项目源码,底层实现机制,在项目中的运用对比。

系统设计如,实时PV,UV统计,实时TOP N 统计,广告曝光流和点击流实时join。设计一个统计各渠道用户留存的模型。

设计,设计一个RPC框架,我看你简历上做过,谈谈思路,观察者模式讲一下,并发容器。

设计,现在有一个RPC框架,需要使用线程池,多次复用socket,TCP,怎么传递命令。变相考hadoop,使用操作码。

场景设计:性能足够好的电脑,大CPU大内存,网卡性能差,如何优化?

场景设计:一个加载在内存里的HashMap,Key和Value全是int,从硬盘读进来只做查询不做修改,不考虑查询效率,尽可能提高空间效率,稍微考虑一下时间效率。

 

04 大数据岗位推荐

数据开发和架构相比普通的前后端开发网岗位,有着较强的针对性,面经中也有许多经典的题目。除了算法功底过关之外,有针对性的对大数据框架进行学习,练习和深挖都是非常有必要的。如果能够对著名开源项目有自己的贡献,如成为spark的排名靠前的提交者,那么就能有很好的背书。
 

最后, FinTech社区也在合作多家公司都在招聘大数据开发岗位(以下),具体添加微信:fintech12 沟通!