2022字节跳动【数据仓库工程师】日常实习面经-----一面


背景:今年金三银四,看着大家都在疯狂找实习offer,不甘落后的我也信心满满(毫无把握)的去字节面试(现在想想真是胆大,都还没学扎实)

一,自我介绍

二,问答阶段

  • shuffle阶段详细介绍
    回答环形缓冲区,分区排序,溢写磁盘,reduce再抽取归并等等
  • 计算单元和实际block存储单元不在一个机器节点上,这样会带来大量的IO操作,Hadoop如何解决
    数据不用移动,移动计算逻辑,本地化策略
  • 实际中有哪几种数据倾斜
    回答的是group by,order by,其实没有回答好,面试官还给我讲解,太好了
  • null值特别多,且需要保留怎么处理
    单独处理
  • 一个大表和一个小表之间关联,数据倾斜怎么解决
    map join
  • 两个大表之间关联,其中一张表有3个key(已知这3个key)对应另一张表,分别一万条,十万条,百万条关联,其他的数据平均是1千条的关联,如何处理这种倾斜
    这个没有思路,面试官说已经知道了哪些key倾斜,通过打散的形式将百万、十万、一万的拆分处理
  • 基于上面那个问题,就想临时将它跑过去,不想做特殊处理,怎么办
    也没思路,面试官说将内存调大
  • 两句话去概述一下维度建模是什么
    将数据抽象为事实和维度
  • 事实表理论上分哪几种啊
    事务事实表和快照事实表

三,代码阶段

SQL题1
relation表结构

字段字段类型
from_user_idbigint
to_user_idbigint

说明:都是自增长且唯一,微博的关注关系表
示例

from_user_idto_user_id含义
12表示1关注2
21表示2关注1

求互相关注的关系对
不能用join ,union all ,子查询
可以用having,group by

select
    case when from_user_id>to_user_id then to_user_id else from_user_id end as from_user_id1,
    case when from_user_id>to_user_id then from_user_id else to_user_id end as to_user_id1
from
relation
group by case when from_user_id>to_user_id then to_user_id else from_user_id end,
case when from_user_id>to_user_id then from_user_id else to_user_id end
having count(concat(from_user_id1,to_user_id1))=2

这个题没想出来,唉

SQL题2
bind表结构

字段字段类型
user_idbigint
bind_objstring
datebigint 时间戳10位

求每个user_id最早绑定的bind_obj以及绑定时间

select
    user_id,
    split(min_date_bind_obj,"_")[1] bind_obj,
    split(min_date_bind_obj,"_")[0] date
from
(
    select
        user_id,
        min(concat(date,"_",bind_obj)) min_date_bind_obj
    from
        bind
    group by 
        user_id
)t1

SQL题2
登陆日志login表结构

字段字段类型
user_idbigint
login_datestring

示例

user_idlogin_date
12021-01-01
12021-01-02
12021-01-03
12021-01-05
12021-01-06
12021-01-07
12021-01-08
12021-01-09

每个用户连续登陆最大天数,开始时间和结束时间

select
    user_id,
    min_login_date,
    max_login_date,
    max(login_days) max_login_days
from
(
    select
        user_id,
        sub_time,
        max(login_date) max_login_date,
        min(login_date) min_login_date,
        count(login_date) login_days
    from
    (
        select
            user_id,
            login_date,
            date_sub(login_date,rank) sub_time
        from
        (
            select
                user_id,
                login_date,
                (row_number() over(partition by user_id order by login_date))-1 rank
            from
                login
        )t1
    )t2
    group by 
        user_id,sub_time
)t3
group by
    user_id,
    max_login_date,
    min_login_date

四,反问

部门对实习生要求
上海和北京区别

五,总结

通过这次面试直接发现了自己的薄弱点,基础不牢,地动山摇,诚不欺我也,也幸亏面试官一直在引导我,否则根本不可能通过一面,对于大数据组件了解不够,对于原理和实践也不够。

我是dyson不只是吹风机,若是对大数据-数据仓库技术感兴趣的可以加我沟通交流,一起进步。VX:daijun1211

ps:若文章侵权、触犯隐私请联系作者删除,谢谢~~

<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**:匿名面试硅谷工程师 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值