字节后端面经汇总
字节跳动后端开发面经汇总(数据库与数据结构部分)
- 字节后端面经汇总
- 四. 数据库
-
- ①InnoDB
- ②Mysql相关
- ③索引
- ④B+树
- ⑤其他
- ⑥设计题
-
- 一个数据库存了以下数据:用户id,登录时间,登出时间;如何找到一天当中的用户峰值(用一个hash map存所有秒数的在线人数)
- 某脚本同时处理一大堆文件,若脚本突然挂掉,如何判断处理到了哪些文件的哪些部分(开一个文件或者数据库,记录处理了哪些文件,处理到了哪一行。)
- 给定两个文件A,里面有id name,文件B,里面有id age,怎么将两个文件的内容join起来。(最开始回答的是全部放入数据库,然后用数据库的union操作,然后他说没有数据库,然后就回答先分块,再根据ID排序,然后再每个块去进行join)
- 订单 order 实体有几个属性:产品(product_id)、下单日期(date)等,请设计 索引 实现下列需求并优化索引:①查询某个产品的所有订单②查询某一天的所有订单③查询有个产品最近一个月的所有订单
- 五. 数据结构与算法
-
- ①哈希相关
- ②运算及字符串相关
-
- 求x的y次方,想出比直接for循环更好的方案(给出一个数x,求sqrt(x), 精度在1e-6,还是用的二分)
- url翻转
- 查找一个字符串中最长的无重复字串
- 一个超级长的数字(有几十位那种),允许进行任意多次的任意两位交换,得到的比他大的最小的数字是多少
- 在1个10G大小的文件中,存储的都是int型的数据,如何在内存使用小于8M的情况下进行排序
- 实现输入英文单词联想的功能
- 字符串转整数(包括正数负数小数,以及异常处理溢出的情况)
- 给一个很大的数字,怎么返回固定长度的substring(DP)
- 怎么用一个骰子等概率表示1到7
- 给定一个 0-4随机数生成器 如何生成0-6随机数
- 1亿个正整数范围是0-42亿。求出现次数是2的数字,空间复杂度
- 对两个二进制字符串求十进制的和
- 数组相关
-
- 最长上升子序列
- 无序的数组的中位数
- M*N 横向递增矩阵找指定数
- 给一个乱序数组,输出每一个数字后面第一个比它大的数字(单调栈)
- 单调不减数组二分查找,如果存在返回出现的第一个位置,不存在的话返回-1
- 一个数组 组成N位的数字去掉K位 保证数字最小
- 给出数组A,找到最大的(Ai-Aj)(i>j)
- 两千万高考生的成绩 如何排序
- 给一个等腰直角三角形,从左上角开始,结束点任选,给出经过路径的节点的和的最大值并打印出路径
- 逆序输出偶数的平方 ( [1,2,3,4,5,6,7,8,9] 输出 [64,36,16,4] )
- 有许多八位数的电话号码,设计一个存储方案,用尽可能少的内存,达到比较高效的检索(“位图”。就是用一个类似于数组的结构,每个二进制位代表一个电话号码的存在与否(1位存在,0为不存在)可以用整数数组加上位运算比较方便的实现)
- Dynamic Programming,相邻两个数只能选一个,求能返回最大数(如[1,4,33,67,34] )
- 矩阵旋转 (复杂度O(1)
- 求绝对众数
- ③树及相关
- ④链表
- ⑤图相关
四. 数据库
①InnoDB
InnoDB是Mysql默认的表存储引擎。其特点是行锁设计、支持MVCC、支持外键、提供一致性非锁定读、同时被设计用来最有效的利用以及使用内存和CPU
一. 结构
详情
MySQL 的存储引擎用的是什么?(InnoDB)为什么选 InnoDB?
InnoDB怎么实现(LRU)
InnoDB 怎么防止幻读
介绍一下InnoDB 存储引擎,对比其他存储引擎优点是什么
InnoDB 索引数据结构,深入问复合主键索引的数据结构是否有不同
InnoDB 数据隔离级别 (四个隔离级别说了下 顺带把脏读 幻读 不可重复度说了下)
InnoDB 为什么用b+树 ?多路树的好处?(说了下比较好控制高度 查询稳定 又说了一下对比b树的优势)为什么控制高度?(连续读磁盘 效率高)
InnoDB和MyISAM的区别
②Mysql相关
Mysql有哪些引擎,区别是什么
见上
Mysql的数据库索引是怎么组织的
聚簇索引(主键索引),非聚簇索引(辅助索引)
MySQL 的聚簇索引和非聚簇索引有什么区别?
见上
数据库ACID
写一个数据库的sql语句
③索引
索引是什么
索引的作用,主键索引的大致流程,Mysql 主键是什么概念
针对场景如何建立索引,为什么这么建立索引,怎样优化Mysql
数据库中的联合索引,索引失效的情况,是全部失效吗,还是部分失效
联合索引:B+树是什么状态 (画了一下,面试官反复问我高度什么的,我说高度没有影响,说了最左前缀 )
聚簇和非聚簇索引的区别
见上
聚簇索引相对于B+索引的优点
一米万卡奈
非聚簇索引的查询都要回表么
where中or和and对于索引的使用有什么区别
什么样的列或字段不适合建立索引
④B+树
详细描述B+树
见上