ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【大数据面试02】学长分享(腾讯)大数据面试心得

2020-03-16 17:42:39  阅读:710  来源: 互联网

标签:02 语句 登录 ds 学长 面试 hive key id


腾讯大数据面试

2.1 学长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.2 学长2

1)笔试题

用Hivesq1实现
(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字段的值

2.3 学长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呢,代码又怎么写

更多面试心得

后面会陆续整理,关于大数据的百家公司的面试经验和大家进行分享,如果需要可以继续往下翻,找到博主添加好友即可获得Word版面经一份
在这里插入图片描述在这里插入图片描述

关于博主

【大家如果有关于JavaWeb+大数据(擅长领域)+ 人工智能等方面的疑惑,比如学习路线,学习方法,项目准备,简历包装等,都可以直接向我进行免费咨询。(加我请备注CSDN)】
在这里插入图片描述

标签:02,语句,登录,ds,学长,面试,hive,key,id
来源: https://blog.csdn.net/qq_31923871/article/details/104903494

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有