精华内容
下载资源
问答
  • 大数据开发java面试题
    千次阅读
    2021-12-07 15:02:51

    问答题:

    1. HDFS的组织架构?

    由HDFS Client、NameNode、DataNode和Scondary NameNode四部分组成

    一个HDFS集群是由一个NameNode和一定数目的DataNode组成的。NameNode是一个中心服务器,负责管理文件系统的名字空间 (Namespace )及客户端对文件的访问

    1. HDFS 读写流程?

    1. 客户端向NameNode发出文件请求
    2. 检查是否存在文件,检查权限。通过检查直接先将操作写入EdiLog,返回输出流对象
    3. client端按128MB的快切分文件
    4. Client将NameNode返回的分配可写的DataNode列表和Data数据,发送给最近第一个DataNode节点,client端和NameNode分配给多个DataNode构成pieeline管道,client端向输出流对象中写的数据。Client每向第一个DataNode写入一个packet,直接在pipeline里传给第二....第三份。。DataNode.
    5. 每一个DataNode写完一个快,返回确认信息
    6. 写完数据,关闭输出流
    7. 发送信号给NameNode

    1. NameNode 在启动的时候会做哪些操作?

    1首先启动端口号

    1. 开始加载镜像文件和编辑日志
    2. 创建RPC服务
    3. 对NameNode的资源进行检测
    4. 对DataNode的心跳进行校验
    5. 判断是都进去安全模式

    1. Secondary NameNode的工作机制?

    1. 通知NameNode准备提交edits文件,主节点将新的写操作数据记录到一个新的文件edits.new中
    2. 通过HTTP GET方式获取NameNode的fsimage与edits文件
    3. 合并获取上述两个文件,产生一个新的fsimage文件
    4. 用HTTP POST方式发送fsimage.ckpt至NameNode
    5. NameNode将fsiamege.ckpt与edits.new文件分别命名fsimage与edits,更新fstime,整个checkpoin过程到此结束

    1. Secondary NameNode 不能恢复 NameNode 的全部数据,那如何 保证 NameNode 数据存储安全?

    一个NameNode有单节点故障问题,就配置双NameNode,两个关键点,必须要保证这两个NN 的元数据信息必须要同步,一个namenode挂掉之后另外一个要立马补上

    1. HDFS文件系统中小文件过多会有什么危害,如何避免?

    危害:占用很大的内存甚至撑爆内存

    1. 生产上首先需要设置小文件的阈值,到达这个值对小文件进行合并。对于这个合并,一种是在HDFS存储之前就进行合并,还有一种就是计算完之后根据业务周期来进行合并。后一种需要在计算时格外对小文件进行调整
    2. 多Master设计,让元数据分散存放到不同的NameNode中。

    1. HDFS有哪些优化措施?

    (1)在数据采集的时候,就将小文件或小批数据合成大文件再上传HDFS。

    (2)在业务处理之前,在HDFS上使用MapReduce程序对小文件进行合并。

    (3)在MapReduce处理时,可采用CombineTextInputFormat提高效率。

    1. yarn 集群的架构和工作原理?

    架构:主要由ResourceManager、NodeManager、ApplicationMaster和Container构成

    工作原理:1.Client向Yarn提交Application,这里我们假设是一个MapReduce作业。

    ResourceManager向NodeManager通信,为该Application分配第一个容器。并在这个容器中运行这个应用程序对应的ApplicationMaster。

    2.ApplicationMaster启动以后,对作业(也就是Application)进行拆分,拆分task出来,这些task可以运行在一个或多个容器中。然后向ResourceManager申请要运行程序的容器,并定时向ResourceManager发送心跳。

    3.申请到容器后,ApplicationMaster会去和容器对应的NodeManager通信,而后将作业分发到对应的NodeManager中的容器去运行,这里会将拆分后的MapReduce进行分发,对应容器中运行的可能是Map任务,也可能是Reduce任务。

    4.容器中运行的任务会向ApplicationMaster发送心跳,汇报自身情况。当程序运行完成后,ApplicationMaster再向ResourceManager注销并释放容器资源。

    1. yarn 的任务提交流程是怎样的?

    1.Client向RM提交请求,上传jar包到HDFS上

    2.RM在集群中选择一个NM,在其上启动AppMaster,在AppMaster中实例化SparkContext(Driver)

    3.AppMaster向RM注册应用程序并申请资源。RM监控AppMaster的状态直到AppMaster结束。

    4.AppMaster申请到资源后,与NM通信在Container中启动Executor进程

    5.Executor向driver反向注册,申请任务

    6.Driver对应用进行解析,最后将Task发送到Executor上

    7.Executor中执行Task,并将执行结果或状态汇报给Driver

    8.应用执行完毕,AppMaster通知RM注销应用,回收资源

    1. yarn 的资源调度机制有哪几种?

    主要有三种:FIFO,Capacity Scheduler(容量调度器)和Fair Scheduler(公平调度器)。

    1. hive 内部表和外部表的区别?

    1.内部表数据由Hive自身管理,外部表数据由HDFS管理;

    2.内部表数据存储的位置是hive.metastore.warehouse.dir(默认:/user/hive/warehouse),

    3外部表数据的存储位置由自己制定(如果没有LOCATION,Hive将在HDFS上的/user/hive/warehouse文件夹下以外部表的表名创建一个文件夹,并将属于这个表的数据存放在这里);

    1. hive有哪些优化措施?
    1. 慎重使用count
    2. 小文件会造成资源过度暂用以及影响查询效率
    3. 慎重使用select *
    4. 不要澡表关联后面加where条件
    5. 处理字段中带有空值的数据
    6. 设置病执行任务数
    7. 设置合理的Reducer个数
    8. JVM重用
    9. 为什么任务执行的时候只有一个reduce?
    10. 选择使用Tez引擎
    11. 选择本地模式
    12. 选怎使用严格模式

    1. HDFS 和 HBase 各自使用场景?

    HDFS:GB、TB、甚至PB级数据

    百万规模以上的文件数量

    10K+节点规模

    HBase:海量明细数据(十亿、百亿)的随时实时查询。如日志明细。交易清单,行为轨迹

    1. Hbase 的存储结构?

    高可靠性、高性能、面向列、可伸缩

    1. Spark 与 MapReduce 相比,Spark 运行效率更高。 请说明效率更高来源于 Spark 内置的哪些机制?
    1. spark是基于内存进行数据处理的,MapReduce是基于磁盘进行数据处理的
    2. Spark容错性高,它通过弹性分布式数据集RDD来实现高效容错,RDD是一组分布式的存储在 节点内存中的只读性的数据集,这些集合石弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血缘关系来实现重建,mapreduce的容错只能重新计算
    1. Spark更通用,提供了transformation和action这两大类的多功能api,另外还有流式处理sparkstreaming模块、图计算等等,mapreduce只提供了map和reduce两种操作,流计算及其他的模块支持比较缺乏 。
    2. Spark框架和生态更为复杂,有RDD,血缘lineage、执行时的有向无环图DAG,stage划分等,很多时候spark作业都需要根据不同业务场景的需要进行调优以达到性能要求,mapreduce框架及其生态相对较为简单,对性能的要求也相对较弱,运行较为稳定,适合长期后台运行。
    3. Spark计算框架对内存的利用和运行的并行度比mapreduce高,Spark运行容器为executor,内部ThreadPool中线程运行一个Task,mapreduce在线程内部运行container,container容器分类为MapTask和ReduceTask.程序运行并行度高

    6.Spark对于executor的优化,在JVM虚拟机的基础上对内存弹性利用:storage memory与Execution memory的弹性扩容,使得内存利用效率更高。

    1. hadoop 和 spark 使用场景?

    Hadoop:1.分布式存储

    1. 日志处理
    2. 海量计算
    3. ETL:数据抽取到主流数据库中
    4. 使用hbase做数据分析
    5. 机器学习
    6. 搜索引擎
    7. 数据挖掘
    8. 大量从文件中顺序读
    9. 数据一次写入,多次读取
    10. 不进行本地缓存
    11. 用户细分特征建模
    12. 个性化广告推荐

    Spark:用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。 这些不同类型的处理都可以在同一个应用中无缝使用

    1. RDD 机制是怎么样的?

    RDD是一组分布式的存储在 节点内存中的只读性的数据集,这些集合石弹性的,某一部分丢失或者出错,可以通过整个数据集的计算流程的血缘关系来实现重建,

    1. Spark streaming 以及基本工作原理?

    Spark core API的一种扩展,用于大规模、高吞吐量、容错的实时数据流处理

    它支持从多种数据源读取数据,比如Kafka、Flume、Twitter和TCP Socket,并且能够使用算子比如map、reduce、join和window等来处理数据,处理后的数据可以保存到文件系统、数据库等存储中

    原理:接受实时输入数据流,然后将数据拆分成batch,比如每收集一秒的数据封装成一个batch,然后将每个batch交给spark的计算引擎进行处理,最后会生产处一个结果数据流,其中的数据也是一个一个的batch组成的。

    1. spark 有哪些组件?

    Master、worker、Driver、spark context、client

    1. spark 工作机制?

    用户在client端提交作业后,会由Driver运行main方法并创建spark context上下文。执行add算子,形成dag图输入dagscheduler,按照add之间的依赖关系划分stage输入task scheduler。task scheduler会将stage划分为task set分发到各个节点的executor中执行。

    1. 什么是宽依赖和窄依赖?

    宽依赖:

    本质就是shuffle。父RDD的每一个partition中的数据,都可能会传输一部分到下一个子RDD的每一个partition中,此时会出现父RDD和子RDD的partition之间具有交互错综复杂的关系,这种情况就叫做两个RDD之间是宽依赖

    窄依赖:

    父RDD和子RDD的partition之间的对应关系是一对一的

    1. spark 解决了 hadoop 的哪些问题?

    MR:抽象层次低,需要使用手工代码来完成程序编写,使用上难以上手;

    Spark:Spark采用RDD计算模型,简单容易上手。

    MR:只提供map和reduce两个操作,表达能力欠缺;

    Spark:Spark采用更加丰富的算子模型,包括map、flatmap、groupbykey、reducebykey等;

    MR:一个job只能包含map和reduce两个阶段,复杂的任务需要包含很多个job,这些job之间的管理以来需要开发者自己进行管理;

    Spark:Spark中一个job可以包含多个转换操作,在调度时可以生成多个stage,而且如果多个map操作的分区不变,是可以放在同一个task里面去执行;

    MR:中间结果存放在hdfs中;

    Spark:Spark的中间结果一般存在内存中,只有当内存不够了,才会存入本地磁盘,而不是hdfs;

    MR:只有等到所有的map task执行完毕后才能执行reduce task;

    Spark:Spark中分区相同的转换构成流水线在一个task中执行,分区不同的需要进行shuffle操作,被划分成不同的stage需要等待前面的stage执行完才能执行。

    MR:只适合batch批处理,时延高,对于交互式处理和实时处理支持不够;

    Spark:Spark streaming可以将流拆成时间间隔的batch进行处理,实时计算。

    1. 数据倾斜的产生和解决办法?

    数据倾斜以为着某一个或者某几个partition的数据特别大,导致这几个partition上的计算需要耗费相当长的时间。

    在spark中同一个应用程序划分成多个stage,这些stage之间是串行执行的,而一个stage里面的多个task是可以并行执行,task数目由partition数目决定,如果一个partition的数目特别大,那么导致这个task执行时间很长,导致接下来的stage无法执行,从而导致整个job执行变慢。

    避免数据倾斜,一般是要选用合适的key,或者自己定义相关的partitioner,通过加盐或者哈希值来拆分这些key,从而将这些数据分散到不同的partition去执行。

    如下算子会导致shuffle操作,是导致数据倾斜可能发生的关键点所在:groupByKey;reduceByKey;aggregaByKey;join;cogroup;

    1. 为什么要使用 kafka?

    1. 采集数据什么Flume和kafka的区别?

    缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。

    解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。

    冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。

    健壮性:消息队列可以堆积请求,所以消费端业务即使短时间死掉,也不会影响主要业务的正常进行。

    异步通信:很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们

    单项选择题:

    1、从 Vi 编辑模式下保存配置返回到 Centos7 系统使用(c)

    A.按“shift”+“:”组合

    B.按“Esc”键,然后按“shift”+“:”组合

    C.按“Esc”键,然后按“shift”+“:”,输入wq 回车

    D.直接输入“exit”

    2、在 Centos7 系统中,查看和修改 IP 信息需要用到(b )文件

    A. /etc/sysconfig/network/ifcfg-ens0

    B. /etc/sysconfig/network-script/ifcfg-ens0

    C. /etc/sysconfig /ifcfg-ens0

    D. /etc/resolv.conf

    3、tar 命令用于对文件进行打包压缩或解压,-t 参数含义(c )

    A. 创建压缩文件

    B. 解开压缩文件

    C. 查看压缩包内有哪些文件

    D.向压缩归档末尾追加文件

    4、Hadoop 的安装部署的模式属于本地模式(a )

    A. 默认的模式,无需运行任何守护进程(daemon),所有程序都在单个 JVM 上执行。

    B. 在一台主机模拟多主机。即,Hadoop 的守护程序在本地计算机上运行,模拟集群环境,

    并且是相互独立的Java 进程。

    C. 完全分布模式的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。

    D.高容错全分布模式的守护进程运行在多台主机搭建的集群上

    5、Hadoop 的安装部署的模式属于伪分布模式( b)

    A. 默认的模式,无需运行任何守护进程(daemon),所有程序都在单个 JVM 上执行。

    B. 在一台主机模拟多主机。即,Hadoop 的守护程序在本地计算机上运行,模拟集群环境,

    并且是相互独立的Java 进程。

    C. 完全分布模式的守护进程运行在由多台主机搭建的集群上,是真正的生产环境。

    D.高容错全分布模式的守护进程运行在多台主机搭建的集群上

    6、HDFS 默认 Block Size 的大小是(b/c )。

    A.32MB B.64MB C.128MB D.256M

    7、下列关于 MapReduce 说法不正确的是(a )

    A. MapReduce 是一种计算框架

    B. MapReduce 来源于 google 的学术论文

    C. MapReduce 程序只能用 java 语言编写

    D. MapReduce 隐藏了并行计算的细节,方便使用

    8、HDFS 是基于流数据模式访问和处理超大文件的需求而开发的,具有高容错、高可靠性、

    高可扩展性、高吞吐率等特征,适合的读写任务是 ( d)

    A.一次写入,少次读

    B.多次写入,少次读

    C.多次写入,多次读

    D.一次写入,多次读

    9、关于 SecondaryNameNode 下面哪项是正确的(c )。

    A. 它是 NameNode 的热备

    B. 它对内存没有要求

    C. 它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间

    D. SecondaryNameNode 应与 NameNode 部署到一个节点

    10、大数据的特点不包括下面哪一项(d )。

    A. 巨大的数据量

    B. 多结构化数据

    C. 增长速度快

    D. 价值密度高

    11、HBase 依赖_(a )存储底层数据

    A. HDFS B. Hadoop C. Memory D. MapReduce

    12、HBase 依赖(a )提供消息通信机制

    A Zookeeper

    B Chubby

    C RPC

    D Socket

    13、flume 有哪个组件用于采集数据( a)

    A. source

    B. channel

    C. sink

    D. web server

    14、启动 Hadoop HBase 之后,执行jps 命令,已经看到有 HMaster 的进程,但是进 入到监控界面查看,没有节点信息:

    最有可能原因(c )

    A. HADOOP 服务未启动

    B. HBase 服务未启动

    C. HBase 处于安全模式

    D. HBase 服务未安装

    15、关于 SecondaryNameNode 哪项是正确的?(c )

    A. 它是 NameNode 的热备

    B. 它对内存没有要求

    C. 它的目的是帮助 NameNode 合并编辑日志,减少 NameNode 启动时间

    D. 它是 NameNode 的热备,对内存有严格要求

    16、关于 Hadoop 的运行机制过程顺序说法正确的是(a )

    A. 作业提交--作业初始化--任务分配--任务的执行--任务进度和状态的更新--任务结束

    B. 作业初始化--作业提交--任务分配--任务的执行--任务进度和状态的更新--任务结束

    C. 任务分配--作业提交--作业初始化--任务的执行--任务进度和状态的更新--任务结束

    D. 任务执行-作业提交--作业初始化--任务的分配--任务进度和状态的更新--任务结束

    17、下面描述正确的是(bc )(多选)

    A. HDFS 将数量众多的廉价机器使得硬件错误成为常态

    B. HDFS 支持多种软硬件平台中的可移植性

    C. HDFS 上的一个文件大小是G 或 T 数量级的,支持的文件数量达到千万数量级

    D. HDFS 上的文件可以任意修改

    18、YARN 服务组件包括(abcd )(多选)

    A. NameManager

    B. ApplicationMaster

    C. Container

    D. ResourceManager

    19、下列属于 hadoop 的发行版本的是( ab)(多选)

    A. Apache

    B. Cloudera

    C. Redhat

    D. Centos

    更多相关内容
  • 以下为面试过程中提问,岗位为大数据开发,根据提问内容看出,主要偏数仓方向 自我介绍 到北京工作的意愿 SQL,给一张城市和交易额表,一张城市对应省份表, 取出 省份 总 交易额大于 500 的 省份 的...

    以下为面试过程中提问,岗位为大数据开发,根据提问内容看出,主要偏数仓方向

    • 自我介绍

    • 到北京工作的意愿

    • SQL题,给一张城市和交易额表,一张城市对应省份表, 取出 省份 总 交易额大于 500 的 省份 的名字

    • SQL题,基于刚才, 得出 省份 总 交易额 [0,500 ] , [500,1000 ] , [1000,+∞ ] 在以下三个区间的 省份 的 数量

    • SQL题,还是基于刚才, 按从小到大的顺序得出每个城市的累计交易额,可以用窗口

    • 根据分隔符划分字段,可以用正则表达

    • 主要负责的产品

    • 产品的指标如何知道带来多少价值

    • 指标如何做到精准

    • 就项目中提到的某个实体,讲一下他对应的属性有哪些

    • 如果你建模的话,你会如何建模

    • 主要都抽取哪些数据源,使用什么工具

    • 描述一下抽取的内部逻辑,怎么实现的

    • 除了工作,有去读什么书学习吗

    • 你觉得flink和spark streaming有什么区别

    • spark streaming相比flink有什么优点

    • 有什么想问的吗

    答案详细解析1. 自我介绍

    面试的时候,面试官说的第一句话就是:“介绍一下你自己吧。”

    很多人真的很实诚的就只说一句:“我叫xx,来自xx,今年xx岁。”然后双方冷场。

    这样的自我介绍还不如前段时间流行的一句话:“我叫xx,我喜欢唱跳、rap、篮球。”起码你还让面试官知道了你的特长。

    所以这里就需要你用最短的时间让面试官记住你,突出自己的优势、有论证力的说服对方。

    原则如下:不要大段背诵简历内容;不要说流水账,内容冗长;自我介绍时间尽量控制在一分钟左右。

    那么怎么在最短时间内满足以上三条。

    罗振宇说过:“笨拙的人讲道理,而聪明的人会说故事。”

    所以面试时我们要摆脱常规回答,学会“讲故事”。那故事怎么讲,记住以下八个字,将自己的经历或想法套进去:

    • 目标:就是我想要做什么,我想要成为什么样的人;

    • 阻碍:做这件事的难点是什么,有哪些“质疑”点;

    • 努力:为了克服难点和“质疑”,我做了哪些事情;

    • 结果:通过我的努力,我现在获得了什么样的成就。

    有时间了针对 自我介绍 我再详细的讲解下,这部分还是很重要的,因为这部分就是“推销”自己,给自己打广告的时间。

    2. 到北京工作的意愿

    招人肯定是希望找到一个踏实,稳定的人,而不是那种来了几天或一段时间就走的人。面试官问你这个问题,一是在看你大概能在公司呆多久,二是看公司是否有必要培养你或者录用你。

    所以回答时一定要表达出你一定能来北京并且能长时间待下去(即使你不是这样),具体回答发挥个人想象。


    3. SQL题,给一张城市和交易额表,一张城市对应省份表, 取出 省份 总 交易额大于 500 的 省份 的名字

    为了便于理解,根据上面的问题,我们先构造这两张表:

    城市交易额表 business_table

    city_num:城市编号
    gmv:交易额

    city_num

    gmv

    1001210
    100190
    1002250
    1003200
    1004700
    1005350
    1005150
    1006250
    1007150

    城市对应省份表:province_table

    province_num:省份编号
    province_name:省份名称
    city_num:城市编号

    province_num

    province_name

    city_num

    11a1001
    11a1005
    12b1002
    12b1003
    13c1004
    13c1006
    13c1007

    根据以上表,sql 语句如下(以下仅为其中一种写法,仅供参考)

     
    
    1. SELECT MAX(tmp.province_name)
    2. FROM (
    3. SELECT bt.city_num, bt.gmv, pt.province_num, pt.province_name
    4. FROM business_table bt
    5.   LEFT JOIN province_table pt ON bt.city_num = pt.city_num
    6. ) tmp
    7. GROUP BY tmp.province_num
    8. HAVING SUM(tmp.gmv) > 500;

    复制代码
    4. SQL题,基于刚才, 得出 省份 总 交易额 [0,500 ] , [500,1000 ] ,  [1000,+oo ] 在以下三个区间的 省份 的 数量

    参考 sql 语句如下:

     
    
    1. SELECT
    2.   COUNT(CASE
    3.    WHEN tmp2.pro_gmv >= 0
    4.    AND tmp2.pro_gmv < 500 THEN tmp2.pro_name
    5.    ELSE NULL END) AS gmv_0_500,
    6.   COUNT(CASE
    7.    WHEN tmp2.pro_gmv >= 500
    8.    AND tmp2.pro_gmv < 1000 THEN tmp2.pro_name
    9.    ELSE NULL END) AS gmv_500_1000,
    10.   COUNT(CASE
    11.    WHEN tmp2.pro_gmv >= 1000 THEN tmp2.pro_name
    12.    ELSE NULL END) AS gmv_1000_
    13. FROM (
    14. SELECT MAX(tmp.province_name) AS pro_name, SUM(tmp.gmv) AS pro_gmv
    15. FROM (
    16.   SELECT bt.city_num, bt.gmv, pt.province_num, pt.province_name
    17.   FROM business_table bt
    18.    LEFT JOIN province_table pt ON bt.city_num = pt.city_num
    19. ) tmp
    20. GROUP BY tmp.province_num
    21. ) tmp2;

    复制代码
    5. SQL题,还是基于刚才, 按从小到大的顺序得出每个城市的累计交易额,可以用窗口

    参考 sql 语句如下:

     
    
    1. # 既然面试官让用窗口函数,那咱们就别客气了
    2. SELECT city_num, gmv
    3. FROM (
    4. SELECT DISTINCT city_num, SUM(gmv) OVER(PARTITION BY city_num) AS gmv
    5. FROM business_table
    6. ) tmp
    7. ORDER BY gmv;

    复制代码
    6. 根据分隔符划分字段,可以用正则表达

     
    
    1. # java
    2. String address="上海|上海市|闵行区|吴中路";
    3. String[] splitAddress=address.split("\\|"); //如果以竖线为分隔符,则split的时候需要加上两个斜杠 \\ 进行转义
    4. #sql
    5. hive> select split('abcdef', 'c') from test;
    6. ["ab", "def"]

    复制代码
    7. 主要负责的产品

    这个根据简历或者你自己的情况实际实说就行。


    8. 产品的指标如何知道带来多少价值

    这题没有标准答案,根据自己的理解回答即可。

    以下仅供参考:

    在《精益数据分析》一书中给出了两套比较常用的指标体系建设方法论,其中一个就是比较有名的海盗指标法,也就是我们经常听到的AARRR海盗模型。海盗模型是用户分析的经典模型,它反映了增长是系统性地贯穿于用户生命周期各个阶段的:用户拉新(Acquisition)、用户激活(Activation)、用户留存(Retention)、商业变现(Revenue)、用户推荐(Referral)。

    为什么要说这个模型呢,因为通过这个模型中的一些关键指标我们可以反推出产品的指标所带来的价值有哪些。

    AARRR模型:

    A 拉新: 通过各种推广渠道,以各种方式获取目标用户,并对各种营销渠道的效果评估,不断优化投入策略,降低获客成本。涉及关键指标例如 新增注册用户数、激活率、注册转化率、新客留存率、下载量、安装量等,我们通过这些指标就可反应出获取目标用户的效果是怎样的。

    A 活跃:活跃用户指真正开始使用了产品提供的价值,我们需要掌握用户的行为数据,监控产品健康程度。这个模块主要反映用户进入产品的行为表现,是产品体验的核心所在。涉及关键指标例如 DAU/MAU 、日均使用时长、启动APP时长、启动APP次数等。通过这些指标可以反映出用户的活跃情况。

    R 留存:衡量用户粘性和质量的指标。涉及关键指标例如 留存率、流失率等。通过这些指标可以反映出用户的留存情况。

    R 变现: 主要用来衡量产品商业价值。涉及关键指标例如 生命周期价值(LTV)、客单价、GMV等。这些指标可以反映出产品的商业价值。

    R 推荐:衡量用户自传播程度和口碑情况。涉及关键指标例如 邀请率、裂变系数等。


    9. 指标如何做到精准

    同上题,没有标准答案。

    仅供参考:

    指标要做到精准,就必须使用科学方法选指标。

    选指标常用方法是指标分级方法和OSM模型。

    1. 指标分级方法:指标分级主要是指标内容纵向的思考,根据企业战略目标、组织及业务过程进行自上而下的指标分级,对指标进行层层剖析,主要分为三级T1、T2、T3。

    • T1指标:公司战略层面指标 用于衡量公司整体目标达成情况的指标,主要是决策类指标,T1指标使用通常服务于公司战略决策层。

    • T2指标:业务策略层面指标 为达成T1指标的目标,公司会对目标拆解到业务线或事业群,并有针对性做出一系列运营策略,T2指标通常反映的是策略结果属于支持性指标同时也是业务线或事业群的核心指标。T2指标是T1指标的纵向的路径拆解,便于T1指标的问题定位,T2指标使用通常服务业务线或事业群。

    • T3指标:业务执行层面指标 T3指标是对T2指标的拆解,用于定位T2指标的问题。T3指标通常也是业务过程中最多的指标。根据各职能部门目标的不同,其关注的指标也各有差异。T3指标的使用通常可以指导一线运营或分析人员开展工作,内容偏过程性指标,可以快速引导一线人员做出相应的动作。

    2. OSM模型(Obejective,Strategy,Measurement):是指标体系建设过程中辅助确定核心的重要方法,包含业务目标、业务策略、业务度量,是指标内容横向的思考。

    O:用户使用产品的目标是什么?产品满足了用户的什么需求?主要从用户视角和业务视角确定目标,原则是切实可行、易理解、可干预、正向有益。

    S:为了达成上述目标我采取的策略是什么?

    M:这些策略随之带来的数据指标变化有哪些?


    10. 就项目中提到的某个实体,讲一下他对应的属性有哪些

    实际项目问题,根据简历中写的叙述。

    这里也给我们提个醒:简历中所写的项目我们必须非常熟悉才行,并且我们需要熟悉所写项目的整个生命周期,包括项目开发 前中后 期的所有内容,说的时候可以比简历上写的更详细,但是千万不能和简历上有出入。


    11. 如果你建模的话,你会如何建模

    具体的建模可看这篇文章:数仓建设中最常用模型--Kimball维度建模详解

    以下内容截取自上述文章

    提到建模,就牢记维度建模四步走,模型怎么建,就围绕以下四步叙说:





    维度建模四步走

    1、选择业务过程
    维度建模是紧贴业务的,所以必须以业务为根基进行建模,那么选择业务过程,顾名思义就是在整个业务流程中选取我们需要建模的业务,根据运营提供的需求及日后的易扩展性等进行选择业务。

    2、声明粒度
    从关注原子粒度开始设计,也就是从最细粒度开始,因为原子粒度能够承受无法预期的用户查询。但是上卷汇总粒度对查询性能的提升很重要的,所以对于有明确需求的数据,我们建立针对需求的上卷汇总粒度,对需求不明朗的数据我们建立原子粒度。

    3、确认维度
    维度表是作为业务分析的入口和描述性标识,所以也被称为数据仓库的“灵魂”。声明完粒度之后,就要确定哪些属性是维度,那么怎么确定哪些属于维度属性呢,这里就不详细展开了,可以点击上面的文章链接,有详细说明。

    4、确认事实
    维度建模的核心原则之一是同一事实表中的所有度量必须具有相同的粒度。这样能确保不会出现重复计算度量的问题。有时候往往不能确定该列数据是事实属性还是维度属性。记住最实用的事实就是数值类型和可加类事实。

    这块内容太多了,说完以上四步之后可以在具体的聊下数仓是怎么分层的,每层都存放什么数据等。具体文章可点击:结合公司业务分析离线数仓建设


    12. 主要都抽取哪些数据源,使用什么工具

    根据简历的项目回答。

    以下仅供参考,主要抽取的数据:

    • 业务库数据,使用sqoop进行抽取

    • 流量日志数据,使用flume实时采集

    • 第三方公司数据,使用通用接口采集

    13. 描述一下抽取的内部逻辑,怎么实现的

    根据简历的项目回答。

    以下仅供参考:

    在开始创建抽取系统之前,需要一份逻辑数据映射,它描述了那些提交到前台的表中原始字段和最终目标字段之间的关系。该文档贯穿ETL系统。

    设计逻辑:

    • 有一个规划

    • 确定候选的数据源

    • 使用数据评估分析工具分析源系统

    • 接受数据线和业务规则的遍历

    • 充分理解数据仓库数据模型

    • 验证计算和公式的有效性

    逻辑数据映射的组成:目标表名称、表类型、SCD(缓慢变化维度)、源数据库、源表名称、源列名称、转换。

    这个表必须清晰的描述在转换的过程中包含的流程,不能有任何疑问的地方。

    表类型给了我们数据加载过程执行的次序:先是维表,然后是事实表。与表类型一起,加载维表过程SCD类型很重要,开发之前需要理解哪些列需要保留历史信息以及如何获取历史信息所需的策略。

    在源系统得到确认和分析之前,完整的逻辑数据映射是不存在的,源系统分析通常分为两个主要阶段:数据发现阶段,异常检测阶段。

    数据发现阶段:需要ETL小组深入到数据的需求中,确定每一个需要加载到数据仓库中的源系统,表和属性,为每一个元素确定适当的源或者记录系统是一个挑战,必须仔细评估。

    异常检测阶段:检查源数据库中每一个外键是否有NULL值。如果存在NULL值,必须对表进行外关联。如果NULL不是外键而是一个列,那么必须有一个处理NULL数据的业务规则。只要允许,数据仓库加载数据一定用默认值代替NULL。


    14. 除了工作,有去读什么书学习吗

    仅供参考:

    前段时间读了《数仓工具箱-维度建模权威指南》这本书,受益颇多,对维度建模有了一个清晰的认知,维度建模就是时刻考虑如何能够提供简单性,以业务为驱动,以用户理解性和查询性能为目标的这样一种建模方法。

    目前正在读《大数据日知录:架构与算法》,这本书涉及到的知识非常多,全面梳理了大数据存储与处理的相关技术,看书能让我更加系统化,体系化的学习大数据的技术。

    注:以上两本书的电子版,可在五分钟学大数据公众号后台获取,回复关键字:数仓工具箱 或 大数据日知录

    15. 你觉得flink和spark streaming有什么区别

    这个问题是一个非常宏观的问题,因为两个框架的不同点非常之多。但是在面试时有非常重要的一点一定要回答出来:Flink 是标准的实时处理引擎,基于事件驱动。而 Spark Streaming 是微批( Micro-Batch )的模型。

    下面就分几个方面介绍两个框架的主要区别:

    • 架构模型:

    • Spark Streaming 在运行时的主要角色包括:Master、Worker、Driver、Executor;

    • Flink 在运行时主要包:Jobmanager、Taskmanager 和 Slot。

    • 任务调度:

    •  
      • Spark Streaming 连续不断的生成微小的数据批次,构建有向无环图 DAG, Spark Streaming 会依次创DStreamGraph、JobGenerator、JobScheduler;

      • Flink 根据用户提交的代码生成 StreamGraph,经过优化生成 JobGraph,然后提交给JobManager 进行处理, JobManager 会根据 JobGraph 生成 ExecutionGraph,ExecutionGraph 是 Flink 调度最核心的数据结构,JobManager 根据 ExecutionGraph 对 Job 进行调度。

    • 时间机制:

    •  
      • Spark Streaming 支持的时间机制有限,只支持处理时间。

      • Flink 支持了流处理程序在时间上的三个定义:处理时间、事件时间、注入时间。同时也支持 watermark 机制来处理滞后数据。

    • 容错机制:

    •  
      • 对于 Spark Streaming 任务,我们可以设置 checkpoint,然后假如发生故障并重启,我们可以从上次 checkpoint 之处恢复,但是这个行为只能使得数据不丢失,可能 会重复处理,不能做到恰好一次处理语义。

      • Flink 则使用两阶段提交协议来解决这个问题。

      Flink的两阶段提交协议具体可以看这篇文章:八张图搞懂 Flink 端到端精准一次处理语义 Exactly-once

      16. Spark Streaming相比Flink有什么优点

      一般都是问 Flink 比 Spark 有什么优势,这个是反过来问的,要注意哦

      微批处理优势:

      Spark Streaming 的微批处理虽然实时性不如Flink,但是微批对于实时性要求不是很高的任务有着很大优势。

      • 比如10W+的数据写入MySql,假如采用Flink实时处理,Sink 到 MySql 中,Flink是事件驱动的,每条都去插入或更新数据库,明显不靠谱,因为数据库扛不住。假如在Flink的Sink处加上批处理,虽然可以提高性能,但是如果最后一个批次没有达到批大小阈值,数据就不会刷出进而导致数据丢失。

      • Flink是基于状态的计算,所以在多个窗口内做关联操作是很难实现的,只能把所有状态丢到内存中,但如果超出内存,就会直接内存溢出。Spark 因为是基于RDD的可以利用RDD的优势,哪怕数据超出内存一样算,所以在较粗时间粒度极限吞吐量上Spark Streaming要优于Flink。

      语言优势:

      • Flink和Spark都是由Scla和Java混合编程实现,Spark的核心逻辑由Scala完成,而Flink的主要核心逻辑由Java完成。在对第三方语言的支持上,Spark支持的更为广泛,Spark几乎完美的支持Scala,Java,Python,R语言编程。

      17. 有什么想问的吗

      面试是双方相互了解的过程,所以出于礼貌在面试结束询问一下你有没有什么想问的。当然面试官也想借此了解你对他们公司的了解程度及感兴趣程度。

      所以请不要回答“我没有问题了”,而是要把这个问题当作最后一次发言机会。问的问题要围绕着这家公司本身,要让对方觉得你很关心、关注公司。

      以下是可以问的:

      • 公司对这个岗位的期望是什么样的?其中,哪些部分是我需要特别努力的?

      • 是否有资深的人员能够带领新进者,并让新进者有发挥的机会?

      • 公司强调团队合作。那在这个工作团队中,哪些个人特质是公司所希望的?

      • 能否为我介绍一下工作环境?

      以下是不该问的:

      • 薪资待遇

      • 过于高深的问题

      • 超出应聘岗位的问题

         

    展开全文
  • 学习群的几个小伙伴和我都有面试ebay 大数据岗位的经历,而且也都拿了offer,我特意抽出了一些时间把问题和部分答案就行了汇总,希望对大家有帮助。 全文篇幅1万字左右,从数据结构到Java再到大数据都有整理,可以...

    前言

    学习群的几个小伙伴和我都有面试ebay 大数据岗位的经历,而且也都拿了offer,我特意抽出了一些时间把问题和部分答案就行了汇总,希望对大家有帮助。

    全文篇幅1万字左右,从数据结构到Java再到大数据都有整理,可以先收藏起来,补缺补漏。ebay大数据组也持续招人。

    一、  java基础

    1、 Queue 和Stack你平时有用过么,说说你常用的方法,他们的却别在哪呢?

    2、 了解java的异常吗,有什么区别,常见的异常有哪些呢?

    3、 两个字面值相同的Integer,它们两个用等于号去比较,结果是 true还是false ?(这个题要分两部分去回答,结果可能为true,也可能为 false。因为有缓存)

    4、 可以讲一下你常用的集合类么?他们的实现类有哪些?

    5、 ArrayList 、LinkedList的区别,底层的实现呢了解吗,有没有什么优缺点,分别适合于什么样的场景,多线程环境下,有没有安全的 list的实现类呢?

    6、 其他数据结构的了解吗?LinkedHashMap、 ConcurrentSkipHashMap(作为一个扩展,面试的时候问到的不是很多,能答出来挺好,答不出来也没关系)

    7、 说一说你对HashSet的理解,越详细越好 ( tip:底层是用hashMap 实现的), treeSet有了解吗?聊一聊?

    8、 HashMap的疯狂试探:

    a. HashMap 的底层数据结构是什么样子的

    b. 了解hash冲突吗?它是如何解决 hash冲突的

    c. 请你简单叙述一下hashMap的 put和get 操作,当然,能说多细就说多细?

    d. Jdk7 和jdk8中对 hashMap做了什么改进嘛(红黑树)?

    e. 有没有其他的解决冲突的办法呢

    f. HashMap 中的hash函数了解吗?那他的扩容机制了解吗?

    g. HashMap 为什么扩容是2倍呢,可以说说嘛?

    h. 假如说我加入一个键值对,这个时候出现了冲突,它只怎么把这个节点加入进去?是加入到当前bucket所对应的链表的头结点还是尾节点?(答不上来可以问一个稍微简单的, equals和 == 的区别,以及其中hashCode的作用)

    i. 可以说说什么条件下,可以把一个链表转成红黑树呢?它里面的大概流程是什么,了解吗?

    j. 有没有想过为什么选用了红黑树,而不是其他的数据结构,譬如说二叉树,二叉查找树,或者其他的树?

    k. 在高并发大流量的情况下,hashMap有什么问题吗,会不会造成 cpu达到100% ?如果会,那是在哪一步可能会出现这个问题呢(插入、删除、查找、扩容)?

    9、 ConcurrentHashMap的疯狂试探:

    a、 他和HashTable的区别呢?

    b、 说说你对JUC包的了解?

    c、 ConcurrentHashMap 中是怎么加锁的?

    d、 1.7 和1.8中, ConcurrentHashMap的区别是什么?

    e、 ConcurrentHashMap 是怎么做到线程安全的呢?(CAS和锁)

    f、 为什么会抛弃分段锁,它有什么毛病吗(上面一个题回答上才可以问这个)?

    g、 知道红黑树的transfer过程么?简单的描述一下

    10、 多线程下的疯狂试探:

    a. 多线程了解吗?说说线程的生命周期?

    b. 线程池有用到过吗?怎么用的,jdk有提供那些线程池(总共提供了四种)?

    c. 线程的状态有哪些呢?

    d. 线程池的核心参数有哪些?(核心线程数、最大线程数、时间、时间单位、队列、拒绝策略、默认的线程工厂)

    e. Wait ,yeild, stop,sleep 、join、 start、run 的区别和如何使用?

    f. 接着上题:这四种有什么区别吗,你用过哪一种,可能存在什么问题吗?

    g. 接上题:拒绝策略有哪些呢?了解吗?聊聊?

    h. 接上题:你刚才说了队列,线程池中的队列有哪些?有界队列、无界队列、同步队列都有了解吗?聊聊?

    i. 如何实现一个消费者和生产者的循环消费和生产呢?(有两种方式,一种是通过锁,lock或者 Synchronize,还有一个是通过ArrayBlockingQueue 实现)

    j. 你可以实现线程之间的相互通信吗?如何实现?要不写一个?

    11、 线程安全的疯狂试探:

    a. Synchronzie 了解吗?谈谈你的理解

    b. 在一个普通方法上加synchronize和在一个静态方法上加 synchronize有什么区别(对象锁和类锁的的区别)?

    c. Synchronize 和lock有什么区别呢?说说你对 lock的理解?

    d. Lock 的公平和非公平锁?

    e. 说一说volitaile为什么保证不了原子性,可以保证可见性嘛?如何保证的( jvm的多线程的内存模型有关系)

    f. 了解CountDownLatch么, CyclicBarrier的区别呢?

    g. Synchronize 的实现原理知道吗?moniter的实现机制呢,为什么加了 Synchronzie关键字,就可以在多线程下是安全的(这个回答要从java 对象的Object头来回答)

    h. 类锁和对象锁的区别呢?字节码的体现呢?

    i. Java 中的自旋锁、偏向锁、读写锁、重锁等了解吗?

    j. 了解java重对象的对象头嘛?有哪些属性和字段呢?

    k. Aqs(AbstractQueuedSynchronizer) 了解吗?它和lock的关系?说说 aqs中的核心思想?

    l. Lock 中存在锁升级嘛,他是可重入得嘛,那Synchronize是可重入得嘛,有没有锁升级的概念?

    m. Volitaile 了解吗?他的作用是什么呢,内存语义是什么呢?有没有了解过cpu的缓存一致性协议?

    n. 还知道其他的juc类嘛,有哪些呢(譬如 lockSupport)?

    12、 jvm的疯狂试探:

    a. 了解jvm么? jvm的内存模型?

    b. Java 如何判断一个对象是否还活着呢?

    c. Java 的类加载了解吗?

    d. Java 类加载器了解吗,有哪些呢?那它的双亲委派了解吗?

    e. Jvm 指令你知道哪些(jps, jstack,jinfo ,jmap……),都有什么作用呢?

    f. Java 的垃圾回收算呢,了解吗,G1回收算法了解吗?

    g. Jvm 参数你了解吗,知道多少说多少?

    h. 在实战中有进行过jvm调优嘛,怎么做的,

    i. Java 的对象年龄知道吗,有什么作用吗?

    j. Young GC和fullGC 了解吗,如何触发,如果在你的项目中,频繁出现young GC 怎么办?

    13、 设计模式的疯狂试探:

    a. 你了解的设计模式有哪些?

    b. 可以写一个单例模式嘛,工厂模式呢,抽象工程模式解决了什么问题?

    c. 策略模式、责任链模式、适配器模式写一个,写不出来的话,java中在哪用到了这些模式

    d. 代理模式了解吗,会写吗,jdk代理和 cglib代理的区别呢,说说你的理解?

    二、  数据结构与算法

    1、 排序算法了解什么?能不能手写一个快速排序、或者归并排序,堆排序有了解吗?

    2、 给你一个一元二次方程公式,你写一个方法,用计算机语言实现它。

    3、 图了解么,有向图呢?你可以实现一个有向图么?(假如他回答的是二维矩阵,可以反问他有没有更好的解决方案呢,因为这个图可能是个稀疏矩阵)

    4、 接上题,在图中,如何判断两个节点的联通性,可以写代码写出来么?

    5、 给你一个1T的 Int文件,然后你只有一台内存是8G 的机器,如何用最快的方法,求出里面出现频率最高的topN个数?

    6、 算法的时间复杂度和空间复杂度了解吗?说说你了解的算法的时间复杂度和空间复杂度。

    7、 二叉树了解吗,树的广度优先算法和宽度优先算法了解吗?写一个他的前序(中序、后序)遍历可以么(递归和非递归的方式都可以写出来么)?

    8、 给你一个字符串,请检查中间出现的括号的正确性,譬如:({[]}),((()))这都是个合法的字符串,(()())((()这就不是一个合法的字符串;

    9、 给你一个单向链表,检测它有没有形成环?

    10、 给你一个单向链表,如何反转,可不可以把空间复杂度降低到O(1)级别?

    11、 写一个字符串匹配算法,判断在一个字符串中是否包含另外一个字符串(一般都会说循环去比较,这样的时间复杂度很高,有一个算法是KMP,面试者要是能提到 KMP都就很不错了,因为很多面试官都不知道,也不会)?

    12、 可以用两个栈模拟一个队列么?

    13、 如何判断两棵树相不相等

    14、 动态规划有了解吗?

    a. 给你一个机器人,它每次只能向右或者向下走一步,其中,中间有一个障碍物,不可以经过,请问,在一个n*m的矩阵中,这个机器人总共有多少种走的方法?(答不出来就降低一下难度,把中间的那个障碍物去掉)

    b. 青蛙跳知道吗?给你一个数组,里面的每一个数字代表青蛙可以前进的最大的步数,如何判断这个青蛙可不可以达到终点;譬如2, 3,4 ,1就可以, 1,2 ,1, 0,1 就不可以;

    c. 爬楼梯,假设有一个n阶的楼梯,你每次都只能爬 1或者2 个台阶,请问有多少种不同的方法可以爬上去呢?

    d. 给你一个整数数组,找到一个具有最大和的连续子数组(子数组至少包含一个元素),返回最大值

    e. 给你一个容量为V的背包,现在有 N件商品(有重复,相同的商品可以随意取),每件商品的体积是v1 ,价值是w1,请问,这个背包所能容纳的最大价值是多少?

    f. 一个100层高的楼,有两颗鸡蛋,你需要用最少的次数找到那个临界点,这个临界点以上的楼层上摔下去,鸡蛋都会碎掉,以下的楼层,鸡蛋是不会碎的,(扩展,加入现在是 N层高的楼房,你现在有m 个鸡蛋,m>=1,用最少的次数找到那个临界点)

    三、  数据库大汇总

    1、 用过mysql嘛?了解吗?

    2、 Mysql 事务了解吗,隔离级别呢,每种隔离级别会出现什么问题?

    3、 Mysql 的锁了解吗(表锁、行锁、间隙锁,读写锁)?

    4、 Mysql 引擎知道吗,innodb和 myisam的区别知道吗,说说底层的实现?

    5、 聚簇索引和非聚簇索引知道么,有什么区别?

    6、 B+ 树知道吗?为什么使用B+树?

    7、 分库分表做过吗,如果让你去实现分库分表,你有什么需要考虑或者注意的嘛?

    8、 了解死锁嘛?知道他是怎么产生的嘛,如何避免呢?

    9、 Sql 优化了解过吗?说说你的理解,给你一条sql,你会怎么优化?

    四、  框架

    1、 redis大家庭:

    a. redis 是什么,能干嘛,怎么用?

    b. Redis 的基础数据类型有哪些?

    c. Reids 除了这些,还有哪些数据结构,能解决什么问题?

    d. Redis 集群有搭建过么,说说你的实现

    e. Redis 如何实现分布式锁

    f. Redis 的支持事务么?

    g. 位图了解吗?

    h. 布隆过滤器了解吗,他的原理是什么呢?

    i. Redis 的通信协议你知道嘛?

    j. Redis 中的数据结构底层了解吗?string的编码、 list的编码、zset 的编码;

    k. 在集群环境下,Redis的分布式锁一定可靠吗, redis社区有没有提供可靠地分布式锁的集群方案(有,红锁)?

    l. Redis 的持久化你知道么,说说rdb和 aof的区别

    m. Aof 瘦身知道么?如何瘦身

    n. Redis 的拒绝策略你知道么?那它的淘汰策略你知道么

    o. Redis 的哨兵模式呢,了解吗?

    p. Zookeeper 了解吗,用zookeeper实现分布式锁,和 redis实现有什么不同呢,说说他们的原理?

    2、 Spring大家庭:

    a. Autowire 和Resource 的区别

    b. 谈谈你对spring的理解,它干了什么?

    c. Spring 的依赖注入和切面呢?

    d. Spring 的事务了解吗,他的传播机制呢

    e. Spring 的aop切面详细说说,你的应用场景呢?

    f. Springmvc 用过吗?了解他的启动流程嘛?说说你的看法

    g. Spring 中的bean的生命周期呢,了解吗?如何扩展一个 bean的生命周期?

    h. Spring 源码读过吗?有没有想过他是如何解析在xml中定义的 bean的。

    i. 在spring的配置文件中加入 component-scan标签,它就可以自动加载所有添加相应注解的java 类,这个是怎么做到的呢,你知道嘛?

    j. Dubbo 了解吗?dubbo是怎么和 spring想结合的?

    3、 消息中间件大家庭:

    a. 你了解消息中间件有哪些?

    b. 谈谈你对topic 和partition的理解?

    c. Kafka中的 isr和osr 有了解吗?

    d. Kafka的高水位你知道嘛?

    e. Kafka的分区器、拦截器、序列化器你了解吗?

    f. 消息的可靠性怎么保证?

    g. 消息丢失怎么办?kafka 有什么保证策略?(我了解kafka,你们也可以问问其他的,譬如 rocketMq)

    h. Kafka的事务你了解过吗(这个特别难,一般别问昂)?

    4、 zookeeper大家庭:

    a. 谈谈你对zookeeper的理解?

    b. Zookeeper 的节点类型你知道么?

    c. Zookeeper 的心跳机制呢?

    d. Zookeeper 的优势在哪?

    e. 知道zookeeper的 watch嘛?

    f. Cap 理论知道吗?

    g. Paxos 算法呢,了解吗?

    5、 springBoot大家庭:

    a. 什么是springboot?

    b. 为什么要用springboot呢?

    c. Spring boot 的核心配置文件有哪几个?他们的区别是什么?

    d. Spring boot 的配置文件有哪几种格式?区别?

    e. Spring boot的核心注解是那个?它主要由哪几个注解组成的?

    f. 如何理解springboot的配置加载顺序?

    五、离线方向

    1. 数据优化中,需要注意哪些关键词

    2.     Uninon 跟uninon all 的区别

    3. 除了distinct外如何使用SQL 对数据去重

    4. 项目中etl过程

    5.     Spark的运行流程

    6.     Sql开窗函数,开窗函数中row_number与rank 的区别

    7.     Avg、sum、count 函数,在某列有空值的情况下,结果会有哪些不同

    8. 一个表两个字段,一个id,一个values;values 有连续相同;但是有缺失,找出缺失的地方补全(连续缺失的字段如何补全)

    9. 数据仓库的基本原理

    10. 数据表的各个模型,例如(雪花模型),简述

    11. 数据优化中除了用过mapjoin之外,还用过哪些join( 不是常见的五种),简述

    12. 修改批量文件中的词

    13. Shell脚本的定时任务

    1.英语自我介绍,说一下越到的最大的挑战

    2.union和union all的区别

    3.给了个题目,一个表两个字段,一个是id,一个是value ,value是连续相同的,但是有缺失的,找出来缺失的地方补全

    4.去重的操作

    5.spark提交任务的流程

    6.Spark oom怎么处理

    7.join有哪些?mapsidejoin是什么知道吗(不知道,大概猜了下,然后就没继续问)

    8.Linux指令用过哪些?

    9.用shell直接查找到文件中的一个词,然后替换(这个不会)

    10.Data modeler用过没

    11.维度建模什么情况

    1.用英语介绍下数据仓库和数据集市的区别

    2.讲下 linux 免密登陆

    3.介绍下spark执行流程

    4.spl 开窗函数

    5.shell 脚本读取文件

    6.项目中最自豪的事情

    7.数据库中count(*) 和count(1) 在什么情况下数据不一致

    8.最有压力的事情

    9.shell 脚本替换文件内容,替换文本

    10.数据倾斜调优

    1.英语介绍一下olap和oltp 的区别

    2.olap的产品知道哪些

    3.数仓模型建设

    4.对表的设计

    5.data modeler工具

    6.项目中的etl过程

    7.统计人员使用什么工具查询

    8.数据报表工具知道哪些

    9.工作主要涉及的技术有哪些

    10.每日数据量多少,存量多少

    11.如何通过sparksql对数据进行更新

    12.hbase数据如何更新

    13.两表join跑不出数据会是什么原因,如何解决

    14.如何进行mapjoin

    15.开窗函数

    16.linux命令考查

    17.hdfs上跨节点如何数据迁移

    18.免密登录如何实现

    19.ip映射是记录在哪个文件中

    20.如何批量修改文件中某一字符串

    21.如何确保项目成功交付

    22.项目交付时如何进行数据验证

    23.项目中最有成就感的事情

    六、Spark相关

    Q: Spark任务提交后的流程

    A: 只要能说出来sparkContext, DAG, Stage, Executor 就大致上应该了解些。

    详细答案参考:

    1)构建Spark Application的运行环境(启动SparkContext ),SparkContext向资源管理器(可以是Standalone、Mesos 或YARN)注册并申请运行Executor资源;

    (2)资源管理器分配Executor资源并启动StandaloneExecutorBackend ,Executor运行情况将随着心跳发送到资源管理器上;

    (3)SparkContext构建成DAG图,将DAG 图分解成Stage,并把Taskset发送给Task Scheduler。Executor向SparkContext 申请Task

    (4)Task Scheduler将Task发放给Executor 运行同时SparkContext将应用程序代码发放给Executor。

    (5)Task在Executor上运行,运行完毕释放所有资源。

    Q: Spark的API有哪两大类?分别解释一下和举个例子?

    A: Transformation & Action.Transformations是转换操作,如map, filter, union, reduceByKey等,Actions 是执行操作,如count, collect, reduce, saveAsXXX等

    Q: Spark中的union属于宽依赖还是窄依赖? 有无shuffle?

    A: 属于窄依赖,无shuffle

    SQL:

    Q: union all 和 union 有什么区别?哪个性能好?

    A: union all 不去重, union会去重。Union all性能好,因为无需额外去重

    Q: 如何判断一张表里某个字段有重复?

    A: 利用COUNT 加HAVING ,答到这个的一般没问题, 具体如下:

    SELECT COL, COUNT(1) AS CNT FROM TABLEGROUP BY 1 HAVING CNT > 1

    Q: 有一张表有两个字段,分别是商品ID和商品价格,如何取到商品价格是前10 名的所有商品ID?

    A: 如果只能想到ORDER BY + LIMIT的,说明SQL 较弱。知道用窗口函数(PARTITION BY)的话,至少说明应该不止做过简单的SELECT * FROMTABLE,但想到用row_number() 的话。。不行, 如果会问价格是否有重复的话,说明对问题考虑得算周全,因为价格通常都会重复,ID是一般唯一的,如果知道rank() , dense_rank()的话基本就没问题了。当然也有不用partition by 的方式,但步骤较多

    数仓:

    Q: 数据仓库一般的分层有哪些

    A: 不同公司叫法不同,但是可以让他解释每层分别放什么样的数据, 下面是网上抄的,大同小异,知道基本概念就行

    ODS:Operation Data Store

    原始数据

    DWD(数据清洗/DWI) data warehouse detail

    数据明细详情,去除空值,脏数据,超过极限范围的

    明细解析

    具体表

    DWS(宽表-用户行为,轻度聚合) data warehouseservice ----->有多少个宽表?多少个字段

    服务层--留存- 转化-GMV-复购率-日活

    点赞、评论、收藏;

    轻度聚合对DWD

    ADS(APP/DAL/DF)-出报表结果 Application Data Store

    做分析处理同步到RDS数据库里边

    Q: 维度表和事实表分别是什么?举些例子?

    A: 简单解释:

    事实表就是交易表。

    维度表就是基础表。

    二者的区别:

    维度表的冗余很大,主要是因为维度一般不大(相对于事实表来说的) ,而维度表的冗余可以使事实表节省很多空间。

    事实表一般都很大,如果以普通方式查询的话,得到结果一般发的时间都不是我们可以接受的。所以它一般要进行一些特殊处理。如SQL Server 2005就会对事实表进行如预生成处理等。

    事实表一般是没有主键的,数据的质量完全由业务系统来把握。

    七、SQL相关

    1.distributeby 、sort by 、cluster by 、order by 区别?

    1). order by 只有一个reduce负责对所有的数据进行排序,若大数据量,则需要较长的时间。建议在小的数据集中使用order by 进行排序

    2). order by 可以通过设置hive.mapred.mode参数控制执行方式,若选择strict ,则order by 则需要指定limit(若有分区还有指定哪个分区);若为nostrict ,则与关系型数据库差不多。

    3). sort by 基本上不受hive.mapred.mode影响,可以通过mapred.reduce.task 指定reduce个数,查询后的数据被分发到相关的reduce中。

    4). sort by 的数据在进入reduce前就完成排序,如果要使用sort by 是行排序,并且设置map.reduce.tasks>1,则sort by 才能保证每个reducer输出有序,不能保证全局数据有序。

    5). distributeby 采集hash算法,在map 端将查询的结果中hash值相同的结果分发到对应的reduce文件中。

    6). distributeby 可以使用length方***根据string 类型的长度划分到不同的reduce中,最终输出到不同的文件中。 length 是内建函数,也可以指定其他的函数或这使用自定义函数。

    7). cluster by 除了distribute by 的功能外,还会对该字段进行排序,但是排序只能是升序排序,不能指定排序规则为ASC 或者DESC,所以cluster by = distribute by +sort by 。

    2.请简述 以下sql 执行顺序是什么?

    select

    catid,

    count(orderid) as sales

    from t_tab

    where catid <> "c666"

    group by  catid

    having count(orderid) > 10

    order by count(orderid) desc

    limit 100

    答:

    from -> where -> group by ->having -> select -> order by -> limit

    3.问:(1 )两条语句的执行结果是否一样?为什么?

    (2 )假设,数据量很大的情况下,您会选择哪种语句执行?也可以自行开发

    --sql 语句 1

    select

    t1.id,t1.xxx,t2.xxx

    from t1 left join t2

    on t1.id = t2.id and t1.id < 10

    --sql 语句 2

    select

    t1.id,t1.xxx,t2.xxx

    from t1 left join t2

    on t1.id = t2.id

    where t1.id < 10

    答:1)由于left join,right join,full join的特殊性,不管on上的条件是否为真都会返回left 或right表中的记录,full则具有left 和right的特性的并集。

    sql 语句 1 中 采用的是left join,所以 on 里的 t1.id <10 对左表 t1 不起作用,结果还是会返回t1 表的所有数据

    sql 2 则是先 通过 on 上的条件,将两表关联,在最终关联好的表上,在进行过滤,所以只会返回t1.id < 10 的所有数据

    2) 当数据量很大的情况下,基于上述情况我会选择 sql 2 ,但是性能不高,可以采用以下查询

    select
    
    tmp_t1.id,tmp_t1.xxx,t2.xxx
    
    from
    
    (
    
    select * from t1 where t1.id < 10
    
    ) tmp_t1 left join t2
    
    on tmp_t1.id = t2.id

    4.count(distinct user_id) 和 group by user_id 之后 求 count 两者有什么区别?

    首先要清楚,count(distinct) 的原理机制,首先他是将数据通过map 端发往一个reduce,之后reduce接收到数据之后,会将数据放入到 hashset 中去重,之后cleanUp() 方法,在执行最后的逻辑,比如:计算hashset 的size等。

    这里就出现了一些问题,

    1)数据都发往一个reduce会造成数据倾斜,

    2)程序从分布式变成单机程序,影响效率

    3)程序执行过程中,只产生一个job

    但也不是绝对的,当数据量很小的时候,此时我们并不需要采分布式执行,一个job运行足矣,但是,当数据量比较大的时候,这时count(distinct) 就暴露除了大大的弊端,所以,此时,不应该采用此法来实现去重

    group() by  count() 当数据量比较大的时候,采用此法,先分组,这时已经在map端实现了去重机制,之后数据发往reduce 数据量已经变得很小了,并且此法涉及到shuffle ,所以reduce的压力不会集中在某个上,并且会产生多个job 。

    1.1 group() by  count() 一定比count(distinct) 性能要好吗?

    不一定,当数据量比较大的时候采用group() by  count() 会比count(distinct) 要好,但是在数据量比较小的时候,一个 job就可以处理,没必要用两个job ,也没必要shuffle,所以调优看情况而定

    总结:

             所有的面试题目都不是一成不变的,特别是像一线大厂,上面的面试题只是
    给大家一个借鉴作用,最主要的是给自己增加知识的储备,有备无患。最后给大
    家分享Spring系列的学习笔记和面试题,包含spring面试题、spring cloud面试
    题、spring boot面试题、spring教程笔记、spring boot教程笔记、最新阿里巴
    巴开发手册(63页PDF总结)、2022年Java面试手册。一共整理了1184页PDF文档
    。私信博主(777)领取,祝大家更上一层楼!!!

     

     

    展开全文
  • 大数据开发工程师面试题(附答案)

    万次阅读 2018-12-27 16:07:35
    在这里我还是要推荐下我自己建的大数据学习交流qq裙:458345782, 裙 里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据开发相关的),包...

    之前采访毕业生的时候,有小伙伴提出意见,想看小编分享一些面试的干货,于是小编不负众望,今天给大家带来了一篇大神级面经,希望可以帮助即将毕业或正在找工作的小伙伴儿们,祝你们早日找到心仪的工作!

    在这里我还是要推荐下我自己建的大数据学习交流qq裙:458345782, 裙 里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据开发相关的),包括我自己整理的一份2018最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴
     

    MapReduce

     

    1. 不指定语言,写一个WordCount的MapReduce

    我:最近刚学了scala,并且就有scala版本的WordCount,刚好学以致用了一下:

     


     

    补:至于java版本,虾皮博主的一篇文章讲解的非常细致: 
    Hadoop集群(第6期)_WordCount运行详解

    http://www.cnblogs.com/xia520pi/archive/2012/05/16/2504205.html

     

    2. 上述写的程序中.map((_,1))的输出结果是什么

    我:通过flatMap将其扁平化,而.map((_,1)) 则是每个出现单词,1这样的形式展现,此时还没归并。

     

    3. 你能用SQL语句实现上述的MapReduce吗?要求按照基于某个字段的值的频次倒序,并且以维度——频次的形式结果展现?

     

    我:基于某个字段——决定了要用group By,频次要用count聚合,倒序自然少不了desc。 


    补:框架搭好就是往里塞了:

     

     

    4.给你一份乱序的100万个数字的文件,你如何来排序?

     

    我:先拆分成若干小的,然后再排(思路是从希尔排序出发的) 
    补:内部排序算法:希尔排序

     

    Spark

     

    1. 说一说Spark程序编写的一般步骤?

    我:初始化,资源,数据源,并行化,rdd转化,action算子打印输出结果或者也可以存至相应的数据存储介质 


    补:具体的可看下图:

     

     

    2. Spark有哪两种算子?

    我:Transformation(转化)算子和Action(执行)算子。

     

    3. Spark提交你的jar包时所用的命令是什么?

    我:submit。 
    面试官:spark-submit? 
    我:嗯,spark-submit。

     

    4. Spark有哪些聚合类的算子,我们应该尽量避免什么类型的算子?

    我:aggeragate 
    面试官:还有呢? 
    我:记不清了。。。 


    面试官:还有你刚刚写的那个groupByKey哈 


    补:

     

    在我们的开发过程中,能避免则尽可能避免使用reduceByKey、join、distinct、repartition等会进行shuffle的算子,尽量使用map类的非shuffle算子。这样的话,没有shuffle操作或者仅有较少shuffle操作的Spark作业,可以大大减少性能开销。

     

    5. 你所理解的Spark的shuffle过程?

    我:spark shuffle处于一个宽依赖,可以实现类似混洗的功能,将相同的Key分发至同一个Reducer上进行处理。 


    补:详细探究Spark的shuffle实现

    http://blog.csdn.net/johnny_lee/article/details/22619585

     

    6. 你如何从Kafka中获取数据?

    我:topic 
    补:分布式消息系统:Kafka

     

    7. 对于Spark中的数据倾斜问题你有什么好的方案?

    我:可以先分析基数大造成数据倾斜的维度,将其适当的拆分。 


    补:Spark性能优化指南:高级篇

     

    编程

     

    1.如果我有两个list,如何用Python语言取出这两个list中相同的元素?

    我:list(set(list1).intersection(set(list2))),通过set 的intersection取交集的函数实现相同元素的提取。

     

    2.请你给出在Python中较快获取一个元素的数据结构,并且说出其时间复杂度以及它的缺陷是什么?

     

    我:因为之前也在做一些leetcode上的题目,多多少少重温了下数据结构,当时脑海里呈现的是数组方便查找,队列和栈方便插入删除,所以一听到较快获取果断数组了。 


    面试官:dict(字典) 
    我:厉害!! 


    面试官:那它的时间复杂度你晓得嘛? 
    我:不是特别了解,O(1),常数时间复杂度? 


    面试官:嗯,那你知道它的缺陷吗? 
    我:(中午吃撑了,TradeOff哈)不晓得 


    面试官:空间复杂度较高哈 


    补: 反思了一下,之所以说错,可能和以前学习算法时,起承转合的过度,并未将栈、队列和map,或者dict直接比较,而是从数组切换到队列和栈,所以就和之前的那个PUT和POST差不多,训练逻辑正确,确实数组查询记录方便,但训练广度有些多样性不够。 



    算法备忘录——基础数据结构与复杂度 
    常用数据结构和算法操作效率的对比总结

     

    3. 做几道OJ的题目(英文的),说一说这个问题的要求和注意点,以及可以获得正确结果的你的思路?

     

    恢复IP地址

     

     

    Given a string containing only digits, restore it by returning all possible valid IP address combinations. 
    Example 
    Given “25525511135”, return 
    [ 
    “255.255.11.135”, 
    “255.255.111.35” 
    ] 
    Order does not matter.
    

     

    我:思考了一会儿,没想出来,只能想出个不通用的思路。 
    面试官:给你个提示,尝试用树这个数据结构。 


    补:此处埋一个坑,学完树的数据结构再回来解决。

    快乐数

     

     

    Write an algorithm to determine if a number is happy. 
    A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers. 
    Example 
    19 is a happy number 
    1^2 + 9^2 = 82 
    8^2 + 2^2 = 68 
    6^2 + 8^2 = 100 
    1^2 + 0^2 + 0^2 = 1
    

     

    我:思路是模拟过程法,即按照它验证一个数是否是快乐数的方式进行模拟,当然也有些取巧的方式,如果某个中间结果曾出现过,妥妥滴死循环嘛,即刻跳出。 


    面试官:思路是对的 
    我:我觉得这会TLE,肯定有取巧的方法(这道题目之前好像接触过) 


    补:回去搜了一下,发现之前一直求助的一个大神的博客通过模拟过程用Python实现的: 
    Happy Number (之前的怀疑有更巧方法在于时常保持偷懒的思维也是必要的)

     

    4. 你常用的IDE有哪些?

    我:Java:Eclipse;Python:PyCharm;Scala:IntelliJ IDEA;Shell:VIM

     

    5. 你了解设计模式吗?

    我:不了解,但以后回去买本O’Really的《设计模式》 
    补:封面如下:

     

     

    6. 什么是Restful API?

    我:由于对Restful的了解只停留在使用层面,给我的感觉像是一种资源的提交获取,GET获取,POST/DELETE/PUT都可以看作是一种提交操作 


    补:

    【专业定义】:一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

     

    RESTful百度百科

     

     

    Devops

     

    1. 数据库读写分离的目的是什么?

    我:①减轻负载;②权限控制 


    补:读写分离的作用 
    看了上面的文章,减轻负载是首要目的,至于权限控制,更像是一种实现方式,不像目的。

     

    2. ZooKeeper是什么?非大数据领域,我们可以用ZooKeeper来做些什么?

     

    我:ZooKeeper是分布式协调组件,非大数据领域,可以用ZooKeeper来做HA或者存储数据,比如配置信息啥的。(Znode) 
    补:ZooKeeper 典型应用场景一览

    在这里我还是要推荐下我自己建的大数据学习交流qq裙:458345782, 裙 里都是学大数据开发的,如果你正在学习大数据 ,小编欢迎你加入,大家都是软件开发党,不定期分享干货(只有大数据开发相关的),包括我自己整理的一份2018最新的大数据进阶资料和高级开发教程,欢迎进阶中和进想深入大数据的小伙伴
     

    展开全文
  • 1.Spark处理数据流程、并行度决定机制 2... 推荐文章: Hive经典面试题之连续登录、行转列和列转行 数仓相关面试题 海量大数据处理面试题和思路总结 linux系统层面调优和常见的面试题大数据学习与分享】技术干货合集
  • 公众号推文规则变了,点击上方"数据社",设为星标后台回复【加群】,申请加入数据学习交流群此面试题来自牛客网友分享的美团优选一面,面试时长一小时。网友情况:海外水本,在某...
  • 本篇是本周周四博主面试遇到的问题,在此和大家分享一下。 正文 1.介绍一下你的项目 那肯定是拿自己最拿手的项目啊,博主最近交付的项目名叫:XXX综合分析系统,就拿它讲一讲咯。 参考示例:这是我的一个小伙伴 分享...
  • 5:字节跳动Java面试题-大数据方向 6:百度Java面试题 7:蚂蚁金服Java面试题-中级 8:蚂蚁金服Java面试题-高级 9:京东Java面试题-中级 10:拼多多Java面试题-电商部 11:商汤科技Java面试题 12:中软国际Java面试...
  • 大数据开发面试题

    2021-12-16 23:58:27
    字节跳动大数据开发面试题-附答案_yuan_more的博客-CSDN博客_字节跳动大数据面试题
  • 大厂真题之唯品会-Java大数据开发工程师.pdf
  • 前两天跟朋友感慨,怎么这么快就年底了,开年要是有跳槽打算,想拿个好 offer 的话,现在就得准备起来了。大数据这行一直是缺人的,之前还有个 CTO 跟我抱怨,秋招面试了几百人,结果合适的...
  • java方向大数据面试题整理

    千次阅读 2018-05-08 16:05:47
    1.String 和StringBuffer的区别JAVA平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串,即包含多个字符的字符数据这个String类提供了数值不可改变字符串而这个StringBuffer类提供的字符串进行修改...
  • 大数据面试题及答案【最新版】大数据高级面试题大全(2021版),发现网上很多大数据面试题都没有答案,所以花了很长时间搜集,本套大数据面试题大全 最近由于要准备面试就开始提早看些面试、笔试题。以下是自己总结的...
  • 当今时代,跳槽确实是大部分人升职加薪最快的方式,特别是职业生涯初期。说起来也是很无奈,公司经常是宁愿花更多的钱来请个新人也不愿意加薪留住老人。面试了 N 多公司之后,我发现其实问来问去也...
  • 大数据开发面试题总结-超详细

    万次阅读 多人点赞 2019-11-18 16:51:27
    11、面试题:创建实例对象的五种方式: 调用构造器(公开) 静态工厂方法(构造器私有) 可以实现单例 反射(Class,Constructor,Method,Field) 克隆(Object.clone()) 反序列化...
  • 大数据开发工程师面试题锦集

    千次阅读 2018-06-17 17:10:01
    方案2:根据业务需要手动set值(JAVA代码): conf.setLong("mapred.task.timeout", 900000L);    11、谈谈数据倾斜,如何发生的,并给出优化方案。 原因: (1)key分布不均匀 (2)业务数据本身的...
  • 面试,,,Apache Flink是由Apache软件基金会开发的开源流处理框架,其核心是用Java和Scala编写的分布式流数据流引擎。Flink以数据并行和流水线方式执行任意流数据程序,Flink的流水线运行时系统可以执行批处理和流...
  • 坐标城市:浙江杭州 ...面试题 1.kafka 重启是否会导致数据丢失 2.讲一讲checkpoint 3.描述mapreduce的过程,中间有几次写磁盘 4.ORC、Parquet等列式存储的优点 5.调度系统的实现,开源调度系统Azkaba
  • 15道经典大数据面试题

    千次阅读 2021-11-25 05:09:32
    写一个算法:删除排序链表中的重复元素_II Leetcode83 答案解析 1自我介绍+项目介绍 一般自我介绍 3 分钟,开头为: 面试官你好,我叫 xxx ,目前在 xxx 公司担任大数据开发工程师,组内专注于 xxx 技术,在任职...
  • 字节跳动大数据开发面试题-附答案

    千次阅读 多人点赞 2021-09-29 14:26:47
    面试题来自牛客网友分享的字节跳动应届一面,面试时长一小时。 网友情况:985 本硕。 参考答案由本公众号提供。如有错误,欢迎指正! 以下为面试过程中提问,岗位为大数据开发: 自我介绍+项目介绍 为...
  • 个人面试总结,内容包含常见JavaEE+大数据部分+分布式开发Java 基础、容器、多线程、反射、对象拷贝、Java Web 、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、MyBatis、...
  • 于是我决定对市场上大多的有关大数据核心的面试题做一个详细的分析,也希望大家尽可能的做到举一反三,而不是局限于题目本身。 1、选择题 1.1.下面哪个程序负责 HDFS 数据存储。 a)NameNode b)Jobtrac
  • Java版水果管理系统源码 ...本套面试题分为两版,这两版的面试题有部分重合,区别主要是分类方式不同,第一版是按照大数据技术进行划分(此版),第二版是按照各大厂进行划分(另一版,可在公众号【五分
  • pdf密码是:dsjsfc 总结了大数据开发基础组件如:hadoop,hive,spark,kafka,hbase,数仓,flink,java,es,flume,等面试
  • 大数据开发面试集锦

    2018-09-13 17:35:11
    本文收集了近年各公司大数据开发岗位的面试题,涉及Hadoop、Spark、kafka、HBASE等大数据组件相关组件
  • 大数据面试题

    2018-04-15 21:05:13
    大数据面试题收集,主要包括storm面试相关/hadoop以及spark面试相关
  • 面试官:您好,请讲述一个自己最熟悉的项目,自己在其中的贡献? 最优解答: ·l项目规模和介绍:某项目,是为多少用户提供什么服务,哪些功能和核心模块。 ·l技术架构:遇到高并发,高可用的实际问题是什么...
  • 大数据开发工程师--面试宝典

    千次阅读 2022-02-19 12:56:11
    1.前言 随着5G终端的快速增长,产生大量的数字信息,这些数据的采集和挖掘对于企业、政府具有重大意义。目前,对于海量数据的存储和挖掘存在诸多难题,...本文旨在与大数据开发人员一起学习探讨大数据开发技术问题。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,465
精华内容 8,586
关键字:

大数据开发java面试题