查看某个分区之前所有的数据_腾讯大数据面试真题汇总

腾讯面试题

f3b22fac2d1923dbd299be09b7f109c0.png

学长1

1)笔试部分

(1)有一表名t_sh_mtt_netdisk_log,从表名可以看出该表是什么业务的,是什么周期粒度的表。

(2)怎么查看表结构,表创建语句?怎么查看表有哪些分区?怎么查看分区对应hdfs路径?怎么计算某个分区的数据量大小?怎么计算某个分区的文件总数?

(3)有一hive sql,怎么计算这个sql会产生多少个map数?

(4)怎么查看hive有什么自带函数?怎么查看函数的详细信息?

(5)Hive支持哪些基本数据类型?

(6)请指出下面两个语句读取分区ds数据的不同

Select * from t where ds=20150101 and province='gd' or province='ex'

Select x fromt where ds 20150101 and(province='gd' or province='ex')

(7)将字符串"keyl=valuel&key2=value2...keyn=valuen"进行分割放到一个字段里面,可以查出任意一个keyx对应的valuex值。请写出查询语句,并计算总共有多少个key值。

(8)用一个字符串比如"alblc"来测试某个函数比如split(用|分隔符将字符串进行分割)的语句

(9)a表和b表内连接,a表为小表,只有2000行记录

select a.*from a Join b on a.key=b.key

可以进行怎样的优化

(10)a表left join b表,b表为小衣,可以进行怎样优化?

scleet a.*from a left join Join b ona.key=b.key

如果a为小表,可以怎样优化?

(11)请指出下面sql语句的区别

select a.* from a left Join b on a.key = b.key and a.ds=xxx and b.ds=xxx

sclect a.* from a lef Join b on a.key = b.key and b.ds=xxx

select a.* from a lef Join b on a.key = b.key and b.ds=xxx where a.ds=xxx

Select a.* from a left Join b on a.key = b.key where a.ds=xxx and b.ds=xxx

(12)多表连按的写法:a,.b,c三个表内连接,连接字段都是key,怎样写连接语句?

(13)两大表连接,发生了数据倾斜,有几个reduce无法完成,怎么查找发生数据倾斜的原因?应该怎样优化?

语句:select t1.*,nvl(t2.x,1) from t1 left join t2 on t1.guid=t2.guid

(14)两大表连接,发生了数据倾斜。有一个reduce无法完成,检直发现t1中guid="的记录有很多,其他guid都不重复,这条语句该怎样优化?

语句:select t1.*,nvl(t2.x,1) from t1 left join t2 on t1.guid = t2.guid

(15)如何用hive q!实现sqL中的exist/in 子句

mysql语句如下:

SEL ECT a* FROM a where a.key in(select dstinct key from b where key like ‘filter%’)

(16)sort by、distribute by、cluster by 和 order by 区别

注:可参考数据工厂的“帮助中心》集群hive》hive使用优化》hive使用注意事项”

学长2

1)笔试题

用HiveSQL实现

(1)全量用户登员日志表t_login_all,字段信息ftime(登录日期)、openid(登录帐号)新增用户登录日志表t_login_new,字段信息ftime(登录日期)、openid(登录帐号)求每天新增用户次日、7天、30天留存率。

(说明:7天留存是指当天有登录且第7天还登录的用户)

(2)消息流水表t_chat all,字段信息:

Ftime(日期)、send_user id(发消息用户id)、receive.user id(接收消息用户id)、chat id(消息id)、send.time(发消息时间)

用户登录流水日志表t_login_all,字段信息:

Ftime(日期)、user_id(用户id)、login_id(登录id)、login_loc(登录区服)、login_time(登录时间)

求:每天有收发消息用户最近登录时间、登录区服,输出ftime,user_id,login_loc,login_time

用Spark core实现,写Scala脚本

1、reduceByKey()、groupByKey()有什么区别?

2、DataFrame和RDD有什么区别?

3、使用累加器,对数组Array(1,2,3,4)每个元素实现累加操作,最后打印输出求和结果。

4、现有文件file.txt,文件格式如下

Order_id,user_id,payment,productid

1、1768,50,155

2、1218,600,211

3、2239,788,242

4、3101,288,599

5、4899,25,230

6、2311,890,981

。。。。。。

求Top10个payment字段的值

学长3

1)技术部分

(1)我看你上面写了你会Spark,那你用Spark写一下刚刚那道题的代码(第6题),不能用Spark SQL

(2)我看你上面有写到熟悉Hive原理和优化,你说一下怎么优化

(3)优化有说到语句优化,然后又说回到pv和uv那个问题,假如说让你优化你怎么优化(我代码里面有count(distinct id) uv,)

(4)问了一些Kafka的,我只记得一点点,问我数据会不会重复消费,什么情况下会重复消费

(5)在Hive执行语句的时候如果很慢,什么原因造成

我有提到数据倾斜的问题,他又问怎么解决数据倾斜

2)项目部分

(1)让你挑一个比较有亮点的项目详细说

(2)你负责了什么,数仓中统计了哪些指标,

(3)刚刚听你说项目里面有提到分层,如果我要你求每天商品的pv,uv,从ods层到dm层它的具体流向,各层都统计了什么(后来让写求pv,uv的sql语句)

3)场景部分

(1)有一个分区表,表名T,字段qq,age,按天分区,让写出创建表的语句

(2)刚刚的分区表,求20200221这个分区中,年龄第N大的qq号列表

(3)有一个表,两个字段,分别是qqa和qqb,数据如下:

12,34

12,56

12,78

34,56

34,12

找出所有互相关注的qq对

4)手写部分

(1)三个字段,timestamp,user_id,product_id,让求pv最大的商品,写了之后又叫用Scala代码写一遍,然后又问,假如说只让你求pv数大于100的top3呢,代码又怎么写

学长4

1)技术部分

(1)你们数仓用什么建模方法,说出常见的建模方法?

(2)维度建模有什么好处? 为什么选择这个?比如最后业务需求要增加一个维度,我们需要做什么工作?

(3)怎么判断一个需求能不能实现,你们的判断标准是什么?需求变更要做什么

(4)增加一个维度后发现查询的速度变得非常慢,是什么原因导致的?

(5)你们ADS层的数据量每天的数据量有多大?ADS层在MySQL中的表是怎么创建的?有什么注意事项?索引怎么创建的?

(6)你知道Spark的宽窄依赖吗? 有没有把宽依赖转化为窄依赖的例子?

(7)Spark参数调优做了些什么 ?

2)算法部分

(1)一个list [1,5,5,7,9] 去重,并计算时间空间复杂度

(2)单链表的反转

文章来源:尚硅谷大数据培训

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值