-
2018-09-06 19:36:34
日期:2017-2-25
职位:大数据测试工程师
问题一、如何优化自动化框架,单个用例执行ok多个用例执行有失败
1、插件造型是否合理;
2、断言是否合理;
3、用例之件使用弱关联;
4、一条用例验证一个功能点;
5、高内聚代偶合;
6、合理使用动态加载;
7、等待时间要合理
8、封闭装数要不易复杂。
问题二 自动化测试用例执行时间太长
1、减少用例等待时间;
2、优化封闭函数;
3、划分优先级,首先验证主流程用例;
4、优化脚本,减少用例之间的依赖;
5、多台电脑执行,分批执行。
问题三 测试人员如何对待代码
1、自动化测试人员应以脚本为主;
2、白盒测试人员应以驱动和测试桩为准;
3、测试人员能够作到理清代码思路和业务逻辑即可;
4、测试人员的代码水准定不能和开发相比。
问题四 如何规划
1、每周工作汇总形成博客;
2、坚持学习,包括脚本、业务;
3、可走dba和运维路线;
4、不断提升linux水平;
5、数据库也待提高。更多相关内容 -
Hibernate面试题分析_大数据测试面试题
2020-11-20 14:41:44Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernate可以自动生成SQL语句,自动执行,使得Java程序员可以... -
云计算 大数据的面试题,百度,腾讯,阿里都用到过
2018-07-22 21:32:33针对我们大数据 ,云计算, 所有用的到的面试题,包含近几年公司用到过的面试题,大家可以借鉴一下,百度,腾讯,阿里公司都用到过的面试题 -
大数据常见面试题及答案
2021-01-16 16:46:49(详细)_走在大数据的小路上-CSDN博客 1)NameNode它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。 2)SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期...1、rdd的5大特性:
Spark之RDD的定义及五大特性 - |旧市拾荒| - 博客园
2、Hive分桶和分区的区别:
https://blog.csdn.net/u010003835/article/details/80911215
3、Hive表动态分区和静态分区
https://blog.csdn.net/opensure/article/details/46537969
https://hero78.blog.csdn.net/article/details/80382174
4、一个Hive表,数据量很大,分布在集群的100个节点,现在需要定期取top100,如何设计/实现:
个人答案:先对100个节点的数据求top100,然后将数据导入1张表,再对该表求top100;
5、窗口函数
hive窗口函数必备宝典_dingchangxiu11的博客-CSDN博客_hive窗口函数
Hive开窗函数总结_Abysscarry的博客-CSDN博客_hive的开窗函数
6、hive sql和spark sql底层执行流程?
HIVE源码(1):HQL 是如何转换为 MR 任务的 - 秋华 - 博客园
Spark SQL的底层执行流程_蓝色校服的岁月的博客-CSDN博客_sparksql的执行流程
6、Spark任务的执行流程
Spark任务执行流程_wlk_328909605的博客-CSDN博客_spark执行任务的流程
Spark(五)Spark任务提交方式和执行流程 - Frankdeng - 博客园
spark集群的任务提交执行流程_bokzmm的博客-CSDN博客_spark执行流程
7、MapReduce和Spark的区别
mapreduce与spark的区别--内容详细_wyz0516071128的博客-CSDN博客
spark与mapreduce的区别 - db_record - 博客园
8、cache和persist的区别
每次进步一点点——spark中cache和persist的区别_housir的专栏-CSDN博客
9、什么是宽窄依赖
Spark宽窄依赖详解_modefrog的博客-CSDN博客_spark宽窄依赖
10、1)shuffle的过程描述一下
https://blog.csdn.net/kaede1209/article/details/81953262
hadoop shuffle:
https://blog.csdn.net/shujuelin/article/details/83992061
spark shuffle:
https://blog.csdn.net/weixin_42868529/article/details/84622803
https://blog.csdn.net/quitozang/article/details/80904040
2)MR的shuffle和Spark的shuffle之间的区别
MapReduce Shuffle 和 Spark Shuffle 区别看这篇就够了_reduce
https://blog.csdn.net/wuwang1988/article/details/80131728
https://blog.csdn.net/m0_37803704/article/details/86174267
11、增量合并具体是怎么实现的你了解吗?如果让你来实现的话你怎么写
12、flink和spark streaming有什么区别
https://blog.csdn.net/xianpanjia4616/article/details/85076247
干货 | Spark Streaming 和 Flink 详细对比
13、spark streamiing相比flink有什么优点
https://blog.csdn.net/mojir/article/details/96033432
14、udf和udaf
https://blog.csdn.net/xiaofengguojiangnan/article/details/80059703
15、spark你常用的参数设置有哪些
set spark.sql.adaptive.enabled = true;
set spark.sql.adaptive.join.enabled = true;
set spark.sql.adaptive.skewedJoin.enabled = true; --自动处理 Join 时数据倾斜
set spark.sql.parser.quotedRegexColumnNames = false;Spark常用参数解释及建议值_淡淡的倔强的博客-CSDN博客_spark常用参数
16、Hive的order by和sort by什么区别,都有哪些应用场景
Hive中Order by和Sort by的区别是什么?_春华秋实-CSDN博客
https://blog.csdn.net/qq_40795214/article/details/82190827
https://jthink.blog.csdn.net/article/details/38903775
17、Hive的distribute by和group by有什么区别
Hive:distribute by与group by,order by与sort by , cluster by的区别_云舒s的博客-CSDN博客
18、Dataframe和RDD有什么区别
RDD和DataFrame和DataSet三者间的区别_乌镇风云的博客-CSDN博客_rdd和dataframe有什么区别
https://blog.csdn.net/wo334499/article/details/51689549
https://blog.csdn.net/weixin_39793644/article/details/79050762
https://blog.csdn.net/weixin_39793644/article/details/79050762
19、Flink的原理
https://blog.csdn.net/sxiaobei/article/details/80861070
https://blog.csdn.net/oTengYue/article/details/102689538
20、数仓分层了解吗
21、数仓建模除了维度建模还有其他的吗
数仓理论之关系建模与维度建模_ITBOY_ITBOX博客-CSDN博客_关系建模和维度建模区别
22、数仓的特性讲一下
数据仓库具有四个主要特性_guanyi的博客-CSDN博客_数据仓库的四大特点
23、你真的了解全量表,增量表及拉链表吗?
你真的了解全量表,增量表及拉链表吗?_我的祖传代码-CSDN博客
24、数据仓库中的维表和事实表
数据仓库之维度表和事实表_不言尘世-CSDN博客_维度表和事实表
25、.数据倾斜有哪几种优化思路?
https://segmentfault.com/a/1190000009166436
https://segmentfault.com/a/1190000021439076?utm_source=sf-similar-article
26、考虑一个100亿数据的表关联一个10亿数据的表,如何优化
过滤、分桶
27、HashMap的底层原理
HashMap 的底层原理 - holyqueen - 博客园
java提高篇(二三)-----HashMap - chenssy - 博客园
28、去重都有哪些方式?
distinct、group by、row_number、hive的collect_set()
https://www.nowcoder.com/discuss/165412
29、数据量特别大的情况下(例如10g、100g、1t)如何用mr实现全局排序?
数据量很大的排序问题 大量数据如何排序_pan_jinquan的博客-CSDN博客
https://www.nowcoder.com/discuss/165412
30、flatmap算子的理解,flat原理,返回类型?(iterator)
Spark2.3 RDD之flatMap源码解析_DPnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnice的博客-CSDN博客
https://www.nowcoder.com/discuss/165412
31、hive的metastore的三种模式
https://www.nowcoder.com/discuss/165412
32、hive join的类别(方式)?
https://www.nowcoder.com/discuss/165412
33、对一组数据频繁插入删除,选哪种数据结构
堆---实现最小堆及堆的插入与删除_江城的博客-CSDN博客_堆插入
34、MR中的map具体流程
MapReduce 图解流程超详细解答(1)-【map阶段】 - 五三中 - 博客园
35、MR的map阶段完成了几次排序?
mapreduce过程发生多少次排序_Peanut的博客-CSDN博客_mapreduce有几次排序
36、海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
https://blog.csdn.net/zyq522376829/article/details/47686867
37、hdfs读写流程
hadoop hdfs 读写流程_lsp的博客-CSDN博客_hdfs读写流程
38、hdfs的体系结构
HDFS体系结构及常见功能_cp_Mark的博客-CSDN博客
39、一个datanode 宕机,怎么一个流程恢复
Datanode宕机了后,如果是短暂的宕机,可以实现写好脚本监控,将它启动起来。如果是长时间宕机了,那么datanode上的数据应该已经被备份到其他机器了,那这台datanode就是一台新的datanode了,删除他的所有数据文件和状态文件,重新启动。
40、hadoop 的 namenode 宕机,怎么解决
先分析宕机后的损失,宕机后直接导致client无法访问,内存中的元数据丢失,但是硬盘中的元数据应该还存在,如果只是节点挂了,重启即可,如果是机器挂了,重启机器后看节点是否能重启,不能重启就要找到原因修复了。但是最终的解决方案应该是在设计集群的初期就考虑到这个问题,做namenode的HA。
41、namenode对元数据的管理
NameNode元数据管理机制_dlrb_beautiful的博客-CSDN博客_namenode元数据管理
NameNode管理元数据的机制_汤小萌的博客-CSDN博客
42、yarn资源调度流程
Yarn资源调度工作原理_sxiaobei的博客-CSDN博客_yarn资源调度
https://blog.csdn.net/yunpiao123456/article/details/51802986
43、hadoop中combiner和partition的作用,分别举例什么情况要使用 combiner,什么情况不使用?
MapReduce:Combiner,partition的作用_Rnan_prince的博客-CSDN博客
MapReduce: combiner_北京小辉-CSDN博客
44、用mapreduce怎么处理数据倾斜问题?
MapReduce如何解决数据倾斜问题_wyqwilliam的博客-CSDN博客_mapreduce数据倾斜
用mapreduce怎么处理数据倾斜问题_复姓独孤的博客-CSDN博客_mapreduce数据倾斜
45、Mapreduce 的 map 数量 和 reduce 数量是由什么决定的 ,怎么配置
Hive mapreduce的map与reduce个数由什么决定?_lihuazaizheli的博客-CSDN博客_hive map数量由什么决定
46、MR运行流程解析
MR 运行原理_首席撩妹指导官的博客-CSDN博客_mr的原理
MapReduce的分区分组问题_mys_35088的博客-CSDN博客
47、HDFS数据安全性如何保证
-
存储在HDFS系统上的文件,会分割成128M大小的block存储在不同的节点上,block的副本数默认3份,也可配置成更多份;
-
第一个副本一般放置在与client(客户端)所在的同一节点上(若客户端无datanode,则随机放),第二个副本放置到与第一个副本同一机架的不同节点,第三个副本放到不同机架的datanode节点,当取用时遵循就近原则;
-
datanode已block为单位,每3s报告心跳状态,做10min内不报告心跳状态则namenode认为block已死掉,namonode会把其上面的数据备份到其他一个datanode节点上,保证数据的副本数量;
-
datanode会默认每小时把自己节点上的所有块状态信息报告给namenode;
-
采用safemode模式:datanode会周期性的报告block信息。Namenode会计算block的损坏率,当阀值<0.999f时系统会进入安全模式,HDFS只读不写。HDFS元数据采用secondaryname备份或者HA备份
48、在通过客户端向hdfs中写数据的时候,如果某一台机器宕机了,会怎么处理
在写入的时候不会重新重新分配datanode。如果写入时,一个datanode挂掉,会将已经写入的数据放置到queue的顶部,并将挂掉的datanode移出pipline,将数据写入到剩余的datanode,在写入结束后, namenode会收集datanode的信息,发现此文件的replication没有达到配置的要求(default=3),然后寻找一个datanode保存副本。
49、Hadoop优化有哪些方面
0)HDFS 小文件影响
(1)影响 NameNode 的寿命,因为文件元数据存储在 NameNode 的内存中
(2)影响计算引擎的任务数量,比如每个小的文件都会生成一个 Map 任务
1)数据输入小文件处理:
(1)合并小文件:对小文件进行归档(Har)、自定义 Inputformat 将小文件存储成SequenceFile 文件。
(2)采用 ConbinFileInputFormat 来作为输入,解决输入端大量小文件场景。
(3)对于大量小文件 Job,可以开启 JVM 重用。
2)Map 阶段
(1)增大环形缓冲区大小。由 100m 扩大到 200m
(2)增大环形缓冲区溢写的比例。由 80%扩大到 90%
(3)减少对溢写文件的 merge 次数。(10 个文件,一次 20 个 merge)
(4)不影响实际业务的前提下,采用 Combiner 提前合并,减少 I/O。
3)Reduce 阶段
(1)合理设置 Map 和 Reduce 数:两个都不能设置太少,也不能设置太多。太少,会导致 Task 等待,延长处理时间;太多,会导致 Map、Reduce 任务间竞争资源,造成处理超时等错误。
(2)设置 Map、Reduce 共存:调整 slowstart.completedmaps 参数,使 Map 运行到一定程度后,Reduce 也开始运行,减少 Reduce 的等待时间。
(3)规避使用 Reduce,因为 Reduce 在用于连接数据集的时候将会产生大量的网络消耗。
(4)增加每个 Reduce 去 Map 中拿数据的并行数
(5)集群性能可以的前提下,增大 Reduce 端存储数据内存的大小。
4)IO 传输
(1)采用数据压缩的方式,减少网络 IO 的的时间。安装 Snappy 和 LZOP 压缩编码器。
(2)使用 SequenceFile 二进制文件
5)整体
(1)MapTask 默认内存大小为 1G,可以增加 MapTask 内存大小为 4-5g
(2)ReduceTask 默认内存大小为 1G,可以增加 ReduceTask 内存大小为 4-5g
(3)可以增加 MapTask 的 cpu 核数,增加 ReduceTask 的 CPU 核数
(4)增加每个 Container 的 CPU 核数和内存大小
(5)调整每个 Map Task 和 Reduce Task 最大重试次数
50、列出正常工作的hadoop集群中hadoop都分别启动哪些进程以及他们的作用
正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么?(详细)_走在大数据的小路上-CSDN博客
1)NameNode它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。
2)SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。
3)DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanode守护进程。
4)ResourceManager(JobTracker)JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。
5)NodeManager(TaskTracker)执行任务
6)DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
7)JournalNode 高可用情况下存放namenode的editlog文件.
51、Hadoop总job和Tasks之间的区别是什么?
Job是我们对一个完整的mapreduce程序的抽象封装
Task是job运行时,每一个处理阶段的具体实例,如map task,reduce task,maptask和reduce task都会有多个并发运行的实例
52、Hadoop高可用HA模式
HDFS高可用原理:
Hadoop HA(High Available)通过同时配置两个处于Active/Passive模式的Namenode来解决上述问题,状态分别是Active和Standby. Standby Namenode作为热备份,从而允许在机器发生故障时能够快速进行故障转移,同时在日常维护的时候使用优雅的方式进行Namenode切换。Namenode只能配置一主一备,不能多于两个Namenode。
主Namenode处理所有的操作请求(读写),而Standby只是作为slave,维护尽可能同步的状态,使得故障时能够快速切换到Standby。为了使Standby Namenode与Active Namenode数据保持同步,两个Namenode都与一组Journal Node进行通信。当主Namenode进行任务的namespace操作时,都会确保持久会修改日志到Journal Node节点中。Standby Namenode持续监控这些edit,当监测到变化时,将这些修改同步到自己的namespace。
当进行故障转移时,Standby在成为Active Namenode之前,会确保自己已经读取了Journal Node中的所有edit日志,从而保持数据状态与故障发生前一致。
为了确保故障转移能够快速完成,Standby Namenode需要维护最新的Block位置信息,即每个Block副本存放在集群中的哪些节点上。为了达到这一点,Datanode同时配置主备两个Namenode,并同时发送Block报告和心跳到两台Namenode。
确保任何时刻只有一个Namenode处于Active状态非常重要,否则可能出现数据丢失或者数据损坏。当两台Namenode都认为自己的Active Namenode时,会同时尝试写入数据(不会再去检测和同步数据)。为了防止这种脑裂现象,Journal Nodes只允许一个Namenode写入数据,内部通过维护epoch数来控制,从而安全地进行故障转移。
52、简要描述安装配置一个hadoop集群的步骤
简单描述如何安装配置一个apache开源版hadoop,只描述即可,无需列出完整步骤,能列出步骤更好..._weixin_33750452的博客-CSDN博客
部署Hadoop集群的步骤_闪客-CSDN博客_hadoop集群启动验证实验部署流程
53、yarn的三大调度策略
YARN三种调度器和配置策略_ThisIsNobody的博客-CSDN博客_yarn调度器配置
你了解yarn的调度策略吗?快来看一看吧_shyming's blog-CSDN博客
54、hadoop的shell命令用的多吗?,说出一些常用的
Hadoop常用shell命令_媛测-CSDN博客_hadoop shell命令
55、namenode的fsimage与editlog详解
56、left semi join和left join区别
hive 的 left semi join 讲解_HappyRocking的专栏-CSDN博客
57、hive内部表和外部表的区别,及使用场景
Hive内部表和外部表的区别详解_Liu_Arvin的芝士小栈-CSDN博客_hive内部表和外部表的区别
hive-内部表外部表区别及各自使用场景_DCHAO的博客-CSDN博客_hive内部表和外部表的应用场景
58、用hive创建表有几种方式
https://blog.csdn.net/qq_36743482/article/details/78383964
hive部分:hive建表的三种方式(直接建表,查询建表,like建表)_wyqwilliam的博客-CSDN博客_hive查询建表
59、线上业务每天产生的业务日志(压缩后>=3G),每天需要加载到hive的log表中,将每天产生的业务日志在压缩之后load到hive的log表时,最好使用的压缩算法是哪个,并说明其原因
选择lzo,因为该压缩算法可切分,压缩率比较高,解压缩速度很快,非常适合日志
60、若在hive中建立分区仍不能优化查询效率,建表时如何优化
可以重新建表为分区分桶表
61、Hive 里边字段的分隔符用的什么?为什么用t?有遇到过字段里 边有t 的情况吗,怎么处理的?为什么不用 Hive 默认的分隔符,默认的分隔符是什么?
hive 默认的字段分隔符为 ascii 码的控制符001(^A),建表的时候用 fields terminated by '001'
遇到过字段里边有t 的情况,自定义 InputFormat,替换为其他分隔符再做后续处理
62、在hive的row_number中distribute by 和 partition by的区别
row_number over( partition by 分组的字段 order by 排序的字段) as rank(rank 可随意定义表示排序的标识);
row_number over( distribute by 分组的字段 sort by 排序的字段) as rank(rank 可随意定义表示排序的标识)
注意:
partition by 只能和order by 组合使用
distribute by 只能和 sort by 使用
63、hive和传统数据库之间的区别
大数据面试之hive和传统数据库之间的区别_shyming's blog-CSDN博客
64、hive中导入数据的4种方式
Hive中数据的导入与导出的几种方式_哇哈哈水有点甜的博客-CSDN博客_hive导出数据有几种方式
65、创建rdd的几种方式
RDD的几种创建方式_hellozhxy的博客-CSDN博客
66、Spark中Partition的数量由什么决定
Spark 中 Partition,Task,core,Executor的个数决定因素和关系_mzqadl的博客-CSDN博客
67、Spark中coalesce与repartition的区别
Spark中repartition和coalesce的区别与使用场景解析_墨卿风竹的博客-CSDN博客
68、sortBy 和 sortByKey的区别,reduceByKey和groupBykey的区别
Spark groupByKey,reduceByKey,sortByKey算子的区别_helloxiaozhe的博客-CSDN博客_spark的groupbykey
69、map和mapPartitions的区别
Spark中map与mapPartitions的区别详解-附测试_wuyue的博客-CSDN博客
70、cache和checkPoint的比较
spark中的cache() persist() checkpoint()之间的区别_Rocky-CSDN博客
71、spark共享变量和累加器
Spark系列(五)共享变量累加器_哆啦咪~fo-CSDN博客
72、当 Spark 涉及到数据库的操作时,如何减少 Spark 运行中的数据库连接数?
大数据面试-Spark专题-002_BigData2018的博客-CSDN博客
73、特别大的数据,怎么发送到excutor中?
74、Spark on Yarn作业执行流程?yarn-client和yarn-cluster有什么区别?
spark中yarn-client和yarn-cluster区别_卡奥斯道的博客-CSDN博客
75、spark任务为什么会被yarn kill掉?
实战解决 spark executor 被yarn杀掉的问题_边逛边看边学习-CSDN博客
76、sql问题:连续活跃n天用户的获取
sql连续登录3天以上用户_SQL窗口函数轻松解决连续N天购买用户问题_cstghitpku的博客-CSDN博客
77、spark中reparation和coalesce的用法和区别
spark中reparation和coalesce的用法和区别 - 灰信网(软件开发博客聚合)
https://blog.csdn.net/yjgithub/article/details/81028361
78、ClickHouse常用表引擎
篇二|什么是ClickHouse的表引擎? - 大数据技术与数仓 - 博客园
79、Spark小文件合并
spark sql合并小文件_sparksql合并小文件_weixin_39846612的博客-CSDN博客
Spark小文件合并_一直青蛙的博客-CSDN博客_spark合并小文件
34、算法:
1)给定一个长度为n的数组,求前k大的元素?
求有N个元素的数组中前k个最大的数?(N>=k)(python实现)_BRO_BMW的博客-CSDN博客
https://blog.csdn.net/zhou15755387780/article/details/81318105
2)有10G的数据,2G内存,取中位数。
文件中有10G个整数,乱序排列,要求找出中位数_黎明_新浪博客
10G个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可_xc889078的专栏-CSDN博客
https://blog.csdn.net/u014350758/article/details/22858161
程序员编程艺术:第十章、如何给10^7个数据量的磁盘文件排序_结构之法 算法之道-CSDN博客
3)给你一个字符串(可能很长),字符串包含数字和字母,要求将字符串里的字母反转,但数字不动。
【必备算法】字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母_A minor-CSDN博客
【必备算法】字符串(反转问题):LeetCode题 151. 翻转字符串里的单词,557. 反转字符串中的单词 III_A minor-CSDN博客
4)一个整型数组a,一个数key,求数组a中所有相加等于key的子数组。(注:注意子集概念。可能有负数。)
c语言练习题:求一个有序数组中,两个值相加为key的数字,返回这两个数字的下标_Wweakness的博客-CSDN博客
5)两个有序队列合成一个有序队列。
栈和队列----合并两个有序的单链表 - Demrystv - 博客园
6)将一个二维数组Z字输出。
用java实现二维数组的“之”字形输出 - doAction - 博客园
7)判断一个整数是否是回文。
8)平衡二叉树不额外使用空间返回第三大的值。
平衡二叉树(AVL)图解与实现_小张的专栏-CSDN博客_平衡二叉树
9)所有排序算法
https://blog.csdn.net/m0_37962600/article/details/81475585
https://blog.csdn.net/hiudawn/article/details/80380572
25、spark汇总
5、2020大数据面试题真题总结(附答案)
6、大数据面经
7、海量数据处理
海量数据面试题整理1.给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是..._weixin_34392843的博客-CSDN博客
-
-
【吐血整理】185道大数据面试题及答案
2021-07-22 00:42:52当今时代,跳槽确实是大部分人升职加薪最快的方式,特别是职业生涯初期。说起来也是很无奈,公司经常是宁愿花更多的钱来请个新人也不愿意加薪留住老人。面试了 N 多公司之后,我发现其实问来问去也...当今时代,跳槽确实是大部分人升职加薪最快的方式,特别是职业生涯初期。说起来也是很无奈,公司经常是宁愿花更多的钱来请个新人也不愿意加薪留住老人。
面试了 N 多公司之后,我发现其实问来问去也就那几个知识点,所以干脆把热点知识系统性地总结了一下,共有 185 道题目,希望能够帮助各位为面试做足准备,完美应对面试官的各种灵魂拷问,一举拿下心仪 Offer !
这些面试题主要分为六个部分:
Java 基础部分
异常、多线程、容器和 I/O
UML、面向对象的设计原则、GoF 设计模式、企业级设计模式、JDBC、XML 等知识
Struts 2 和 Hibernate
Java Web
数据结构和算法
基本涵盖了大数据岗位的所有重要技术栈。
由于原图太大,请文末扫码获取原图
面试时,面试官通常会从技术能力、沟通能力、管理能力等方面考察应聘者是否符合岗位要求,但本文着重讨论技术能力。
那技术能力如何考察?有以下几个方面:
基础能力
这个是硬指标,不过关的基本一票否决,当然技术能力的标准是根据工作年限,面试职位和薪资要求共同来决定的。面试官会根据实际情况有自己的判断。
常见的问题包括 Java 的 JVM、多线程、类加载、Scala 伴生对象,偏函数,柯里化,还有 Shell 和 Python 、HBase 读写流程,以及Yarn 任务提交流程等。
底层原理
不管干什么细分领域的开发,始终都要重视底层原理,这对能力的提升至关重要。在大数据岗位的面试中,涉及底层原理的问题大体如下:
Hbase 是如何存数据的,为什么读得快
Spark 为什么就算不在内存跑也比 MR 快
Zookeeper 数据怎么保证一致性
对选举机制的理解
源码
阅读源码是非常好的学习方式,在日常工作中我们或多或少都会接触一些开源代码,不管我们当前是什么水平,通过反复阅读源码,能力都会有所提升,小到对源码所提供的功能上的使用更加熟练,大到使我们的程序设计更加完美优秀。
因此在面试中,面试官通常也会问候选人有没有读过源码,以及从源码中获取到了什么信息、有什么帮助等问题。
系统设计
如果候选人独立负责过整个项目的系统设计,系统架构、设计模块的选型,这对于面试结果来说,绝对是一个加分项。一般会从可用性、可扩展性、性能、安全性、大数据量、高并发、分布式设计等多个角度考察。
以上问题如果回答得不太好,面试官可能会给个机会让你说下自己最熟悉的技术,不限制从哪些方面讲。这时候就要选取自己最擅长的领域,经得住面试官问下去的那种进行详细阐述,弥补前面留下的不够专业的印象。
在工作中,除了基本的技术能力以外,统筹和管理等软实力也很重要,因此,面试过程中,还有可能面临其他相关考察。
解决问题能力
如何排查 Hbase集群 cpu 过高问题
如何优化 Spark 任务
......
方案设计能力
说说数据仓库设计建模过程
说说数据质量监控系统怎么设计
......
针对这些常见问题,除了整理出的 185 道大数据岗位的面试问题及答案以外,还有关于 MapReduce、Hive、Hbase 的小案例,全文一共 143 页。
这份资料是拉勾赞助提供的,非常感谢拉勾的支持。除了这些面试资料,为了帮大家能够快速上岸大厂,晋升高薪岗位,拉勾还推出了「大数据高薪训练营」,拉勾 CTO 联合众实战型企业导师,全面掌握大数据高薪硬技能。
同时,拉勾已跟百度、美团、滴滴、阿里、腾讯、网易、快手等企业达成用人合作,目前已经有 10000+ 学员成功入职心仪公司。总结起来有这些特点:
1、对标大厂高薪标准,打造职场竞争力
2、企业型导师,学完即可上手大型真实项目
3、海量内推资源,过硬的应聘服务
另外,拉勾还整理了大厂在用的大数据技术平台项目案例等资料,更有拉勾金牌就业指导老师独家简历和面试准备技巧。需要的朋友可以扫码咨询。
最后,我还为想要报名的粉丝们争取到了一个限时福利:从本公号报名课程的同学,享 6 折优惠,仅限前5名!另外,报名的同学可以领取拉勾独家配置的大厂高薪技术资料一份,包含:
阿里飞天大数据开发手册
拉勾网Clickhouse平台实战视频
大厂面试真题一套
打造系统性高薪硬技能
拉勾独家面试+开发实战手册(限50份)
莫做收藏党!
换部苹果手机,不如投资自己
-
大数据 笔试题 面试题
2013-11-28 09:38:10文档内容收集于互联网,都是很经典的大数据处理题目,对面试笔试很有帮助 -
大数据面试题以及答案整理(一)
2018-02-27 22:27:40在进行大数据工作的面试中,将面试问题进行了汇总,然后对答案进行了整理。kafka的message包括哪些信息
一个Kafka的Message由一个固定长度的header和一个变长的消息体body组成
header部分由一个字节的magic(文件格式)和四个字节的CRC32(用于判断body消息体是否正常)构成。当magic的值为1的时候,会在magic和crc32之间多一个字节的数据:attributes(保存一些相关属性,比如是否压缩、压缩格式等等);如果magic的值为0,那么不存在attributes属性
body是由N个字节构成的一个消息体,包含了具体的key/value消息
怎么查看kafka的offset
0.9版本以上,可以用最新的Consumer client 客户端,有consumer.seekToEnd() / consumer.position() 可以用于得到当前最新的offset:
hadoop的shuffle过程
一、Map端的shuffle
Map端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘,而不是HDFS。每个Map的输出会先写到内存缓冲区中,当写入的数据达到设定的阈值时,系统将会启动一个线程将缓冲区的数据写到磁盘,这个过程叫做spill。
在spill写入之前,会先进行二次排序,首先根据数据所属的partition进行排序,然后每个partition中的数据再按key来排序。partition的目是将记录划分到不同的Reducer上去,以期望能够达到负载均衡,以后的Reducer就会根据partition来读取自己对应的数据。接着运行combiner(如果设置了的话),combiner的本质也是一个Reducer,其目的是对将要写入到磁盘上的文件先进行一次处理,这样,写入到磁盘的数据量就会减少。最后将数据写到本地磁盘产生spill文件(spill文件保存在{mapred.local.dir}指定的目录中,Map任务结束后就会被删除)。
最后,每个Map任务可能产生多个spill文件,在每个Map任务完成前,会通过多路归并算法将这些spill文件归并成一个文件。至此,Map的shuffle过程就结束了。
二、Reduce端的shuffle
Reduce端的shuffle主要包括三个阶段,copy、sort(merge)和reduce。
首先要将Map端产生的输出文件拷贝到Reduce端,但每个Reducer如何知道自己应该处理哪些数据呢?因为Map端进行partition的时候,实际上就相当于指定了每个Reducer要处理的数据(partition就对应了Reducer),所以Reducer在拷贝数据的时候只需拷贝与自己对应的partition中的数据即可。每个Reducer会处理一个或者多个partition,但需要先将自己对应的partition中的数据从每个Map的输出结果中拷贝过来。
接下来就是sort阶段,也成为merge阶段,因为这个阶段的主要工作是执行了归并排序。从Map端拷贝到Reduce端的数据都是有序的,所以很适合归并排序。最终在Reduce端生成一个较大的文件作为Reduce的输入。
最后就是Reduce过程了,在这个过程中产生了最终的输出结果,并将其写到HDFS上。
spark集群运算的模式
Spark 有很多种模式,最简单就是单机本地模式,还有单机伪分布式模式,复杂的则运行在集群中,目前能很好的运行在 Yarn和 Mesos 中,当然 Spark 还有自带的 Standalone 模式,对于大多数情况 Standalone 模式就足够了,如果企业已经有 Yarn 或者 Mesos 环境,也是很方便部署的。
standalone(集群模式):典型的Mater/slave模式,不过也能看出Master是有单点故障的;Spark支持ZooKeeper来实现 HA
on yarn(集群模式): 运行在 yarn 资源管理器框架之上,由 yarn 负责资源管理,Spark 负责任务调度和计算
on mesos(集群模式): 运行在 mesos 资源管理器框架之上,由 mesos 负责资源管理,Spark 负责任务调度和计算
on cloud(集群模式):比如 AWS 的 EC2,使用这个模式能很方便的访问 Amazon的 S3;Spark 支持多种分布式存储系统:HDFS 和 S3
HDFS读写数据的过程
读:
1、跟namenode通信查询元数据,找到文件块所在的datanode服务器
2、挑选一台datanode(就近原则,然后随机)服务器,请求建立socket流
3、datanode开始发送数据(从磁盘里面读取数据放入流,以packet为单位来做校验)
4、客户端以packet为单位接收,现在本地缓存,然后写入目标文件
写:
1、根namenode通信请求上传文件,namenode检查目标文件是否已存在,父目录是否存在
2、namenode返回是否可以上传
3、client请求第一个 block该传输到哪些datanode服务器上
4、namenode返回3个datanode服务器ABC
5、client请求3台dn中的一台A上传数据(本质上是一个RPC调用,建立pipeline),A收到请求会继续调用B,然后B调用C,将真个pipeline建立完成,逐级返回客户端
6、client开始往A上传第一个block(先从磁盘读取数据放到一个本地内存缓存),以packet为单位,A收到一个packet就会传给B,B传给C;A每传一个packet会放入一个应答队列等待应答
7、当一个block传输完成之后,client再次请求namenode上传第二个block的服务器。
RDD中reduceBykey与groupByKey哪个性能好,为什么
reduceByKey:reduceByKey会在结果发送至reducer之前会对每个mapper在本地进行merge,有点类似于在MapReduce中的combiner。这样做的好处在于,在map端进行一次reduce之后,数据量会大幅度减小,从而减小传输,保证reduce端能够更快的进行结果计算。
groupByKey:groupByKey会对每一个RDD中的value值进行聚合形成一个序列(Iterator),此操作发生在reduce端,所以势必会将所有的数据通过网络进行传输,造成不必要的浪费。同时如果数据量十分大,可能还会造成OutOfMemoryError。
通过以上对比可以发现在进行大量数据的reduce操作时候建议使用reduceByKey。不仅可以提高速度,还是可以防止使用groupByKey造成的内存溢出问题。
spark sql怎么取数据的差集
好像不支持
spark2.0的了解
更简单:ANSI SQL与更合理的API
速度更快:用Spark作为编译器
更智能:Structured Streaming
rdd 怎么分区宽依赖和窄依赖
宽依赖:父RDD的分区被子RDD的多个分区使用 例如 groupByKey、reduceByKey、sortByKey等操作会产生宽依赖,会产生shuffle
窄依赖:父RDD的每个分区都只被子RDD的一个分区使用 例如map、filter、union等操作会产生窄依赖
spark streaming 读取kafka数据的两种方式
这两种方式分别是:
Receiver-base
使用Kafka的高层次Consumer API来实现。receiver从Kafka中获取的数据都存储在Spark Executor的内存中,然后Spark Streaming启动的job会去处理那些数据。然而,在默认的配置下,这种方式可能会因为底层的失败而丢失数据。如果要启用高可靠机制,让数据零丢失,就必须启用Spark Streaming的预写日志机制(Write Ahead Log,WAL)。该机制会同步地将接收到的Kafka数据写入分布式文件系统(比如HDFS)上的预写日志中。所以,即使底层节点出现了失败,也可以使用预写日志中的数据进行恢复。
Direct
Spark1.3中引入Direct方式,用来替代掉使用Receiver接收数据,这种方式会周期性地查询Kafka,获得每个topic+partition的最新的offset,从而定义每个batch的offset的范围。当处理数据的job启动时,就会使用Kafka的简单consumer api来获取Kafka指定offset范围的数据。
kafka的数据存在内存还是磁盘
Kafka最核心的思想是使用磁盘,而不是使用内存,可能所有人都会认为,内存的速度一定比磁盘快,我也不例外。在看了Kafka的设计思想,查阅了相应资料再加上自己的测试后,发现磁盘的顺序读写速度和内存持平。
而且Linux对于磁盘的读写优化也比较多,包括read-ahead和write-behind,磁盘缓存等。如果在内存做这些操作的时候,一个是JAVA对象的内存开销很大,另一个是随着堆内存数据的增多,JAVA的GC时间会变得很长,使用磁盘操作有以下几个好处:
磁盘缓存由Linux系统维护,减少了程序员的不少工作。
磁盘顺序读写速度超过内存随机读写。
JVM的GC效率低,内存占用大。使用磁盘可以避免这一问题。
系统冷启动后,磁盘缓存依然可用。
producer端:
怎么解决kafka的数据丢失
宏观上看保证数据的可靠安全性,肯定是依据分区数做好数据备份,设立副本数。
broker端:
topic设置多分区,分区自适应所在机器,为了让各分区均匀分布在所在的broker中,分区数要大于broker数。
分区是kafka进行并行读写的单位,是提升kafka速度的关键。
Consumer端
consumer端丢失消息的情形比较简单:如果在消息处理完成前就提交了offset,那么就有可能造成数据的丢失。由于Kafka consumer默认是自动提交位移的,所以在后台提交位移前一定要保证消息被正常处理了,因此不建议采用很重的处理逻辑,如果处理耗时很长,则建议把逻辑放到另一个线程中去做。为了避免数据丢失,现给出两点建议:
enable.auto.commit=false 关闭自动提交位移
在消息被完整处理之后再手动提交位移
-
大数据面试题
2018-04-25 21:59:01Big Data 面试题总结JAVA相关1-1)List 与set 的区别?老掉牙的问题了,还在这里老生常谈:List特点:元素有放入顺序,元素可重复 ,Set特点:元素无放入顺序,元素不可重复。 1-2)数据库的三大范式?原子性、... -
大数据开发面试题总结-超详细
2019-11-18 16:51:2711、面试题:创建实例对象的五种方式: 调用构造器(公开) 静态工厂方法(构造器私有) 可以实现单例 反射(Class,Constructor,Method,Field) 克隆(Object.clone()) 反序列化... -
大数据面试题以及答案整理(面试必备)
2022-04-02 15:43:05(这个题要分两部分去回答,结果可能为true,也可能为false。因为有缓存) 4、 可以讲一下你常用的集合类么?他们的实现类有哪些? 5、 ArrayList、LinkedList的区别,底层的实现呢了解吗,有没有什么优缺点,分别... -
大数据常见面试题
2020-05-22 20:05:28Hadoop序列化的特点: 对于处理大数据的Hadoop平台,其序列化机制需要具有如下特征: 紧促:一个紧凑的序列化机制可以充分利用数据中心的带宽,使用高效的存储空间 快速:在进程间通信(包括 MapReduce过程中涉及的... -
真offer收割机!190道大数据面试真题大汇总(附答案详解)
2022-04-16 00:59:56如今这个数字化时代,需求大薪资高的,依然非大数据工程师莫属。我跟不少行业大佬聊过,他们纷纷表示,大数据现在依然处在非常强的爆发期,依然是“黄金时代”!这里有两个关键趋势:一是实时化,从传统的T+1数仓到... -
出一套高端大数据开发面试题(刷起来!!!)
2018-07-27 15:25:01一千个读者眼中有一千个哈姆雷特,一千名 大数据 程序员心目中就有一千套 大数据面试题。本文就是笔者认为可以用来面试大数据 程序员的面试题。 这套题的题目跟公司和业务都没有关系,而且也并不代表笔者本人可以把... -
大数据超详细面试题汇总(附答案)
2020-07-31 11:21:441.HDFS写文件流程 1.客户端向NameNode发送写文件请求。 2.NameNode检查是否已存在文件,检查客户端是否有写权限。若通过检查,在名称空间中创建一个新的文件。 3.文件系统返回一个输出流对象(DFSOutputStream),... -
大数据开发面试题必备20题
2021-12-07 15:02:512021年超全超详细的最新大数据开发面试题,附答案解析 -
185 道必须掌握的大数据面试真题(附答案)
2021-06-17 11:35:42185 道必须掌握的大数据面试真题(附答案) 当今时代,跳槽确实是大部分人升职加薪最快的方式,特别是职业生涯初期。...这些面试题主要分为六个部分: Java 基础部分 异常、多线程、容器和 I/O ... -
2020大数据面试题真题总结(附答案)
2020-11-27 12:22:39版本更新时间更新内容v1.02020-07-01新建v1.12020-07-18朋友面试大数据工程师提供的关于架构及数仓方面的题目(智云健康)v1.22020-08-08朋友面试数据专家... -
网易运维面试题
2019-02-23 20:56:052015年的题,想进运维的可以看一看,职位要求: 1. 负责公司运维体系的建设,组织在线移动APP和业务系统以及自建私有云的监控、维护,推进自动化运维; 2. 建立和完善公司的运维监控体系和事件处理机制,确保业务的... -
大数据工程师面试考题
2021-12-19 10:02:461、shell 的AWK命令调用方法 2、shell的sed命令调用方法 3、git指令的vebase/tree/charrity 4、CP/DCP区别 5、try catch exception捕捉错误,else作用是什么? 6、Python list如何增加item. 7、编写如下python 对二... -
大数据笔试面试题(转载)
2018-11-02 14:33:09全是数据挖掘的选择题,大概有48-50题,不过是在网上随处可以搜到的那种,连题目都不改一下,幸好刷过一遍。例如: 什么是KDD ? 使用交互式的和可视化的技术,对数据进行探索属于数据挖掘的哪一类任务? ... -
大数据面试-01-大数据工程师面试题
2018-01-12 14:52:381. 选择题 1.1. 下面哪个程序负责 HDFS 数据存储。 c)Datanode 答案 C datanode 1.2. HDfS 中的 block 默认保存几份? a)3 份 答案 A 默认 3 份 1.3. 下列哪个程序通常与 NameNode 在一个节点启动? d... -
大数据基础面试题1
2020-07-10 11:34:58Kafka压测 Kafka官方自带压力测试脚本(kafka-consumer-perf-test.sh、kafka-producer-perf-test.sh)。Kafka压测时,可以查看到哪个地方出现了瓶颈(CPU,内存,网络IO)。一般都是网络IO达到瓶颈。 Kafka的ISR... -
大数据大厂面试100题及详细答案解答,爆肝八小时近四万长文
2021-04-15 15:21:51后期会持续更新面试系列,以及收集一些大厂的面试题,希望能帮助到大家,同时本文比较长,可以关注之后收藏慢慢看,如果大家比较喜欢,大数据面试后续会持续更新,如果需要其他方向的面试题也可以评论或私信告诉我,... -
2020网易大数据开发面试题整理 (提前批) (持续更新)
2020-08-18 08:47:17博主近期在整理各大厂面试题,每天会更新一点,没有答案的题目,表示博主也不知道,有答案的题目也不一定正确,希望各位同学自主判断,如果博主有写错的地方,欢迎在评论区补充 1.spark数据倾斜怎么引起的?该怎么... -
Python面试题大全(五):测试、大数据、数据结构、架构
2019-05-23 16:33:29Python干货系列(一):python基础学习(面试题); Python干货系列(二):python高级语法; Python干货系列(三):Web开发(Flask、爬虫); Python干货系列(四):数据库篇; Python干货系列(五):测试、... -
网易大数据面试题
2020-03-26 11:35:36(PS:复选框上面的痕迹是鼠标滑过时选中的痕迹而非选项答案勿受干扰) 答案见下一篇博客: -
大数据面试题题目2020年底总结(一)
2020-11-05 21:55:03大数据面试题集锦(一) 1. java JVM内存结构 栈 堆 方法区 程序计数器 JVM内存回收机制 哪些需要回收 判断算法 引用计数法 每个对象创建的时候,会分配一个引用计数器,当这个对象被引用的时候计数器就加... -
java方向大数据面试题整理
2018-05-08 16:05:47使用继承可以让已经测试完备的功能得以复用,并且可以一次修改,所有继承的地方都同时生效。 27:什么是隐式的类型转化? 答案:隐式的类型转化就是简单的一个类型赋值给另一个类型,没有显式的告诉编译器发生了转化...