计算机RoadMap

制作计算机

计算机本质就是用来做计算的,核心在于把客观世界抽象成数学模型,选择合适的数据结构,进行数据计算。

逻辑门

  • 常见的逻辑门有哪些
  • 它们可以组成什么计算机原件
  • 怎么把这些原件拼接起来

BIOS开机启动

  • 从按下电源键到进入系统桌面的过程

高速缓存

  • 怎么有效利用高速缓存?
  • 高速缓存会带来什么问题

外围设备

  • 如何与IO设备交互?

操作系统

操作系统对各种硬件资源进行抽象,我们可以基于此提高开发软件的效率

虚拟化

  • 512MB的内存怎么运行得了1GB的程序?
  • PCB的数据结构是怎样的

并发

  • 为什么需要进程/线程安全?死锁的必要条件是啥?
  • 进程、线程、协程的关系?

持久化

  • 如何将文件与磁盘块做关联?
  • 在磁盘上怎么找到你想要的文件?
  • 文件系统有一层OS Cache,如何保证数据不丢失

计算机网络

TCP通信

  • 为什么三次握手,四次挥手
  • 序号如何初始化,为何每次都不同
  • 可靠传输、流量控制如何保证?
  • 和UDP有哪些区别

应用层

  • DNS的工作机制
  • HTTPS的工作机制
  • 描述从浏览器输入url到显示html页面这个过程

系统设计

数据库

  • 常见的数据模型有哪些,适合哪些场景
  • 如何高效读写数据,应该设置怎样的数据结构
  • 如何保证ACID的实现
  • 事务可以设置哪些隔离级别,会有什么问题,底层实现?

缓存

  • 缓存穿透是什么,如何避免
  • 缓存不一致如何解决

搜索引擎

  • 底层数据结构如何设计

消息队列

  • 消息队列能解决什么问题
  • 如何保证消息的顺序性
  • 消息丢失了怎么办
  • 有没有可能消费到相同的消息,怎么处理
  • 积压了大量消息,怎么办

分布式系统

好的分布式系统应该具有高可用性、良好的扩展性

事务

  • 2PC的具体过程

一致性算法

分区方案

  • 如何生成全局唯一ID并根据分区进行路由

选主

  • 选主的方式是怎样的
  • 出现脑裂的情况怎么办
  • 写立即读如何处理

  • 得到锁的机器宕机了怎么办

运维

容器

自动化测试

Linux

  • 查看监听端口
  • 查看进程资源使用率

汇编&编译

  • 这方面的发展主要是让开发程序更方便、更易维护
  • 编译有哪几个阶段

虚拟机

  • 编译器、解释器、虚拟机三者有什么区别

编解码

  • 半包/粘包问题
  • 内存中的数据结构如何序列化/反序列化

算法

数学

全部评论

相关推荐

头像
点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务