美团一面 35分钟
1.自我介绍
2.项目介绍,用到那些技术,主要做那些工作
3.Kylin的特点,存储HBase的rowkey的优化,
4.项目做的业务内容相关,维度,度量
5.分组排序 rank() over() 这个
6.项目架构有那些,怎么做的,做过那些
7.MR的提交执行流程
8.Hive两个大表join的过程,
9.HDFS的put和get流程
10.撕代码:LeetCode 124. 二叉树中的最大路径和,要自己构建树,把它跑通
11.反问环节,介绍了一下他们部门
美团二面 45分钟
1.自我介绍
2.那个项目参与最长,参与度高,聊一聊,还是那些问题,用到啥,做了那些事情,技术选型,项目遇到的问题,难点,优化等
3.业务相关,和客户沟通要分析相关
4.数据仓库建模(那些东西,嘚吧嘚说)
5.感觉大数据那块比较精妙,我说分布式(存储,计算),那你说说主从复制是咋样的,我以为说的是namenode和secondarynamenode之间相互的,她说三副本写入,是怎么样的,应该要把写流程和机架感知(副本存放),和节点传输应答流程(Pipeline)说一说。
6.写题
两个有序链表 合并 去重(LeetCode21题,递归实现,要去重,多做一层相等判断)
input:
1-3-5-8-null
2-3-4-5-null
output:
1-2-3-4-5-8-null
7.业务场景题(包含数据采集,数据处理,数据展示)
DAU(日活用户) 千亿
登录服务器 几百台,产生的日志如下:
timestamp userid login 比如:1599794555153 uid_11111111 login
timestamp userid logout 比如:1599794555154 uid_11111111 logout
到24点,统计当天,累计在线时长 ,最长的 top5w 用户
一些自己的想法(????????不知道对不对,欢迎讨论????????):
首先数据是分别产生在几百台服务器上,先要把当天的数据聚合,可以用一些你知道的大数据处理组件(flume去采集)
然后采集数据的话,针对数仓那块进行表设计,ODS就不做任何变化,
ODS; timestamp userid type
DWD层做汇总,对用户时长做汇总,(自己的一些想法还有要考虑当天登录,第二天登出情况,可以手动补一下0点登录,12点登出,让他们能对应上)
写SQL去轻度聚合数据,大概写了写,
1.把0点和12点补全之后,一个login就会对一个logout,这样去rank,然后连表
select
userid,
tmp1.timestamp - tmp2.timestamp
from
(select
userid,
timestamp,
rank() over(partition by userid order by timestamp) rk_ts;
from table
where type = 'login') tmp1
join
(select
userid,
timestamp,
rank() over(partition by userid order by timestamp) rk_ts;
from table
where type = 'logout') tmp2
on tmp1.userid = tmp2.userid and tmp1.rk_ts = tmp2.rk_ts
2.(求出每个时间段的累计时长,外面还要对id分组,对累计求sum,然后rank,再做50000的过滤)
全部评论
(2) 回帖