大数据学长面试-------腾讯面试

43 篇文章 1 订阅
25 篇文章 0 订阅

腾讯面试题

一.学长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)单链表的反转

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大数据小理

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

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

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

打赏作者

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

抵扣说明:

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

余额充值