360面试真题汇总

360面试题

学长1

1)技术部分

(1)常用的Linux命令,Shell的awk、sed、sort、cut是用来处理什么问题的?

(2)Hive有自带的解析json函数,为什么还要自定义UDF、UDTF

(3)Json的格式,Json存的具体数据

(4)MapReduce过程

(5)Shuffle源码?其中Reduce的分区是怎么设置的,针对每个key,怎么把它放到对应的分区中?

(6)你了解的Hadoop生态圈的框架,及其大概在怎样的一个位置?

(7)MapReduce、Tez和Spark的区别?

(8)Spark读取文件如果内存不够的话,怎么处理?

2)手写部分

(1)自己写过MapReduce吗?怎么写的?

(2)最近七天连续三天活跃用户怎么实现的?手写一个各区域top10商品统计程序?

(3)平时遇到的数据倾斜的问题,怎么解决的?

(4)大表join大表怎么解决?

(5)每一层大概有多少张表?表的字段也需要记

(6)UDF、UDTF、UDAF区别?

3)算法部分

(1)二叉树的前中后序遍历?

(2)排序算法了解过吗?

(3)快排的时间空间复杂度?快排原理

(4)冒泡的时间空间复杂度?原理

4)情景部分

写一个程序获取ip(123.123.123.123)的地理位置信息,读取配置文件,返回结果ip \t loc_nation \t loc_pro \t loc_city

ip_num_start ip_num_end loc_nation loc_pro loc_city ISP

1910946943 1910946945 中国 辽宁 沈阳 联通

1910946947 1910946949 中国 辽宁 沈阳 联通

1910946950 1910946950 中国 辽宁 鞍山 联通

1910946951 1910946953 中国 辽宁 沈阳 联通

1910946959 1910946965 中国 辽宁 沈阳 联通

1910946966 1910946966 中国 辽宁 盘锦 联通

1910946967 1910946985 中国 辽宁 沈阳 联通

1910946986 1910946986 中国 辽宁 大连 联通

1910946995 1910947033 中国 辽宁 沈阳 联通

sc.read("input/.txt")
.mapPartition(data=>{
   val splitdata = data.split("\t")
   ip_num_start  = splitdata(0)
   ip_num_end = splitdata(1)
   loc_nation = splitdata(2)
   loc_pro = splitdata(3)
   loc_city = splitdata(4)
   ISP = splitdata(5)
   (ip_num_start, ip_num_end, loc_nation, loc_pro, loc_city)
})
.map(data=>{
   if(ip ){
      (data.loc_nation,data.loc_pro,data.loc_city)
   }
})

针对上面代码的一些问题:

(1)上面那段代码中,如果文件是一个很大的文件,Spark读取的时候用一个任务处理(单机),怎样可以让它读取的效率更高一点?

(2)MapPartition的原理是什么?

学长1

(1)常用的Linux命令,Shell的awk、sed、sort、cut是用来处理什么问题的?

(2)Hive有自带的解析json函数,为什么还要自定义UDF、UDTF

(3)json的格式,json存的具体数据

(4)写一段代码:

写一个程序获取ip(123.123.123.123)的地理位置信息,读取配置文件,返回结果ip \t loc_nation \t loc_pro \t loc_city

ip_num_start ip_num_end loc_nation loc_pro loc_city ISP

1910946943 1910946945 中国 辽宁 沈阳 联通

1910946947 1910946949 中国 辽宁 沈阳 联通

1910946950 1910946950 中国 辽宁 鞍山 联通

1910946951 1910946953 中国 辽宁 沈阳 联通

1910946959 1910946965 中国 辽宁 沈阳 联通

1910946966 1910946966 中国 辽宁 盘锦 联通

1910946967 1910946985 中国 辽宁 沈阳 联通

1910946986 1910946986 中国 辽宁 大连 联通

1910946995 1910947033 中国 辽宁 沈阳 联通

sc.read("input/.txt")
.mapPartition(data=>{
   val splitdata = data.split("\t")
   ip_num_start  = splitdata(0)
   ip_num_end = splitdata(1)
   loc_nation = splitdata(2)
   loc_pro = splitdata(3)
   loc_city = splitdata(4)
   ISP = splitdata(5)
   (ip_num_start, ip_num_end, loc_nation, loc_pro, loc_city)
})
.map(data=>{
   if(ip ){
      (data.loc_nation,data.loc_pro,data.loc_city)
   }
})

针对上面代码的一些问题:

A、上面那段代码中,如果文件是一个很大的文件,spark读取的时候用一个任务处理(单机),怎样可以让它读取的效率更高一点?

答:提高并行度?

B、MapPartition的原理是什么?

(5)MapReduce过程

(6)自己写过MapReduce吗?怎么写的?

(7)Shuffle源码?其中Reduce的分区是怎么设置的,针对每个key,怎么把它放到对应的分区中?

(8)你了解的Hadoop生态圈的框架,及其大概在怎样的一个位置?

(9)MapReduce、Tez和Spark的区别?

(10)Spark读取文件如果内存不够的话,怎么处理?

(11)最近七天连续三天活跃用户怎么实现的?手写一个各区域top10商品统计程序?

(12)平时遇到的数据倾斜的问题,怎么解决的?

(13)大表join大表怎么解决?

(14)每一层大概有多少张表?表的字段也需要记

(15)UDF、UDTF、UDAF区别?

(16)二叉树的前中后序遍历?

(17)排序算法了解过吗?

(18)快排的时间空间复杂度?快排原理

(19)冒泡的时间空间复杂度?原理

大数据培训

猜你喜欢

转载自blog.csdn.net/msjhw_com/article/details/107706147