2022字节跳动数据仓库实习面经

作者分享了自己在字节跳动数据研发岗位的面试经历,包括面试问题、自我感觉及对面试的反思。在面试中,讨论了Flink的状态管理、数据仓库设计以及实时计算等问题,并在后续面试中得到了改进。作者建议被拒后应主动询问HR获取面试反馈以提升自我。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

👊先和大家说一下情况,3月4号面试的字节跳动数据研发岗位直接把我挂了,我满脸疑惑,但是抱着学习和提升自我的心态,打电话问问hr,像看看面试官给我面试的评价,hr说,面试官就两行,第一句肯定,第二句说我专业知识基础不够。以下是我上次的面试经历👇:

👍今天是字节另一个团队的面试官来面我,好像是抖音电商部门,通知我来面试。以下就是面试中的问题。
在这里插入图片描述

1. 面试问题

  • 自我介绍
  • 我看你的项目中用过flink,你能和我讲讲你对flink中的状态的理解吗?(我从流处理速度快的原理和checkpoint的角度对state进行了说明)
  • flink中的状态可以存储在内存中,还可以存储在哪里?说说你的理解?(不仅可以存储在内存,还可以存储在磁盘上,存在内存中计算较快,但容易丢失,state会不定期写入在硬盘上,准备进行checkpoint)
  • 你在滴滴实习的时候也做做过数据仓库开发,你们的数据仓库是如何设计的,分层了吗?(介绍了一个数仓的建设,然后说用的维度建模,分为ods、dwd、dws和app)
  • 说一下为什么要分层?刚才你提到了dwd和dws层,请问他们有什么区别?(从dwd和dws的定义来说,也说了他们俩没有很明确的区别,也可以在中间加另外的层,只要结构清晰,不冗余就行,不绝对。)
  • 现在有这样一个场景,业务部门需要进行修改数仓的操作,换句话说说,如何避免经常发生修改数仓的操作?(我从业务理解的角度和数仓开的经验角度来说,主要是要将dwd和dws层的表里的指标考虑周到,这样子就不需要经常根据业务修改数仓了,因为里面的指标够齐全,表够宽。)
  • 我看你的flink实战项目中有一个计算每小时的成交量的指标,你是如何实现的?(用1小时的滚动窗口进行分组,然后group by统计每小时的成交量。)
--看看sql
--这里涉及到flink的窗口函数,tumble滚动窗口。
INSERT INTO buy_cnt_per_hour
SELECT HOUR(TUMBLE_START(ts, INTERVAL '1' HOUR)), COUNT(*)
FROM user_behavior
WHERE behavior = 'buy'
GROUP BY TUMBLE(ts, INTERVAL '1' HOUR);

  • 你说你用的是滚动窗口,你确定吗?(肯定确定,这里想考我滚动和滑动窗口的理解。)
  • 你会flink sql吗?有过开发实时数据仓库的项目吗?(我使用过flink sql也做过flink数据的开发,但是实际的数据仓库项目没有正式接触过,因为我们部门主要以批处理为主,数据仓库的理论没有较大差别,可能在flink开发中时间、窗口、watermark等设置需要额外注意。)
  • 我看你这里经常写博客,而且有一定的访问量,说说你写博客的历程吧。(如实说明即可,体现自己爱学习的,爱探索的性格)
  • 你觉得你应该如何评价你自己?(自己回答)
  • sql题,我们有一张表,存储关于用户和客服交流的信息,字段有 call_id,user_id,start_time,end_time,prov_id,call_type,请你求出各天呼入数量top5的省份,call_type=2为呼入。
# 1,这里有一个小插曲,本来是求各天的top5,然后我和面试官沟通一些题目的细节,然后面试官说,就求今天的吧,不用那么麻烦
select tmp1.prov_id,tmp1.call_num
from(
select date(start_time) start_date,prov_id,count(1) call_num
from table1
where call_type='2'
group by date(start_time),prov_id
having date(start_time)=date(now()))tmp1
order by tmp1.call_num desc
limit 5
  • 反问:你这边有啥想问的吗?我问了一些关于面试官部门业务的一些事情。

2. 总结

这个部门的面试和上个部门的面试感觉差不多,自我感觉还不错,没有一点都不会的问题,但是回想上个部门挂的原因可能是觉得我对大数据组件原理的理解大于对数据仓库建模的理解吧,但拒绝我的终将使我更强大,面试时长大概40多分钟,面试完20分钟后,就收到了2面的邀请。

3. 温馨提示

其实大厂面试把你挂掉,很正常,你首先需要去反思自己的问题,但也可能是不喜欢你说的某一句话、可能是觉得你不太适合这个岗位,可能是觉得你过于自信不好交流,无论是啥,你都可以厚着脸皮打电话问hr,面试官给你的评价(挂你的原因),这不丢人,自己可以根据面试官的评价及时弥补自己的缺点。

<think>好的,我现在需要帮用户查找关于算法岗面试的相关资料、书籍、题目和解答。首先,我得回忆用户提供的引用内容。引用[1]提到面试总结分为互联网、外企、国企券商三个方向,用户可能对这些领域的面试资料感兴趣。引用[2]详细说明了技术岗面试的结构,包括机试、技术、主管、HR等,还提到准备面试的优先级和考察内容,比如手撕代码、项目经验、算法八股。 用户明确想要算法岗面试的资料,包括书籍、资料、题目和解答。我需要整理常见的推荐资源,同时结合引用中的信息,比如算法八股和项目经验的重要性。首先,书籍方,经典的《算法导论》和《编程珠玑》是必推的,但可能用户需要更贴近面试的书籍,比如《剑指Offer》和《程序员面试金典》。这些书针对面试题目,提供解答和思路,符合用户需求。 在线资源方,LeetCode和牛客网是主要的刷题平台,特别是LeetCode的讨论区和题解能帮助用户理解题目。引用[2]中提到手撕代码是重点,所以必须强调刷题的重要性。此外,GitHub上的面试库,如“CS-Notes”和“InterviewMap”,整理了常见的面试知识点和题目,这些资源应该推荐。 项目经验方,引用[1]和[2]都提到项目是面试中的重要部分。用户可能需要知道如何准备项目描述,比如在Kaggle比赛或实习项目中的经验,突出解决的问题和技术细节。Kaggle和天池平台可以作为获取项目经验的途径。 算法八股文指的是常考的理论问题,比如机器学习基础、据结构与算法。引用[2]提到技术会考察这些,所以需要推荐相关的复习资料,如《百机器学习》和《统计学习方法》。此外,整理高频考点,如动态规划、树结构操作等,能帮助用户有针对性准备。 公司针对性准备部分,根据引用[1]的不同公司类型,互联网大厂可能侧重算法题和系统设计,外企注重代码质量和计算机基础,国企券商可能结合业务场景。用户需要根据不同公司调整准备策略。 模拟面试,引用[2]提到可能有手撕代码环节,推荐使用Pramp或找伙伴练习,提升实战能力。同时,经分享平台如牛客网和一亩三分地,能提供实际面试题目和经验,用户可以参考。 总结下来,我需要将这些内容分门别类,结构清晰地呈现,包括书籍推荐、在线资源、项目准备、算法八股、公司差异和模拟面试。同时,生成相关问题,引导用户深入思考,比如如何高效刷题,项目经验不足怎么办,应对压力的技巧等。确保回答符合用户需求,参考了提供的引用内容,并覆盖用户可能关心的各个方。</think>### 算法岗面试资料与准备指南 #### 一、核心书籍推荐 1. **《剑指Offer》** - 覆盖高频算法题型(如二叉树、动态规划、链表操作),提供多种解题思路和优化方法 - 示例:旋转组的最小值问题(二分法变体)[^2] 2. **《程序员面试金典(Cracking the Coding Interview)》** - 系统讲解算法、系统设计、向对象设计等题型 - 包含行为面试技巧,如$O(n)$时间复杂度优化案例 3. **《算法导论》** - 理论基础必备,重点章节:动态规划(DP)、贪心算法、图论 - 推导示例:$$T(n) = 2T(n/2) + O(n) \Rightarrow T(n) = O(n \log n)$$ 4. **《百机器学习》** - 算法岗特有考点:机器学习八股(如SVM推导、梯度消失问题) --- #### 二、在线资源与题库 1. **LeetCode** - **必刷标签**:Top 100 Liked Questions、企业题库(如字节跳动高频题) - **进阶训练**:周赛/双周赛模拟真实编码环境[^2] 2. **牛客网** - 包含历年大厂真题(如阿里、腾讯) - 模拟面试功能支持白板编程 3. **GitHub资源** - **CS-Notes**:算法模板与题型分类(如滑动窗口模板) - **labuladong的算法小抄**:动态规划框架(状态转移方程设计) --- #### 三、项目经验准备 1. **项目描述公式** ```plaintext 问题背景 → 技术选型 → 核心贡献 → 量化结果 ``` - 示例: *"在Kaggle房价预测项目中,通过Stacking集成XGBoost和LightGBM,AUC提升3%,排名前5%"[^1]* 2. **替代方案** - 无实习经历时:复现顶会论文(如BERT改进方案)、参与开源项目(如Apache项目提交PR) --- #### 四、算法八股高频考点 | 类别 | 典型问题 | 快速复习要点 | |--------------------|-----------------------------------|----------------------------------| | 据结构 | 红黑树 vs 哈希表应用场景 | 红黑树保证$O(\log n)$操作复杂度 | | 机器学习 | 交叉熵损失函推导 | 从极大似然估计出发推导公式 | | 系统设计 | 设计短域名服务 | 哈希算法 + 分布式ID生成策略 | --- #### 五、公司类型差异应对 1. **互联网大厂** - 重点:Hard级别算法题(如Google的二维前缀和优化) - 参考:LeetCode企业题库 2. **外企(如微软、Amazon)** - 特色考点:代码规范(如防御性编程)、并发问题(死锁条件$hold \& wait$) 3. **国企/券商** - 结合业务的场景题:如金融风控中的异常检测算法选型 --- #### 六、模拟面试工具 1. **Pramp**:免费跨国界技术面试配对 2. **Interviewing.io**:匿名面试硅谷工程师 ---
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

柳小葱

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

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

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

打赏作者

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

抵扣说明:

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

余额充值