字节跳动-基础结构开发面经

本文讨论了面试中常见的算法问题,包括如何在O(logn+k)的时间复杂度内找到第K个最接近的元素,以及LRU缓存策略的实现。面试还涉及了大数据处理框架Spark与Flink的区别,以及SQL在不同框架中的解析流程。此外,还探讨了DAG与MPP模型、操作系统中进程与线程的区别以及SparkSQL的优化策略。

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

一面:

先让做了自我介绍,问了半小时简历上的问题。

算法:

658. 找到 K 个最接近的元素

力扣的原题,面试官改为找到第K个最接近的元素,要求时间复杂度为O(logn + k)。

考察点:二分法。其具体的复杂度如下:

八股文基本没有考,考察的问题是开放型的问题。

1.Spark与Flink框架的本质区别。(DAG VS pipeline)

2.Spark SQL与Flink SQL的本质区别,各自的优缺点以及适用场景。

二面:

先让做了自我介绍,问了半小时简历上的问题。

算法:

146. LRU 缓存

力扣top100的原题,开放型的一道题。但是我没做过这道原题。

考察数据结构,建立一个hashMap(Integer,双链表)来进行读和写操作,还考察数据结构中LRU的基本概念。

LRU简介:

LRU是“Least Recently Used”的简写,意思是最近最少使用,是一种缓存淘汰策略,在有限的缓存资源中,淘汰掉最近最久未使用的。

例如:缓存最大容纳10000条数据,在添加时,只要数据总数小于等于10000可以随意添加,但是当数据量大于1万时,将旧的数据删除,再添加新的数据;添加时,要将新来的数据添加到最前面。说完来添加,再来说查询,从缓存中获取的数据返回之前,需要将数据移动到最前面,因为获取改数据就代表最近使用了,对于缓存来说,最近这个数据很有可能会被再次使用,所以要移动到最前面。

最优时间复杂度如下:

 八股文

1.DAG与MPP模型的本质区别

MPP 的进化:深入理解 Batch 和 MPP 优缺点 - 开发者头条
MPP大规模并行处理架构详解 - 五分钟学大数据 - 博客园

DAG vs. MPP vs MR - hblt-j的个人空间 - OSCHINA - 中文开源技术交流社区

2.SQL在Hive或者Spark中的具体解析流程

3.Spark SQL逻辑计划转物理计划时候用到了哪些优化策略(SparkPlanner类的具体实现

4.操作系统中进程与线程的本质区别

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值