分享
  1. 首页
  2. 文章

金三银四真实面经分享

wangzhongyang007 · · 1294 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

从今天开始,不定期分享[组织内部](https://mp.weixin.qq.com/s/tKbBrdwOzLCvQv_FqkVvQg)成员在**金三银四期间的真实面经以及详解**,感兴趣的朋友可以把关注点一下,每天学习一点点,进步一点点! ### 线程和Goroutine的区别,线程适用于什么场景,Goroutine适用于什么场景 1. **区别**: - **调度方式**:线程由操作系统内核调度,Goroutine由Go运行时调度。 - **资源开销**:线程栈固定(通常1MB以上),创建和销毁开销大;Goroutine初始栈仅2KB,可动态扩展,创建成本极低。 - **并发数量**:线程数量受操作系统限制(通常数千),Goroutine可轻松创建数十万甚至更多。 - **通信方式**:线程依赖共享内存和锁同步,易引发竞态条件;Goroutine通过Channel通信,避免显式锁。 - **上下文切换**:线程切换涉及内核态与用户态切换,开销大;Goroutine切换由运行时管理,仅调整栈指针,开销小。 2. **适用场景**: - **线程**:适用于计算密集型任务(如科学计算、图像处理)或需要直接操作底层硬件资源的场景。 - **Goroutine**:适合高并发、I/O密集型任务(如Web服务器、微服务)、需要轻量级并发单元的场景。 --- ### 进程的生命周期,上下文切换 1. **生命周期**: - **创建**:通过`fork()`或`exec()`生成新进程,分配资源(如内存、文件描述符)。 - **就绪**:进程等待CPU调度,进入就绪队列。 - **运行**:占用CPU执行指令。 - **阻塞**:因等待I/O或资源而暂停,进入阻塞队列。 - **终止**:完成任务或被强制终止,释放资源。 2. **上下文切换**: - **定义**:保存当前进程的CPU状态(寄存器、程序计数器等),加载下一个进程的状态。 - **开销**:涉及内核态与用户态切换、缓存刷新(如TLB)。 - **类型**: - **进程切换**:切换地址空间,开销最大。 - **线程切换**:共享进程地址空间,开销较小。 - **中断切换**:仅保存内核态上下文,不涉及用户态资源。 --- ### 操作系统一切皆文件,文件描述符 1. **概念**: - **文件描述符(FD)**:非负整数,用于标识进程打开的文件、套接字等资源。 - **与inode关系**:FD指向内核维护的打开文件表条目,最终关联到文件系统的inode(存储元数据)。 2. **作用**: - **统一接口**:通过`read()`、`write()`等系统调用操作所有资源(如磁盘文件、网络套接字)。 - **资源隔离**:每个进程维护独立的FD表,避免冲突。 --- ### TCP三次握手,五层模型和七层模型 1. **TCP三次握手**: - **过程**: 1. **SYN**:客户端发送SYN包(序列号`x`)。 2. **SYN-ACK**:服务端返回SYN包(序列号`y`)和ACK(`x+1`)。 3. **ACK**:客户端发送ACK(`y+1`),连接建立。 - **目的**:确认双方收发能力,同步初始序列号。 2. **网络模型**: - **OSI七层**:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 - **TCP/IP五层**:物理层、数据链路层、网络层、传输层、应用层(合并会话层、表示层)。 - **核心区别**:OSI理论性强,TCP/IP更贴近实际协议(如HTTP位于应用层,TCP/UDP在传输层)。 --- ### HTTPS和HTTP的区别 1. **加密与安全**: - **HTTP**:明文传输,易被窃听或篡改。 - **HTTPS**:通过SSL/TLS加密数据,支持身份认证(CA证书),防止中间人攻击。 2. **协议细节**: - **端口**:HTTP默认80,HTTPS默认443。 - **性能**:HTTPS因加密计算增加延迟,但现代硬件优化后差距缩小。 --- ### TCP和UDP的区别 1. **连接与可靠性**: - **TCP**:面向连接,通过三次握手建立可靠传输,支持丢包重传、流量控制。 - **UDP**:无连接,不保证可靠性,适合实时性要求高的场景(如视频流)。 2. **头部开销**: - **TCP**:头部较大(20字节),包含序列号、确认号等字段。 - **UDP**:头部仅8字节,开销小。 3. **适用场景**: - **TCP**:Web浏览(HTTP)、文件传输(FTP)。 - **UDP**:DNS查询、在线游戏、VoIP。 --- ### 说一下go的chanel,了解CSP模型吗 Channel 是 Go 语言中用于 goroutine 间通信 的核心机制,本质是一个类型化的队列,遵循 先进先出 的规则。 CSP模型是一种并发编程模型。它强调通过通信来共享内存,而不是通过共享内存来通信。CSP模型基于goroutine和channel实现的。在CSP中,在Go中是goroutine是独立的,它们之间通过channel传递消息来协作,而不是通过共享变量。 ### 什么是死锁 死锁是指两个或多个进程(或线程)在执行过程中,因争夺资源而陷入一种互相等待的僵局 死锁的四个必要条件 1. **互斥(Mutual Exclusion)** 资源一次只能被一个进程独占使用(如打印机、文件锁)。 2. **持有并等待(Hold and Wait)** 进程已持有至少一个资源,同时又在等待其他进程持有的资源。 3. **不可抢占(No Preemption)** 资源不能被强制从持有它的进程中剥夺,只能由持有者主动释放。 4. **循环等待(Circular Wait)** 存在一组进程链,每个进程都在等待下一个进程所持有的资源。 (例如:P1 等待 P2 的资源,P2 等待 P3 的资源,P3 等待 P1 的资源) ### 技术选型,为什么选择ETCD作为服务注册中心 我觉得一个服务注册中心需要具备高可用性、一致性和快速响应等特点 - ETCD是一个高可用的分布式键值存储系统,通常用于服务发现。 - ETCD 使用 Raft 算法实现强一致性,确保集群中所有节点的数据实时一致,避免服务注册信息出现分歧 节点故障时自动切换 Leader,保证服务注册中心持续可用。 - 所有操作均持久化到磁盘,即使宕机也能快速恢复,避免注册信息丢失。 - 客户端可通过 Watch API 实时监听服务实例的注册、注销或状态变化。 - 服务消费者无需轮询,降低网络开销,提升响应速度。 **与其他类型的中间件对比** - ETCD的读写性能高,尤其在大规模数据操作时。 - 轻量级 :ETCD的部署和维护成本更低。 - ETCD提供基于HTTP的RESTful API,支持JSON格式的数据交互,对开发者更友好 ### 什么是倒排索引,RaringBitmap和不同Bit Map的区别,倒排索引为什么使用BitMap而不是hashMap 普通Bitmap在处理大量数据时,尤其是稀疏数据时,空间效率不高。 比如如果有100万个用户ID,但只有少数几个存在,Bitmap仍然需要100万位的空间,而RaringBitmap可能通过压缩减少存储空间。 从时间复杂度对比他们的增删改查操作几乎所用的时间几乎相近 ### 虚拟机跟docker有什么区别 1. **架构与资源隔离方式** • **虚拟机**:基于硬件虚拟化技术(如Hypervisor),每个虚拟机需独立运行完整的操作系统(Guest OS),包含内核、系统库等。 • **Docker**:基于操作系统级虚拟化,容器共享宿主机内核,仅隔离文件系统、进程、网络等资源,无独立操作系统。 2. **资源消耗与性能** • **虚拟机**:占用资源多(内存、磁盘空间等),启动速度慢(分钟级),运行需模拟完整硬件环境,性能损耗较高。 • **Docker**:资源占用极少(初始内存仅MB级),启动速度快(秒级),直接调用宿主机内核,性能接近原生。 3. **隔离性与安全性** • **虚拟机**:通过硬件虚拟化实现强隔离,不同虚拟机间互不影响,安全性更高。 • **Docker**:依赖命名空间(Namespace)和资源控制组(Cgroup),隔离性较弱,容器间共享内核可能导致安全风险(如特权容器可能影响宿主机)。 4. **迁移与部署效率** • **虚拟机**:镜像体积大(包含完整OS),迁移需适配底层虚拟化平台,跨平台兼容性差。 • **Docker**:镜像轻量(仅包含应用及依赖),通过Dockerfile标准化构建,支持跨环境(物理机、云平台等)快速迁移和扩展。 5. **适用场景** • **虚拟机**:适合需完全隔离的多租户环境(如不同操作系统应用)、安全敏感场景(如金融系统)。 • **Docker**:适合微服务架构、持续集成/持续部署(CI/CD)、高密度部署(如云原生应用),以及快速迭代的开发测试环境。 **其他差异**: • **创建与销毁速度**:Docker容器秒级完成,虚拟机需分钟级。 • **可管理性**:虚拟机有成熟管理工具(如VMware vCenter),Docker生态工具链更灵活但复杂度较高(如Kubernetes)。 ## 欢迎关注 ❤ 我们搞了一个**免费的面试真题共享群**,互通有无,一起刷题进步。 **没准能让你能刷到自己意向公司的最新面试题呢。** 感兴趣的朋友们可以加我微信:**wangzhongyang1993**,备注:面试群。

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
1294 次点击 ∙ 1 赞
1 回复 | 直到 2025年03月25日 09:59:24
暂无回复
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏