字节跳动2023秋招提前批面经

意向岗位:后端开发工程师 2023年秋招
2023年7月20日晚

以下是面试的主要提纲,凭回忆

自我介绍

我说了学历、主要项目经历、实习经历

实习

实习干了什么工作、在什么背景下解决了什么问题、觉得难点在哪

项目

就是让我介绍我的项目,从背景,到开发过程,我全聊了一遍。面试官顺便问了数据库

  • 你的关键数据表是怎么设计的?(我没答范式,只答了具体的设计,并且说了设计的索引,诱导面试官问索引
  • 你的索引是真的有效吗?(可以用Explain,并且我体感上时间得到了优化
  • 问了最左匹配原则,假如设计了(a, b, c)的组合索引,哪些查询可以优化?
  • 问了索引的数据结构。(BTREE 和 HASH)
  • ★问了SELECT * FROM t WHERE a=1;SELECT f FROM t WHERE a=1;有什么不同,其中索引建立在a上。(这个我答不上来,我觉得差不多的)

基础知识

操作系统

  • 线程的基本概念。
  • ★线程调度时的上下文切换。(我不是很清楚)
  • 什么是死锁?现代操作系统、程序员怎么规避死锁的?(我答了触发死锁的四个条件,举例了一个死锁。操作系统怎么规避我不太清楚,我先扯了一下程序员怎么规避。
  • ★继续问我操作系统怎么规避死锁。(我提了一下Go在运行前会检查,但是具体我不知道。

计算机网络

  • 从浏览器输入 URL,到加载出网页,有哪些过程?(我答了 DNS 解析、发起请求并返回数据、前端解析。但是我感觉我说少了。
  • 简单聊 TCP。

数据库

其实刚刚说项目经历时说过一次了。面试官又问了几个问题:

  • ★MySQL 数据库并发时,有隔离级别,解决并发问题。(我记不清楚)
  • ★MySQL 数据库有哪些锁。(我也记不清楚,只说了名字和大概用途,表级锁、行级锁、行间锁;写锁、读写锁)

中间件

  • Kafka、Redis的应用场景。
  • Kafka和其它消息队列中间件对比。(我直接说我不太清楚,我只用到了最简单的消息队列)

算法题

一道算法题,现场告诉你题目的内容。写出可以运行的伪代码(因为没有测试用例,我自己测试了几遍。)
如果是正式的机考题,应该有很多边界用例,会很麻烦。我就写了一个能覆盖大多数用例的代码,边界条件的地方就写了注释没去考虑。面试官说可以了。

题目是:
输入一个数字数组,形如

12  13  14  15  18  19  1  3  5  5  6  6  7  8  9  10

可以看作一个连续递增可重复的序列,从中间切断,再拼接得到的。
请问如何找到这个数组的中位数。

思路是找到切断点,可以用二分查找,在 O(\log n) 的时间复杂度里找到。我的代码也如此。不过我和面试官简要讨论特殊情形:

  1. 所有的数字都一样
  2. 数组没有被切断(面试官说可以没有切断),就是递增序列
    对于第二个特殊情形,我只做了一个简单的判断,没有严格判断。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容