记录字节跳动2020校招提前批面试

本文全面覆盖技术面试中常见的知识点,包括网络协议、TCP/IP、HTTP状态码、B树与B+树、C++数据结构、链表操作、操作系统概念、面向对象原则等,并附带编程题解析,为准备面试者提供实用指导。

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

Round1:

先自我介绍,然后聊了聊项目。

问题基本由浅入深。

1、说说从浏览器输入URL到加载出网页的基本过程。

2、网络协议栈

3、HTTP状态码

4、TCP三次握手,四次挥手

5、四次挥手过程中TIME_WAIT状态。

6、如果TCP连接只有两次握手会有什么问题?我答如果服务端的ACK报文丢失,服务端已经打开的socket,但是client端以为服务器不可达,造成服务端的socket一直打开无法关闭占用资源。然后面试官就接着问如果socket不能关闭会占用哪些资源。

7、c++ unordered_map实现原理。如何实现扩容的。我不太清楚unordered_map如何扩容,面试官就问当unordered_map出现哈希碰撞的时候,如果是我会如何解决。

8、说说B树和B+树,为什么mysql索引采用B+树而不是二叉树,B+树相对B树有什么优势。MYSQL在通过B+树搜索叶子节点记录的过程中,是如何判断接下来该访问哪个孩子节点的?

9、编程题:单链表,第1、3、5、7位等奇数位的元素是递增的,偶数位的元素是递减的,把整个链表转换成一个降序链表,要求线性时间复杂度,常量空间复杂度。

10、CPU用户态和内核态有什么区别?库函数和系统调用有什么区别?

11、什么是中断?中断有什么用?

Round2:

自我介绍,针对项目相关问了一些

1、STL问题,vector是如何实现扩容的,vector是线程安全的吗?

2、auto_ptr和shared_ptr。

3、写一个线程安全的map。我写的map就是传统的一个map,一个读写锁。面试官又问可不可以继续优化一下。

4、写出快速排序的时间复杂度表达式,假设每次参考值都放到了数组中间的位置。

5、编程题:单链表插入排序。

Round3:

这次没有自我介绍了,问了问项目经历,技术栈,完成了哪些工作,解决了哪些重点难点。

1、面向对象的相关知识,类,对象、接口等。

2、编程题:求二叉树任意两点间距离的最大值。

3、编程题:假设数据库里面有几十万个国内IP地址段,给定一个IP,如何快速判定这个IP是不是属于国内IP。

4、你理解的继承、封装、多态。

大致就记得这么多了,有的问题可能遗漏了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值