面试描述
自我介绍
自我介绍完了之后什么都没问直接让写题. 大数相减:给定字符串表示的两个正整数,长度很长,求差值。 和面试官交流后得知字符串中只含0-9的字符, 并且没有前导0, 即没有”000102”这种情况.
String subtract(String a, String b)
结果一定要注意去除前导0, 比如
10000-9999
这样的, 要把前面的0去掉 我一开始就忘了, 在面试官提醒下才想起来
写SQL.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15sql:给定一个访问的hive表
user_id, timestamp,... p_date p_date是分区字段
要求次日留存,结果给我user_id的集合
--- 留存是指的当天和昨天都访问了的用户, 实际上就是把今天用户的集合和昨天用户的集合取个交集就完事. 一开始还想着用窗口函数, 后来发现没这么麻烦.
select todayUser.user_id from
(
select user_id, min(p_date) from hiveTable where p_date = "${today}"
group by user_id
) as todayUser inner join
(
select user_id, min(p_date) from hiveTable where p_date = "${yesterday}"
group by user_id
) as yesterdayUser
on todayUser.user_id = yesterdayUser.user_id;讲一讲刚才的Hive SQL语句如果放到spark里面执行的过程是怎么样的? (注意, 从hive中取数的时候要根据p_date是分区字段来取, 而不是读取全部的hive数据再用filter()算子过滤)
Scala和Java比有什么不一样的地方?
介绍一下Scala的模式匹配
Spark惰性执行的优点有什么?
1 | import java.util.Scanner; |