字节跳动秋招后端提前批面经 内推码 YQJJUKF
岗位:后端开发工程师
地点:杭州
一面
- go里面线程,进程,协程的区别
- 完全二叉树与搜索二叉树的概念
- Java中JVM 内存,垃圾回收机制。(面试官抠的比较细,要求讲到复制算法适用新生代,标记清楚算法适用年老代)
- MySQL的索引原理
- b树与b+树的区别
- InnoDB 和 MyISAM的区别 (聚簇索引和非聚簇索引)
- Redis的基本数据结构(string, hash, set, list zset)
- 讲一下跳表的原理(因为我前面提到了zset底层实现原理是skip list)
- TCP/UDP 网络模型一共有几层
- TCP和UDP的区别
- 从应用层到网络层各层的header都有什么不同的功能。(绝了,不知道咋讲。。说了存放地址和端口)
-
算法题
- 通过给定的tree,判断是不是搜索二叉树和完全二叉树
- tips:用中序遍历和广度优先法
二面
-
算法题
- 给定一个随意的正整数数组,求最长的连续数字长度
- eg. [3, 8, 9, 4, 6, 7] => 4 (6789)
- 刚开始用了桶排序,后面在面试官的提示下用map优化了一下
- Redis删除key的机制 (还问了一个很神奇的,为什么要删除 从来没想过这个问题)
- Redis和MySQL存储数据的区别
- Java中String为什么要声明成不可变的
- 如果自己设计一个不可变的类,有哪些步骤
- 说一个设计模式 (说了观察者模式)
- 为什么需要回调 (大概讲了因为一直监控耗费性能,但好像不是面试官特别想要的答案:-<)
- 聊了一下之前在腾讯做过的项目
三面
-
算法题
- 给定一个数组和一个数s,找到最短的子数组加起来的和超过s
- 用两个指针去遍历 讲了一遍思路 面试官让我开始写 写了十分钟还有bug 面试官让我先跳过了(真是想吐槽一下牛客的IDE)
-
聊了一下暑假在字节做的项目
- 总结了一篇新人文档
- 一个权限管理的平台 (封装了一些后端的接口)
- 一个对齐员工进度的表 (全栈)
主要还是在聊项目,没有考别的基础知识了
总结
总的来说,面试的时候还是有很多的不足,每次面试都是一次学习的过程。
#字节跳动校招提前批##字节跳动##golang工程师##校招##面经#