一点资讯-大数据开发一面
项目
实习项目均B端产品,与他们场景不太符合,C端居多,问我想不想继续面
面试官介绍
他们数据开发三种场景,UDW数仓,基础平台研发(hive,spark,hadoop),还有个啥忘了(不好意思。。),我说我比较偏向于想做基础平台研发这些,下面开始表演
Java
Q:JVM的栈里面都存了什么
A:本地方发栈&虚拟机栈,局部变量表,操作数栈,动态链接,方法出口,本地方法栈为native方法服务
Q:新生代,老年代
A:这个感觉没答好,Eden区,S0,S1,永久代/meta space 1.7 1.8的区别于使用,应该提一下gc的,忘记了
Q:hashmap hashtable了解一下
A:大家都会,不写了
Yarn
Q:了解yarn吗,大概说一下
A:Resource Manager, Application Master, NodeManager,以及各自都是干啥的,这方面了解确实比较少
MR
Q:讲一下MR的流程,结合word count
A:map shuffle reduce,map直接output,shuffle排序,reduce聚合
Q:讲一下shuffle
A:缓冲 排序 压缩 io 拷贝 归并排序
Q:reduce 里的shuffle 讲一下
A:不会😢
HDFS
Q:nameNode啥作用
A:还好上一场面试问到了,看了一下,文件系统的文件目录结构和元数据信息,文件与数据块列表的对应关系
Hadoop
Q:给你两个表,如何用MR实现两个表的笛卡尔乘积
A:当时脑子秀逗了,没想出来,面试官说要重写format函数,还问了从hdfs拉倒map里面数据的函数走向是啥,我是真的不会,之前用的都是hadoop streaming python写的,这题凉凉
手写MR
写word count,用python写的,好久没写python了
Hive
Q:写个sql,一个表,分区是date,一个键是id,想知道第一天和第二天到这个地方相同的人/第一天的总人数,
A:面试官的提示下也妹做出来,到最后怎么把null数据和非null数据进行count聚合的地方卡住了,后面回去想了一下,写的感觉有点笨,希望有个大佬来帮帮我优化一下
select count(id)/count(*) from ( select case when date_1_id != null then 1 as id when date_1_id = null then 0 as null_id end from ( select id as date_1_id from table where date = '${hivevar:last_day}' )T1 outter join (select id as date_2_id from table where date = '${hivevar:today}' )T2 )T3
算法
Q:快排了解一下
A:ez,吹了一通,讲了一下优化
图
Q:最短路径算法了解吗
A:弗洛伊德,什么地杰斯卡拉,具体记不住了
手写代码
Q:手写最短路径算法还是快排算法
A:肯定是快排啊,最后写了快排
反问
Q:笛卡尔积那个应该怎么做,想听听思路
A:重写inputformat方法balabala
总体面试的感觉很好,可能是最近java面多了,换了个数据开发感觉不一样了,面试官小哥不错,全程引导,很专业,不会挑你没用过的问