每日面经 2021 6.6 字节

本文记录了一位应聘者在字节电商后端开发实习生一面中的经历,涉及计算机网络的OSI模型、TCP四次挥手、HTTP与HTTPS区别、进程与线程、B树与B+树、数据库事务等知识点,以及Linux基础知识和LeetCode代码题挑战。

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

2.21.6.6

字节电商后端开发实习生一面

摘取自:https://www.nowcoder.com/discuss/667543?source_id=discuss_experience_nctrack&channel=-1

作者:冰汽水
链接:https://www.nowcoder.com/discuss/667543?source_id=discuss_experience_nctrack&channel=-1
来源:牛客网

1、自我介绍

2、计算机网络

OSI七层模型;

  1. 物理层:尽可能地屏蔽掉一些传输媒体和传输手段得差异、
  2. 数据链路层:透明传输,封装成帧,差错检测(循环冗余校验)
  3. 网络层:将传输层传下来的报文段分组,然后选择合适的路由器,使得传输层传下来的分组能够交付到目的主机
  4. 传输层:负责两个进程之间得通信,由TCP,UDP协议
  5. 会话层:不同主机进程之间得会话
  6. 表示层:负责处理在两个内部数据表示结构不同得通信系统之间交换信息得表示格式
  7. 应用层:提供系统与用户得接口

TCP四次挥手

在这里插入图片描述

​ 首先,客户端和服务器端都是处于连接状态,此时其中一方传送完数据后,主动提出断开连接,提出方就会发送一个TCP报文,FIN字段置为一,状态变为FIN_WAIT_1,接受方接受后会一个ACK确认报文,然后将自己得状态变为CLOSE_WAIT,提出方接收到这个AKC报文后会将自己的状态变为FIN_WAIT_2,接收方处理完内部得任务后,在向提出方发送一个FIN报文说明自己已经完成并把状态变为LAST_ACK,此时提出方发送ACK报文确认收到信息,然后接收方收到后关闭连接转变为CLOSE状态,此时得发送方进入TIME_WAIT阶段等待大约2MSL时间后关闭连接

2MSL一来一回报文最大生存时间 ,足以让两个方向上的数据包都被丢弃,使得原来连接得数据包在网络中都自然消失,再出现得数据包一定都是新建立连接所产生得。

TCP的time wait,为啥

  1. 防止旧连接得数据包:加入一个数据包在断开连接之前发送到网络,断开之后重新建立了新得连接,而此时这个数据包到达,就会产生数据错乱得严重问题
  2. 保证连接正常关闭:加入发起方得ACK报文再网络中丢失,TIME—wait时间过短,接收方再一次发起FIN报文时,发起方因关闭连接就拒收了这条报文,导致服务端一直处于LAST_ACK状态,一直没有关闭

http和https的区别

​ http是超文本传输协议,采用明文传输得方式传输数据,不安全得,无状态得,同时不会对通信双方进行验证得连接

​ http是基于http得安全网络传输协议,采用SSL/TSL对数据进行加密传输,是安全的。

扩展HTTPS建立连接得过程

  1. 首先客户端向服务器得433端口建立TCP连接(三次握手),然后发送一个随机数1,和客户端支持得加密算法

  2. 服务端收到后,发送一个随机值2,和协商好的加密算法得子类

  3. 服务端在发送一个已经注册得ca数字证书

  4. 客户端收到这些数据后,有客户端得TLS进行解析验证,验证有效时间,颁发机构,域名等等,之后生成一个随机数3,然后将随机数123组装会话密钥,然后用解析出来的公钥进行加密

  5. 客户端发送加密后的会话密钥给服务器

  6. 服务器用自己得私钥解析得到密钥,用密钥对一个数据加密,发送给客户端验证加密是否成功

  7. 此后得所有数据都用加密后传输

对称加密和非对称加密

  1. 对称加密:客户端和服务器都用相同得密钥对数据进行加密解密,效率高但是存在协商密钥问题
  2. 非对称加密:客户端存公钥,服务器端存私钥,公钥加密得数据只能私钥解开,私钥加密得数据只能公钥解开。协商公钥私钥用ca

3、操作系统

进程和线程的区别

​ 进程:一个程序在数据集合上的一次执行过程,是资源分配和调度得基本单元

​ 线程:线程是进程得一个执行路径

  1. 一个线程从属于一个进程,一个进程可以包含多个线程
  2. 一个线程挂掉对应的进程也会挂掉,但是一个进程挂掉不会影响其他进程。
  3. 进程是资源调度和分配的最小单元,线程是CPU调度得基本单元
  4. 进程系统开销显著大于线程开销,线程需要的资源更少
  5. 线程再执行时拥有独立的内存单元,多个线程共享进程得内存
  6. 进程切换需要熟悉TLB并获取新的地址空间,然后切换硬件上下文和内核栈,而线程只需要切换硬件上下文和内核栈

好像没了。。。

4、数据库

B树和B+树的区别

B树得数据存在节点上

B+树得数据集中存放在叶子节点上,且每个叶子节点上的数据都有指向下一个节点数据得指针(方便范围查询)

啥是事务,四个特性

**事务:**事务时访问并更新数据库中各种数据项得一个执行单元,在事务中得操作,要么都成功,要么都失败。

ACID 原子性,隔离性,一致性,持久性

写了一个sql语句

5、Linux

Linux熟不熟? 答:不熟

命令行:已知进程id,查找一个进程 答:不知道

nestat -nap | grep 端口号

over

6、代码题

https://leetcode-cn.com/problems/reorder-list/

十五分钟,思路对了,然后报错。一直调一直调,又过了十五分钟,小哥哥说算了算了,今天面试就这样吧

在这里插入图片描述

然后反问。

结束。

然后应该是凉凉了。。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值