面试突击:轻量级网络库muduo

文摘   2024-11-10 14:01   广东  

知识星球再添 CPP项目专栏, 关于网络库,知名的就是陈硕的muduo

之前也有不少录友,自己做一个muduo写到简历上。

这次 我们从 面试的角度带大家速成muduo,【项目细节】【项目面试常见问题汇总】【拓展出的基础知识汇总】【测试相关问题】【简历写法】 都给大家安排的明明白白。

为什么要做 muduo?

  • 通过学习muduo网络库源码,一定程度上提升了linux网络编程能力;
  • 熟悉了网络编程及其下的线程池,缓冲区等设计,学习了多线程编程;
  • 通过深入了解muduo网络库源码,对经典的五种IO模型及Reactor模型有了更深的认识
  • 掌握基于事件驱动和事件回调的epoll+线程池面向对象编程。

参考书籍

  • 陈硕(官方):https://github.com/chenshuo/muduo
  • 《Linux多线程服务器编程-使用 muduo C++网络库》-陈硕
  • 《Linux高性能服务器编程》-游双

项目专栏目录

  • muduo网络库项目前言
    • 为什么要做 muduo?
    • 所需要的基础知识
    • 参考书籍
  • 框架梳理
  • 并发框架
    • 重要的成员方法:
    • TcpConnection的重要变量
    • TcpConnection的重要成员方法:
    • Acceptor封装的重要成员变量
    • Acceptor封装的重要成员方法
    • EventLoop概述:
    • One Loop Per Thread 含义介绍
    • 全局概览Poller、Channel和EventLoop在整个Multi-Reactor通信架构中的角色
    • EventLoop重要方法 EventLoop:loop():
    • Poller/EpollPoller概述
    • Poller/EpollPoller的重要成员变量:
    • EpollPoller给外部提供的最重要的方法:
    • Channel类重要的成员变量:
    • Channel类重要的成员方法
    • Channel
    • Poller
    • EventLoop
    • Acceptor
    • tcpconnection
    • socket
    • buffer
  • 项目介绍
    • 简单介绍一下你的项目
  • 项目面试常见问题汇总
    • Channel的tie _ 涉及到的精妙之处
    • 怎么保证一个线程只有一个EventLoop对象
    • 怎么保证不该跨线程调用的函数不会跨线程调用
    • 如果TcpConnection中有正在发送的数据,怎么保证在触发TcpConnection关闭机制后,能先让TcpConnection先把数据发送完再释放TcpConnection对象的资源?
    • 项目中的难点?
    • 项目中遇到的困难?是如何解决的?
    • 项目当中有什么亮点
  • 项目细节
    • Buffer数据结构
    • 把socket上的数据写入Input Buffer
    • 把用户数据通过output buffer发送给对方
    • 异步日志流程
    • 开启异步日志
    • 把日志写入缓冲区
    • 日志系统
    • 缓存机制
    • muduo定时器实现思路
  • 项目拓展出的基础知识汇总
    • reactor、proactor模型的区别?
    • reactor模式中,各个模式的区别?
    • 说一下什么是ET,什么是LT,有什么区别?
    • 为什么ET模式不可以文件描述符阻塞,而LT模式可以呢?
    • 你用了epoll,说一下为什么用epoll,还有其他多路复用方式吗?区别是什么?
    • IO多路复用
    • 并发模型
    • 测试相关问题
  • 简历写法 & 面试技巧
    • 八股
    • 算法
    • 实习
    • 项目
    • 本项目简历写法
    • 通用简历写法
    • 面试技巧

简历写法

为了避免知识星球里大家学习这个项目写简历重复,本项目专栏提供了三种简历写法:

本项目常见问题

面试中,面试官最喜欢问的就是项目难点,以及这个难点你是如何解决的。

专栏里都给出明确的例子:

项目亮点以及项目细节

为了更好的掌握这个项目,亮点和细节都给大家讲清楚:

项目拓展出的基础知识

在做做项目的时候,最好的方式就是 理论基础知识和项目实战相结合。

面试官也喜欢在 项目中问基础知识(八股文),本专栏也给出muduo可以拓展哪些基础知识

项目专栏部分截图


突击来用

如果大家面试在即,实在没时间做项目了,可以直接按照专栏给出的【简历写法】,写到简历上,然后把项目专栏里的面试问题,都认真背一背就好了,基本覆盖 绝大多数 网络库项目问题。

获取本项目专栏

本项目专栏仅为星球内部专享,大家可以加入知识星球里查看,在星球置顶一:

知识星球支持三天(72h)内全额退款,可以进去看看,星球里的资料都可以获取,如果感觉没收获就退款,退款方式在知识星球APP右上角。(全程无套路)

扫码加入代码随想录知识星球,方向比努力更重要,一群人可以走的更远!

加入知识星球后,记得加如下微信,拉你到星球交流群:




代码随想录
认准代码随想录,学习算法不迷路。 刷题网站:programmercarl.com
 最新文章