当前位置: 首页 > ds >正文

【面经】字节跳动大数据开发面经

  马上要去字节入职了,今天分享一篇字节大数据开发的面经。入职之后看情况更新,不知道会不会很忙,忙的话更新频率可能低一点。
问题的答案写在这里了。可以先自己做再看答案。
字节跳动面经。

1.自我介绍
2.数仓是什么?

可以看《大数据之路》。

3.Hive 是什么?

建议看官网的描述。

4.讲一下 MapReduce 的过程

常考题,必会。这里简单说一下,后面单独写一篇文章。

5.比较 MR 和 Spark 的 Shuffle的过程?

常考题,必会。这里简单说一下,后面单独写一篇文章。

6.Hive 中 Group by 的底层原理讲一下

常考题,必会,很重要,理解这个过程才能知道为什么会产生数据倾斜,怎么处理数据倾斜。后面单独写一篇文章。

7.Hive 中 join 的底层原理讲一下

后面单独写一篇。这里简单说一下。

7.1 Common join

这种 join 包含 map、shuffle、reduce 三个步骤。

7.2 Map join
8.Hadoop 和 Spark 的区别
9.MR 为什么慢

有对比才有快慢。一般是和 Spark 对比。后面单独写一篇文章。

10.Flume 用来干什么的?

这里。

11.Flume 的架构?
12.分层建模怎么分层?

建议看阿里的《大数据之路》。

13.算法:674. 最长连续递增序列[1]

给定一个未经排序的整数数组,找到最长且 连续递增的子序列,并返回该序列的长度。

连续递增的子序列 可以由两个下标 l 和 r(l < r)确定,如果对于每个 l <= i < r,都有 nums[i] < nums[i + 1] ,那么子序列 [nums[l], nums[l + 1], …, nums[r - 1], nums[r]] 就是连续递增子序列。

示例 1:

输入:nums = [1,3,5,4,7]
输出:3
解释:最长连续递增序列是 [1,3,5], 长度为3。
尽管 [1,3,5,7] 也是升序的子序列, 但它不是连续的,因为 5 和 7 在原数组里被 4 隔开。 

示例 2:

输入:nums = [2,2,2,2,2]
输出:1
解释:最长连续递增序列是 [2], 长度为1。

动态规划:

class Solution {public int findLengthOfLCIS(int[] nums) {int n = nums.length;if(n == 0) return 0;int ans = 1;int pre = 1, cur;for(int i = 1; i < n; i++){if(nums[i] > nums[i - 1]) cur = pre + 1;else cur = 1;ans = Math.max(ans, cur);pre = cur;}return ans;}
}
14.SQL

input table1:shop_id,sale_dt(2022-02-22 18:20:15),sale_vol
求每天,每个商家,总销量

selectdate(sale_dt) dt,shop_id,sum(sale_vol) sale_vol
from table1
group by dt,shop_id;
15.SQL

input table2: uid,in_time(2022-02-25 18:30:00)
求取用户最大连续访问天数
output: uid,first_visit_dt,last_visit_dt

连续最大访问天数是常考题,专门写过一篇问题。

不过这道题是求开始和结束日期。

with t1 as(		# t1 去重,一个人一天可能登录多次selectdistinct date(in_time) in_dt,uidfrom tb_user_log
),
t2 as(		# t2 对每个人的登录日期排序 rnselectin_dt,uid,row_number() over(partition by uid order by in_dt) rnfrom t1
),
t3 as(		# t3 用登录日期减去排序 rn 得到 group_dtselectin_dt,uid,date_sub(in_dt,interval rn day) group_dt,rnfrom t2
),
t4 as(		# t4 求得连续登录天数 daysselectuid,group_dt,count(1) days,min(rn) rnfrom t3group by uid,group_dt
),
t5 as(		# t5 筛选出每个人最大的连续登录天数selectt4.uid,group_dt,days,rnfrom t4 join (selectuid,max(days) mdfrom t4group by uid) tton t4.uid=tt.uid and t4.days=tt.md
)
select		# 得到答案uid,date_add(group_dt,interval rn day) first_visit_dt,date_add(group_dt,interval rn+days-1 day) last_visit_dt
from t5;# 建表
DROP TABLE IF EXISTS tb_user_log;
CREATE TABLE tb_user_log (id INT PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',uid INT NOT NULL COMMENT '用户ID',in_time datetime COMMENT '进入时间'
) CHARACTER SET utf8 COLLATE utf8_bin;INSERT INTO tb_user_log(uid, in_time) VALUES(101, '2021-07-07 10:00:00'),(101, '2021-07-08 10:00:00'),(101, '2021-07-09 10:00:00'),(101, '2021-07-10 10:00:00'),(101, '2021-07-11 10:00:00'),(101, '2021-07-12 10:00:00'),(101, '2021-07-13 10:00:00'),(102, '2021-10-01 10:00:00'),(102, '2021-10-02 10:00:00'),(102, '2021-10-03 10:00:00'),(102, '2021-10-04 10:00:00'),(102, '2021-10-05 10:00:00'),(102, '2021-10-06 10:00:00'),(102, '2021-10-11 10:00:00'),(102, '2021-10-12 10:00:00'),(102, '2021-10-13 10:00:00'),(102, '2021-10-14 10:00:00'),(102, '2021-10-15 10:00:00'),(102, '2021-10-16 10:00:00');

答案:

uidfirst_visit_dtlast_visit_dt
1012021-07-072021-07-13
1022021-10-012021-10-06
1022021-10-112021-10-16
Reference

[1]力扣674. 最长连续递增序列:https://leetcode-cn.com/problems/longest-continuous-increasing-subsequence/

欢迎关注。
在这里插入图片描述

http://www.xdnf.cn/news/11674.html

相关文章:

  • 如何在电脑中使用微信?pc版微信和手机版有什么区别
  • 图文并茂教您安装Exchange Server 2003
  • php简单商城小程序系统源码
  • 黑马程序员JavaWeb开发教程,实现javaweb企业开发全流程(涵盖Spring+MyBatis+SpringMVC+SpringBoot等)
  • 系统服务与应用程序相关性的分析
  • 【微信小程序开发】开发框架与工具的使用详解
  • 用word2007自动生成目录的两种方法
  • 第一次失效_爱搞机官方出品!永不失效的看片神器,第一次使用就爱上了
  • 按国家归类的海淘网站大全
  • iOS 中支付宝 ’openssl/asn1.h' file not found问题 和 objc-class-ref in AlipaySDK问题解决方法
  • 急什么,这个时侯不能急!
  • 英:英语面试常用口语900句
  • androidstudio配置,基于android的app开发详细步骤
  • 全球 42 亿 IPv4 地址宣告耗尽!
  • Nginx七大应用场景及配置
  • 分享106个图片JS特效,总有一款适合您
  • HTML5网页设计制作基础大二dreamweaver作业、使用HTML+CSS技术制作博客网站(5个页面)
  • LAMP框架的架构与环境配置
  • 游戏引擎?
  • SSH免密登录详细操作步骤
  • 程序员必知的10大经典基础实用算法
  • 微服务之服务网关介绍及(Spring Cloud Gateway搭建)
  • Centos7部署SVN
  • Spark2.3.2源码解析: 4.3.Yarn cluster 模式 Executor 注册/启动源码 分析
  • 史上最全 Activiti 学习教程,一文搞定最强工作流引擎!
  • 哪些域名后缀在国内可以进行备案?_允许备案通过的域名
  • 虚拟试衣技术发展综述:从应用到开源资源
  • c#copyto_String.CopyTo()方法以及C#中的示例
  • 全方位了解IC芯片测试流程,IC芯片自动化测试平台分享
  • ALShow-带有漂亮皮肤的免费视频播放器(简约、华丽)