当前位置: 首页 > news >正文

助你拷打面试官day15,看看你能回答出来吗? - 实践

1、说一下udp和tcp的区别,说一下tcp的三次握手,为什么不是两次握手?说一下tcp的四次挥手,为什么四次挥手要等待2MSL?

  • 说一下udp和tcp的区别

    从几个维度来对比

    • 连接方式:tcp是一种面向连接的协议,在数据传输之前,TCP 必须先建立一个可靠的连接(通过三次握手过程),确保双方都准备好进行通信;udp是一种无连接的协议,在传输数据之前不需要建立连接,材料可以直接发送,适合应该快捷传输而不需要建立连接的场景

    • 否收到,也不会重新发送丢失的数据包,数据的到达顺序也不能得到保证就是可靠性:tcp提供可靠的数据传输,确保数据包按顺序到达且不会丢失,它经过确认应答(ACK)、重传机制、流量控制和拥塞控制等机制来实现这一点;udp不提供可靠性保障,一旦数据包发送,udp不会确认接收方

    • 速度与效率:由于tcp需要建立连接、管理状态、确认接收、重传丢失数据等,因此相对较慢,开销较大;udp因为没有连接建立和确认过程,udp的传输速度较快,开销小,适合实时应用(如语音通话、视频会议等)和大规模的素材广播(如在线游戏)

  • 说一下tcp的三次握手

    第一次是客户端向服务器发起连接请求,第二次是服务器确认客户端的连接请求,并响应告知客户端“我已准备好”,第三次是客户端收到响应后向服务器发送确认连接报文,连接正式建立

    • 第一次握手(SYN):客户端发送SYN包(SYN=1,seq=x)到服务器,进入SYN_SENT状态

    • 第二次握手(SYN-ACK):服务器收到SYN包后,返回SYN+ACK包(SYN=1,ACK=1,seq=y,ack=x+1),进入SYN_RCVD状态

    • 第三次握手(ACK):客户端收到SYN-ACK包后,发送ACK包(ACK=1,seq=x+1,ack=y+1),双方进入ESTABLISHED状态,连接建立

  • 为什么不是两次握手?

    • 如果只有两次握手,服务器无法确认客户端是否收到自己可以连接的响应,可能导致半连接状态(服务器等待无用请求,浪费资源)

  • 说一下tcp的四次挥手

    TCP是全双工协议,双方需独立关闭自己的发送通道

    • 客户端发送报文到服务器,表示不再发送数据,但可接收数据,客户端进入等待状态1

    • 服务器收到报文后可能得处理剩余素材,向客户端发送确认收到报文,客户端收到确认报文后进入等待状态2,等待服务器的关闭请求

    • 服务器向客户端发送报文表示剩余数据处理结束,正式发起关闭请求

    • 客户端收接到请求后,发送确认报文给服务器,服务器收到确认报文后立即关闭连接,客户端在2MSL结束后关闭连接

  • 为什么四次挥手要等待2MSL?

    • 确保末了一个ACK到达:如果确认报文丢失,被动关闭方会重发关闭请求报文,2MSL时间足够处理此类重传

    • 消除旧连接的数据包:等待2MSL(默认60秒)确保网络中残留旧连接数据包失效,避免和新连接混淆

补充:MSL定义(Maximum Segment Lifetime),报文最大生存时间,(通常30秒~2分钟),报文往返时间

2、说一下数据库的三范式和反三范式

  • 三范式

    三范式是数据库设计的核心原则,目的是方便维护、减少数据冗余和保证数据一致性

    • 第一范式(1NF)要求表的每一列都是原子性的,不可再分,比如,地址字段不应该含有省、市、街道等多个信息,而应该拆分成多个字段

    • 通过第二范式(2NF)是在1NF基础上,每个非主键字段必须完全依赖主键,而不是部分依赖,例如,学生和课程的关系是多对多,所以会有一个中间表选课表,一个学生可能选多门课,一门课能够被多个学生选,但是一个学生选某一门课只能选一次,比如表中有学生id、学生名称、课程id和课程名称,由学生id和课程id共同确定了某一个学生选某一门课的唯一关系,但是其实课程名称只和课程id有关系,而学生名称只和学生id有关系,并不和课程id有关系,这种情况就不符合第二范式,第二范式常用于多对多关联表的场景来约束

    • 第三范式(3NF)是在2NF基础上,所有非主键字段必须直接依赖于主键,而不能依赖于其他非主键字段,这意味着不存在传递依赖,比如学生表,有学生id、学生姓名、学院id和学院名称,这个表中主键是学生id,但是这个学院名称应该要依赖学院id的,所以不符合第三方范式

  • 反三范式

    • 反三范式就是凭借引入冗余数据或合并表结构等手段,优化查询性能,但是不易于维护和保证数据一致性

怎么处理的?就是3、你有没有在工作过程中和同事有分歧或者冲突的时候?有的话举一个例子?当时

  • 你有没有在工作过程中和同事有分歧或者冲突的时候?

    • 技术上的就是冲突倒谈不上,在这些年的工作中,分歧肯定是有过的,这也是正常的嘛,一般是业务上或者

  • 有的话举一个例子?当时是怎么处理的?

    • 比如在工作中多个人负责同一个需求,在需求的理解或者设计方面有不同看法,这时候最初我们会认真倾听对方的方案,尝试把两者的方案的优点都糅合到一块,如果实在遇到双方没办法协调的,我们会找有经验的同事或者上级来协调解决,主要还是借助沟通应对

http://www.jsqmd.com/news/384150/

相关文章:

  • day014
  • AI开发-python-milvus向量数据库(2-5 -milvus-极简模式创建表collection)
  • 2026年成都管道疏通推荐:多场景管道问题实测评价,解决堵塞与渗漏痛点 - 十大品牌推荐
  • 06_C 语言数据结构与算法:哈希表(散列表)—— O(1)查找的终极方案:从0到1避坑指南(附完整代码)
  • 两级三相光伏并网逆变器控制Matlab/Simulink仿真模型,mppt控制有扰动观察法和电...
  • 深入浅出:LLM/VLM监督微调(SFT)核心技术解析与实践指南
  • 改进的数值解析法PCB热建模方法,考虑辐射传热及元件温度计算(Matlab代码实现)
  • 世界模型深度解析:从Transformer到产业落地的核心原理
  • 改进距离继电器中功率摆动阻塞和解阻塞功能的新方法(Matlab代码实现)
  • Golang实现豆包大模型2.0企业级Agent架构与成本优化实战
  • 程序判断滤波法:从核心原理到工程实战,一篇讲透
  • 原来这才是 Kafka!(多图+深入)
  • 从感知到行动:Vision-Language-Action大模型核心解析与实战指南
  • 考虑需求响应的电-热综合能源系统两阶段日前日内多时间尺度优化调度策略研究(Matlab代码实现)
  • 农民变农机程序员,功能,用python写脚本,控制农机动作,输入,自定义任务脚本,处理,解析执行,输出,农机自主完成任务。
  • 为什么我使用了索引,查询还是慢?
  • 从原理到实战:Vision Encoder 完全学习指南
  • 通用幂等组件设计与实现(详解)
  • 用好 Java 中的枚举,真的没有那么简单!
  • 2026 2月,盘点市面上宠物医院美团代运营靠谱团队,宠物医生代运营/宠物服务代运营,宠物医院美团代运营公司选哪家 - 品牌推荐师
  • 【译】应用 Visual Studio 2026 简化您的 Git 工作流程
  • ipad mini拿来当论文阅读器
  • 99.下一个排列
  • 基于COMSOL偏微分方程(PDE)的生物堵塞模型构建与研究
  • 为并发而生的 ConcurrentHashMap —— 基于 Java 8 源码深度剖析
  • 2026年管道疏通服务哪家强?郴州地区专业评测与场景化推荐 - 十大品牌推荐
  • 关于air001
  • 别人的成功,可能正好是你的干扰项
  • 如何选择郴州管道疏通服务?2026年推荐与评测解决堵塞与清淤痛点 - 十大品牌推荐
  • 2026年2月北京丰台区养护院推荐,照护标准与安全管理全面解析 - 品牌鉴赏师