大数据面试之58面试题

58面试题

** 学长1**

1)笔试部分(基础题)
(1)请用图形的方式表示出Java运行时数据区
(2)以上哪些数据区在空间不足的情况下会抛出异常?
(3)Java工程出现内存泄露如何排查?请写出你知道的排查工具以及方法
(4)以下代码的输出结果是什么?
String str1=new StringBuilder(“58”).append(“ganji”).toString();
System.out.println(str1.intern == str1);
String str2=new StringBuilder(“ja”).append(“va”).toString();
System.out.println(str2.intern == str2);
(5)在Scala中有一种函数其参数可以为参数,这样的函数称为高阶函数,请参照scala中常见map函数实现一个名为mymap的高阶函数,mymap接收两个参数值,第一个函数(x:Int)=>3*x,第二个为Int型数据。在mymap函数体内将第一个参数作用于第二个参数。

2)笔试部分(算法)
(1)给定两个只含有0和1字符的字符串,实现二进制加法。如:
String str1 = “101”
String str2 = “11”
实现binarySum(String s1,String s2),使得输入以上字符时返回字符串"1000"。
(2)给定一个整型数组array(没有重复元素),再给出一个目标值target,数组array中有两个元素的加和等于target,要求返回这两个元素的下标。如array = {1,2,4,6,3} target = 8,则返回[1,3]。

3)笔试部分(大数据相关)
(1)现有一张Hive表,表里面有两个字段uuid和ts,分隔符为\001分别表示用户唯一标识和用户来访的时间戳。
有如下需求
(a)要求计算每个用户的最后一次来访时间,用MapReduce实现(写完整的代码)
(b)你所写的代码有没有优化的空间?如果有,请写出优化方法。
(2)用Spark实现WordCount。
(3)Spark-Streaming+Kafka实现实时计算这种方案中通过什么方式保证数据的准确性?
(4)分别列举Hadoop和Spark中的文件缓存方式。
(5)HDFS的一致性是指什么?有几种语义?
(6)基于Yarn的推测执行是怎么实现的?描述其大致算法。
QUESTION NO:1
publicclass Test1{
public static void changeStr(String str){
str=“welcome”;
}
public static void main(String[] args)(
String str=“1234”;
changeStr(str);
System. out. println(str);
}
}
输出结果:
QUESTION NO:2
public class Test2{
static boolean foo(char c){
System out print©;
return true;
}
public static void main(String[] argv){
int i=0;
for(foo(‘A’);foo(‘B’) &&(i< 2);foo(‘C’)){
i++;
foo(‘D’);
输出结果:

学长2

1、一面(学长面)
1)技术部分
(1)HashMap如何遍历。(这个忘了,百度了一下是用EntrySet)
(2)SparkStreaming窗口操作的3个时段设定分别是什么,问到倍数这块(第二轮也问到了)
2)项目部分
(1)讲了一下推荐项目怎么回事
(2)因为是招数仓这块的,所以三轮数仓都问了(第二轮的数仓问题比较偏,我写到第二轮总结里)
3)算法部分
(1)快排或冒泡排序,我讲的是快排
4)情景部分
(1)设定了一个情景,手写SQL,比较简单吧

2、二面
1)技术部分
(1)flatMap和map的区别
(2)A表joinB表,用MR是如何处理的(这个真没看过,百度了之后才知道的)
(3)Yarn的资源调度
(4)Hbase有put方法,那如何批量put数据进hbase里,用什么方法(这个也没答上,面试的时候想不起来了)
(5)NameNode的HA,一台挂掉之后,另一台会丢失数据吗,挂掉之前有一部分日志为更新(这个我答的是edits会保存下来,和之前的镜像一起加载,所以不会丢)
(6)问了Kafka的消费速度(这个我说的几十兆每秒,群里已经发了,是1G每秒,可自由发挥)
(7)Kafka分区(我说的5个,有点多了,应该说2个或者3个吧)
(8)问了HDFS的块你们设置的是多大(我说的128M,他有疑惑,我说默认是128M,他也表示疑惑)
(9)问了Spark版本,说一直是这个版本吗(我说现在用的是2.0,之前用的1.6)
(10)Sparksql什么时候不能读到Hive的数据(这个也没答上来)
2)项目部分
(1)你们数仓之间的数据是怎么调度的(我说直接写SQL,他就问说你怎么知道你的数据已经存储成功了,当时尬了一会,我说用Crontab调度的,他问我这用Crontab合适吗,我说那设置Oozie可以设置一段程序执行完再执行下一条程序,这块基本就聊炸了吧,我不知道Hive内部数据调度还需要这样调,我以为直接读)
3)情景部分
(1)设置了一个情景,让写SQL,也相对简单吧

3、三面
项目组负责人
(1)要招数仓和算法的,所以主要问了数仓。
(2)数仓的DM为何不由数据组来设计封装(因为我说的是指负责设计下面三层,然后由不同的业务组区数仓里调数据),你觉得是数据组封装有什么不妥吗
(3)HBase里面你们都存了具体哪些业务数据(这个我说了大概的存哪类型的数据,他问的非常深,必须说出存的具体是什么数据,我后来说每个商品的点击次数统计,实时更新,),他说这些数据我觉得存到redis或者mysql中也行呀,为什么要非要用HBase(我说HBase查的块,他说我觉得这样的数据量Redis,MySQL查的也不慢吧),然后问了我你认为多少的数据量适合用HBase(我说的几百万)
(4)结合你这个HBase里存储的数据,说一下你们的rowkey怎么设计的(这块说的不好,因为前面说的不好,感觉这边说就强行设计了)

学长3

1)技术部分
(1)对Hadoop各组件之间通信RPC协议了解
(2)Hadoop的读数据流程
(3)传输过程中DataNode挂掉怎么办
(4)HBase源码
(5)HBase构建二级索引如何保证索引与数据的一致
(6)JVM架构,堆内存,GC算法,问平时会不会调GC算法
(7)-Xms和-Xmx设置一个和设置两个而且两个设置的都是一样有什么区别吗
(8)查看当前Java内存各个代的内存比例
(9)查看线程堆栈的命令
(10)查看Java进程里边对象的大小,
(11)堆内存泄露怎么看,除了Dump出来用MAT还有什么简单的方法
(12)Java进程用户反馈请求服务很慢,但是代码不是你开发的你怎么排查问题,
多线程,实现线程同步的方法

2)算法部分
(1)问对数据结构和算法了解吗,堆栈和链表什么的

学长4**
一面:
sparkstreaming 用了哪些算子
flatmap与map的区别
dwd 的是啥 dws s是啥, dwt t是什么
你们获取kafka Offset的API是什么
HBase创建表时,rowkey的设计
ODS层干了什么
yarn工作机制说一下
kylin怎么用的
superset怎么用的
说一下JVM重用的参数
你们合并文件用的哪个参数 merge.mapred.files
Hive使用时遇到过什么困难
sparkstream如果进行精确一次性消费

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大数据小理

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值