百度golang研发一面面经

article/2025/6/26 2:19:07

输入一个网址,到显示界面,中间的过程是怎样的

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IP 报文段的结构是什么

在这里插入图片描述

Innodb 的底层结构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

知道几种设计模式

  • 工厂模式
    • 简单工厂模式:根据传入类型参数判断创建哪种类型对象
    • 工厂方法模式:由子类决定实例化哪个类
    • 抽象工厂模式:创建一系列相关或互相依赖对象的接口,而无需指定它们具体的类
      在这里插入图片描述
  • 单列模式:确保一个类只有一个实例,并提供一个全局访问点来访问该实例。
  • 建造者模式:在软件系统中,一个复杂对象的创建通常由多个部分组成,这些部分的组合经常变化,但组合的算法相对稳定。
  • 观察者模式:创建了对象间的一种一对多的依赖关系,当一个对象状态改变时,所有依赖于它的对象都会得到通知并自动更新。

单例模式的应用场景

单例模式的核心在于确保一个类只有一个实例,并提供全局访问点。它适用于那些需要严格控制资源访问、保证状态一致或避免重复创建开销的场景。以下是其典型使用场景:

  1. 访问共享资源或硬件:

    • 数据库连接池: 创建多个数据库连接开销巨大。单例的数据库连接池管理所有连接,确保高效复用,避免资源耗尽。
    • 日志记录器: 应用所有部分都需要写入同一个日志文件。单例日志器保证所有日志消息被顺序、一致地写入同一个目标文件,避免并发写入冲突。
    • 打印机后台处理程序: 多个打印任务需要有序排队处理同一个物理打印机。单例的后台处理程序管理队列,确保一次只有一个任务访问打印机。
    • 文件系统/硬件驱动: 访问物理资源(如特定硬件设备、配置文件)通常需要唯一访问点,单例确保请求被有序处理且状态一致。
  2. 全局配置管理器:

    • 应用配置(如数据库URL、API密钥、应用设置)通常只需加载一次并在全局共享。单例配置管理器在启动时加载配置,并提供全局访问点,确保所有组件使用同一份、最新的配置信息,避免重复读取文件或解析的开销。
  3. 缓存:

    • 应用级缓存(如内存缓存)需要被所有组件访问和更新。单例缓存实例确保所有组件共享同一份缓存数据,提高访问速度,并可通过单例集中管理缓存的失效、刷新策略。
  4. 上下文对象:

    • 运行时上下文信息(如Web应用中的当前用户会话、应用上下文、线程池)通常在整个应用生命周期或特定作用域内需要唯一且全局可访问。单例(或结合ThreadLocal实现的线程单例)能有效管理这类状态。

关键特征总结(判断是否适用单例):

  • 全局唯一性: 系统中确实必须只有一个该类的实例存在。
  • 全局访问: 该实例需要被系统中的许多不同部分方便地访问。
  • 控制共享资源: 需要管理对共享资源(数据库、文件、硬件)的并发访问。
  • 集中管理状态: 需要维护一份全局共享、一致的状态或配置信息。
  • 昂贵初始化: 对象创建和销毁开销非常大,需要严格控制创建次数。

重要注意事项(避免滥用):

  • 测试困难: 单例的全局状态使得单元测试复杂化(测试之间状态污染)。可通过依赖注入(注入单例接口的模拟实现)或提供重置机制来缓解。
  • 隐藏依赖: 单例通过全局访问点引入依赖,破坏了代码的显式依赖关系,降低了可读性和可维护性。
  • 违反单一职责原则: 单例类除了自身业务逻辑,还承担了控制实例化的责任。
  • 潜在并发问题: 多线程环境下需要小心实现(双重检查锁定、静态内部类、枚举等),确保线程安全。
  • 过度全局化: 不是所有“只需要一个”的对象都适合单例。如果对象作用域有限(如请求作用域),考虑其他模式(如依赖注入容器管理作用域)。

观察者模式

拍卖系统:拍卖师作为主题,竞价者作为观察者,拍卖价格更新时通知所有竞价者。
观察者模式(Observer Pattern)是一种行为设计模式,用于定义对象之间的一对多依赖关系,使得当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。以下是对观察者模式的详细介绍:

1. 结构

观察者模式主要包含以下几个角色:

  • 主题(Subject): 被观察的对象,维护观察者的列表,并提供添加、删除观察者的方法。
  • 观察者(Observer): 依赖于主题的对象,定义一个更新接口,以便在主题状态改变时进行通知。
  • 具体主题(Concrete Subject): 实现主题接口,维护状态并在状态变化时通知所有观察者。
  • 具体观察者(Concrete Observer): 实现观察者接口,接收主题的通知并作出相应的处理。

2. 工作原理

  1. 注册观察者: 观察者通过主题的注册方法订阅主题。
  2. 状态变化: 当主题的状态发生变化时,主题会调用所有注册观察者的更新方法。
  3. 通知观察者: 观察者在收到通知后,可以获取主题的新状态并作出相应的反应。

3. 使用场景

  • 事件驱动系统: 例如 GUI 组件中的事件监听。
  • 数据模型: 在 MVC(模型-视图-控制器)架构中,模型状态变化时通知视图更新。
  • 消息推送: 实现消息订阅和推送机制,如社交媒体应用中的通知。
  • 实时数据监控: 例如股票价格变化时通知投资者。

4. 优缺点

优点
  • 解耦: 观察者与主题之间松散耦合,易于扩展和维护。
  • 动态性: 可以在运行时动态添加或移除观察者。
缺点
  • 性能问题: 如果观察者数量众多,通知所有观察者可能会造成性能开销。
  • 循环依赖: 如果观察者与主题之间存在循环依赖,可能导致不必要的复杂性。

总结

观察者模式是一种强大且灵活的设计模式,适用于需要实现对象间动态交互的场景。通过定义清晰的接口和方法,观察者模式能够有效地管理对象之间的关系,提高代码的可维护性和可扩展性。

既然 IP 层会分片,为什么 TCP 层还需要 MSS 呢?

在这里插入图片描述

如何优化 TIME_WAIT?

  • 复用处于 TIME_WAIT 的 socket 为新的连接所用
  • 当系统中处于 TIME_WAIT 的连接一旦超过net.ipv4.tcp_max_tw_buckets(默认18000)值时, 系统就会将后面的 TIME_WAIT 连接状态重置
  • 程序中使用 SO_LINGER跳过time_wait 直接调用close 发送RST

服务器出现大量 TIME_WAIT 状态的原因有哪些?

  • http没有使用长连接
  • http长连接超时
  • 长连接数量请求达到上限

服务器出现大量 CLOSE_WAIT 状态的原因有哪些?

在这里插入图片描述
在这里插入图片描述

如果已经建立了连接,但是客户端突然出现故障了怎么办?

保活机制,探测报文
在这里插入图片描述


http://www.hkcw.cn/article/tgywiSVAMO.shtml

相关文章

CTF:网络安全的实战演练场

文章目录 每日一句正能量前言一、CTF简介(一)什么是CTF?(二)CTF的历史 二、CTF比赛形式(一)线上赛(Online CTF)(二)线下赛(Offline CT…

Javaweb学习——day1(JavaWeb 介绍与开发环境搭建)

文章目录 1. 什么是 JavaWeb?2. HTTP 协议与请求响应流程2.1 HTTP 概述:2.2 请求响应流程:2.3 常见 HTTP 方法: 3. 开发环境搭建3.1 安装 Tomcat3.1.1 我的是win11 64位版,选择下载如图:3.1.2 解压 Tomcat3…

【沉浸式求职学习day52】【初识Mybaits】

沉浸式求职学习 什么是Mybatis1.持久化2.持久层3.为什么需要Mybatis?4.第一个Mybatis程序 CRUD1、namespace2、select3、Insert4、update5、Delete6、万能Map7、模糊查询 配置解析1、核心配置文件2、环境配置(environments)3、属性&#xff0…

mapStruct实体类属性映射工具实现

mapStruct实体类属性映射实现 1. 概述对比 BeanUtils.copyProperties场景对比 快速入门lombok mapStructmaven 依赖代码实现1. 定义两个要转换的实体类2. 定义转化接口测试 mapStruct Spring1. 注册成bean需要使用bean 转化规则1. 成员变量名不同时2. 子对象映射3. 数据类型映…

PostgreSQL 安全纵深防御:从权限到加密

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,精通Java编…

马斯克说不想为美政府所作一起担责 拒绝成为替罪羊

美国企业家马斯克在接受采访时表达了他对美国政府的一些看法。他表示不愿为政府所做的一切承担责任,并提到他之前领导的“政府效率部”成为了各种问题的替罪羊,这让他感到不公平。马斯克还谈及了与美国总统特朗普的关系,承认两人在一些问题上存在分歧。他强调自己不想公开反…

花105万买基金亏30万 状告银行 二审驳回全部诉求

一位年过八旬的投资者在2021年投入105万元购买了一只公募基金产品,两年多时间亏损约30万元。该投资者将相关代销银行告上法庭,要求其承担赔偿责任。案件经过两次审理,一审法院判决银行承担70%损失赔偿责任并支付损失利息。二审法院则认为,投资者自主决定购买理财产品,且产…

龙舟征婚小伙称微信被加爆 千人响应求偶遇

5月31日,广州猎德村迎来一年一度的龙舟招景盛会,超过150条村前来猎德涌趁景。其中,一条龙舟上的“征婚启事”引发广泛关注。视频显示,一名男子脖子上挂着一张写有“两栋楼,海珠,未婚”的牌子,另一面则打印了他的微信二维码。6月1日,尝试通过该微信二维码添加该男子好友…

台风失踪情况确定改变 1号台风蝴蝶六月来 生成条件逐步成熟

台风失踪情况确定改变 1号台风蝴蝶六月来 生成条件逐步成熟!2025年前五个月,西北太平洋及南海海域没有生成任何一个编号台风。从1月到5月,通常会有一到两个台风生成,有时甚至在1月或2月就会出现第一个台风。然而这一年直到6月初,海面仍然平静,这种现象让很多人感到反常。…

日本7月5日末日论"疯传:漫画预言引发恐慌

日本7月5日末日论"疯传:漫画预言引发恐慌!2025年7月5日凌晨4点18分,日本将遭遇毁灭性灾难,三分之一的国土被海水吞没。最近,这条“末日预言”在中文和日文社交平台上疯狂传播,甚至导致部分外国游客取消赴日行程。而它的源头,竟然是一本30年前的漫画。这场风波的起点…

男子称质问女子遛狗不牵绳被打耳光 涉事女子取保候审引发争议

男子称质问女子遛狗不牵绳被打耳光 涉事女子取保候审引发争议!重庆的刘先生反映,2月24日晚,他在小区质问两名女子遛狗为何不牵绳,却被其中一名女子打成轻伤二级。刘先生报警后,警方拟刑事立案,但后来女子取保候审,这让刘先生难以接受。6月2日,刘先生介绍,当晚他牵着朋…

中国斯诺克创造新的纪录 32位选手新赛季出战

6月2日,世界台联确认新赛季将有32位中国球员参加职业比赛,这一数字创下新纪录。此前,赵心童和白雨露在世锦赛中夺冠,为中国斯诺克带来新的突破。上个赛季,赵心童在克鲁斯堡强势登顶,成为首位夺得该项目世锦赛冠军的亚洲球员。世界台联为他调整规则,允许成绩纳入新赛季排…

百岁老人过寿 七旬老人捡烟花被崩伤 意外引发广泛关注

5月31日,河南平顶山鲁山县发生一起意外事件,一位7旬老人在捡拾烟花筒时头部被崩伤。此事被目击者拍摄并上传网络后引起广泛关注。老人目前仍在鲁山县人民医院重症监护室接受观察和治疗。据亲属杨先生透露,医生表示老人的右眼保不住了,脑部也受了伤,后续治疗费用预计近10万…

兰博基尼车主赖账 被代驾举报酒驾 5元停车费引发风波

兰博基尼车主赖账 被代驾举报酒驾 5元停车费引发风波。近日,浙江宁波一名兰博基尼车主酒后请代驾将车开到小区,随后自己开车进入车库,但因其不愿支付代驾小哥垫付的5元停车费,被对方举报酒驾。当地交警表示,该车主血液中的酒精含量达到酒驾标准,受到暂扣驾照6个月、扣12分…

【Oracle】索引相关

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 索引基础概述1.1 索引的作用与价值1.2 索引的工作原理1.3 索引的存储结构1.4 索引与表的关系 2. Oracle索引类型2.1 B树索引(B-Tree Index)2.1.1 B树索引结构2.1.2 创建B树索引 2.2 位图索引(Bitmap Index)2…

Dify工作流实践—根据word需求文档编写测试用例到Excel中

前言 这篇文章依赖到的操作可查阅我之前的文章: dify里的大模型是怎么添加进来的:在Windows本地部署Dify详细操作 flask 框架app.route()函数的开发和调用:PythonWeb开发框架—Flask工程创建和app.route使用详解 结构化提示词的编写&…

同态加密在物联网数据聚合与分析中的关键作用

在物联网(IoT)时代,智能家居设备、城市交通传感器、工业生产监测装置等各类设备如雨后春笋般涌现,产生了海量的数据。据国际数据公司(IDC)预测,到2025年全球物联网设备设备数量已突破 300 亿台&…

ffmpeg 的视频格式转换 c# win10

1,下载ffmpeg ,并设置环境变量。 ffmpeghttps://www.gyan.dev/ffmpeg/builds/ 2.新建.net 9.0 winform using System; using System.Diagnostics; using System.Text; using System.Windows.Forms;namespace WinFormsApp11 {public partial class Fo…

[MySQL初阶]MySQL(7) 表的内外连接

标题:[MySQL初阶]MySQL(7)表的内外连接 水墨不写bug 文章目录 一. 内连接 (INNER JOIN)二. 外连接 (OUTER JOIN)关键区别总结 三、 如何选择 在 MySQL 中,连接(JOIN)用于根据两个或多个表之间的相关列组合行。内连接(I…

Python自带的窗体开发技术:Tkinter 从入门到精通

文章目录 第一部分:Tkinter 基础1. 第一个 Tkinter 程序2. 基本组件介绍3. 布局管理pack() - 简单布局grid() - 网格布局place() - 精确位置布局 第二部分:Tkinter 进阶1. 事件处理2. 对话框3. 菜单和工具栏 第三部分:Tkinter 高级应用1. 使用…