首页

计算机组成原理 #

  • 基础
    • 硬件
      • CPU
      • 内存
      • 磁盘
  • 进阶
  • 设计与实现


操作系统 #

  • 基础
    • 进程
      • 一个进程包含哪些信息?
      • 进程切换时,操作系统做了哪些事情?
      • 进程切换时,需要保存哪些信息,保存在哪里?
    • 线程
      • 线程比进程轻量,体现在哪里?
      • 什么时候使用线程,什么时候使用进程?
    • 协程
      • 协程是什么,怎么实现的?
      • 既然协程那么好,那什么时候用进程和线程?
    • 堆栈
      • 程序加载的时候,是怎么分布的,哪些在堆里,哪些在栈里?
  • 进阶
  • 设计与实现

Linux #

  • 基础
    • 硬件信息
      • 如何查看内存大小?
      • 如何查看 CPU 个数,CPU 核心数,逻辑 CPU 个数?
      • 如何查看系统内核?
      • 如何查看操作系统版本?
    • 运行信息
      • 如何查看占用内存最多的进程?
      • 如何查看占用 CPU 最多的进程?
      • 如何查看占用某个端口的进程?
      • 如何查看文件被占用没被彻底删除(看不到文件,但是磁盘没有释放)?
    • shell
      • ps aux 与 ps -ef 有什么区别?
      • lsof
      • awk
      • sed
  • 进阶
  • 设计与实现


网络 #

  • 基础
    • TCP
    • UDP
    • IP
    • HTTP
      • HTTP 状态码有哪些?
      • 301 和 302 有什么区别,分别适用于什么场景?
      • 101, 304, 307 分别是什么?
      • HTTP/1.1 有哪些问题?
      • HTTP2 有哪些特点?
    • 抓包
      • 常用抓包工具有哪些?分别有什么特点,适用于什么场景?
      • tcpdump
      • wireshark
    • 发包
      • 常用发包工具有哪些?分别有什么特点,适用于什么场景?
      • PacketSender
  • 进阶
    • HTTP chunk 是什么?解决了什么问题?
    • HTTP2 多路复用是如何实现的?
    • HTTPS 握手过程?
    • TCP
      • TCP 滑动窗口
      • TCP 粘包
    • Socket 编程
      • IO 多路复用
  • 设计与实现


数据结构与算法 #

数据结构 #

  • 基础
  • 进阶
  • 设计与实现

算法 #

  • 基础
    • 查找
      • 二分查找
    • 排序
      • 快速排序
      • 堆排序
      • 排序算法时间复杂度与空间复杂度
    • 链表
      • 链表逆序
    • 二叉树
  • 进阶
    • 动态规划
  • 设计与实现


编程语言 #

C #

  • 基础
  • 进阶
  • 设计与实现

C++ #

  • 基础
    • 多态
      • 重载和覆盖
    • 指针和引用的区别(引用定义时必须初始化)
    • C++ 虚函数
      • 构造函数可以是虚函数吗
      • 是否可以把所有函数设为虚函数
    • C++ 空类默认有哪些成员函数(默认构造函数、析构函数、复制构造函数、赋值函数)
    • main 函数执行之前会执行什么(全局对象的构造函数会在 main 函数之前执行)
    • 如何避免“野指针”
  • 进阶
  • 设计与实现

Go #

  • 基础
    • 什么时候使用数组?
    • 只读/只写 channel
      • 只读 var chanName <-chan chanType,只写 var chanName chan<- chanType
      • 通道如何优雅关闭?
      • 无缓冲 chan 的发送和接收是否同步
    • make, new 有什么区别?
    • panic, recover 是怎么实现的?
    • receiver 为指针和不为指针的区别?
    • os.Exit(1) vs klog.Fatal vs panic
    • 标准库
      • time,格式化
      • net,为什么需要 response.Body.Close()
      • JSON 标准库对 nil slice 和 空 slice 的处理是一致的吗
      • time.Now() 返回的是什么时间
    • 包管理历史,go.sum,go mod,replace
      • 在 Vendor 特性之前包管理工具是怎么实现的
    • go 版本,gvm
    • init() 函数是什么时候执行的
    • 2 个 interface 可以比较
    • 2 个 nil 可能不相等
    • 函数返回局部变量的指针是否安全
  • 进阶
    • 单元测试,性能测试
    • Makefile
    • Goroutine
      • 调度
      • golang 采用什么并发模型
      • 除了 mutex 以外还有那些方式安全读写共享变量
    • golang 的 sync.atomic 和 C++11 的 atomic 的区别
    • sync.RWMutex 最主要的性能问题最容易在什么常见场景下暴露。有哪些解决或者规避方法
    • GC
    • pprof
    • Go 插件系统
    • 反射
    • 什么是协程泄露(Goroutine Leak)
    • 如何理解不要通过共享内存来通信,而应该通过通信来共享内存
  • 设计与实现
    • slice 底层结构是什么?

Java #

  • 基础
    • 面向对象,多态
    • 抽象类与接口
    • 为什么要用内部类
    • 在一个静态方法内调用一个非静态成员变量,会发生什么
  • 进阶
    • 异常处理
    • 类的加载机制
    • 反射
  • 设计与实现
    • 垃圾回收
    • JVM

JavaScript #

  • 基础
  • 进阶
  • 设计与实现

Kotlin #

  • 基础
  • 进阶
  • 设计与实现

PHP #

  • 基础
  • 进阶
  • 设计与实现

Python #

  • 基础
    • 可迭代的,迭代器,生成器
    • yield
      • 协程
    • 装饰器
    • 猴子补丁
    • 标准库
  • 进阶
    • ctypes
    • GIL
  • 设计与实现

Rust #

  • 基础
  • 进阶
  • 设计与实现


软件工程 #

设计模式 #

  • 基础
    • 设计原则
      • 单一职责原则 (Single Responsibility Principle)
      • 开闭原则 (Open Closed Principle)
      • 里氏替换原则 (Liskov Substitution Principle)
      • 依赖倒置原则 (Dependence Inversion Principle)
      • 接口隔离原则 (Interface Segregation Principle)
      • 迪米特原则 (Demeter Principle)
    • 创建型 (5 种)
      • 简单工厂模式
      • 工厂方法模式
      • 抽象工厂模式
      • 建造者模式
      • 单例模式
    • 结构型 (7 种)
      • 适配器模式
      • 桥接模式
      • 装饰模式
      • 外观模式
      • 享元模式
      • 代理模式
      • 组合模式
      • 适配器模式、装饰模式、代理模式有哪些异同?
    • 行为型 (11 种)
      • 命令模式
      • 中介者模式
      • 观察者模式
      • 状态模式
      • 策略模式
      • 模板方法模式
      • 迭代子模式
      • 责任链模式
      • 备忘录模式
      • 访问者模式
      • 解释器模式
    • 其他设计模式
      • 并发型模式
      • 线程池模式
  • 进阶
  • 设计与实现

架构设计 #

  • 基础
    • 架构设计原则
      • CAP (Consistency, Availability, Partition tolerance)
        • 如何理解 CAP,你在做系统设计时是如何取舍的?
      • ACID (Atomicity, Consistency, Isolation, Durability)
      • BASE (Basically Available, Soft state, Eventual consistency)
    • 高性能
    • 高可用
    • 高并发
    • 高扩展性
      • 如何提高可扩展性?
      • 如何构建高扩展性网站?
  • 进阶
  • 设计与实现

项目管理 #

  • 基础
    • 敏捷开发
      • 什么是敏捷开发?
    • 绩效管理
      • KPI
      • OKR
        • 什么是 OKR,比 KPI 好在哪里?
        • 如何做好 OKR 制定?
  • 进阶
  • 设计与实现


云计算 #

云原生 #

  • 基础
    • 什么是云原生
    • 云原生解决了哪些痛点
    • 什么是声明式 API
    • 什么是不可变基础设施
    • 什么是 Service Mesh
  • 进阶
    • 如何实现 sidecar 注入
    • 如何实现流量劫持
  • 设计与实现
    • Istio 可观察指什么,如何实现

Docker #

  • dockerfile
    • entrypoint vs cmd
  • docker 网络

Kubernetes #

  • 基础
    • Kubernetes 包含哪些核心组件,分别是什么作用?
    • 任务调度
    • 为什么要有 Pod
    • Pod 状态,CrashLoopBackOff 如何 debug
    • 为什么要有 Deployment,rc/rs 是什么
    • 什么时候用 headless service
    • 你了解的 CNI 有哪些,Flannel 与 Calico 分别有什么特点
    • 端口(containerPort,targetPort (pod),port (service),nodePort (service),hostPort
    • kubectl get pod 排序
    • 日志存在哪里
    • coredns: curl acurl a.default,哪个效率更高的
    • ReplicationController vs Replicaset vs Deployment
  • 进阶
    • Kubernetes 资源调度是怎么样的过程,比如 pod 调度
    • CRD 研发
    • Operator 研发
    • CoreDNS 是如何工作
    • ip 都是怎么来的(svc ip,pod id,node ip)
  • 设计与实现


大数据 #

  • 基础
  • 进阶
  • 设计与实现


人工智能 #

  • 基础
  • 进阶
  • 设计与实现

参考:

机器学习 #

  • 基础
    • 常见的损失函数(loss function)有哪些,分别有什么优缺点?
  • 进阶
  • 设计与实现

深度学习 #

  • 基础
  • 进阶
  • 设计与实现


后端 #

Web 后端 #

  • 基础
    • FastCGI
  • 进阶
    • 当你在浏览器中输入 google.com 并且按下回车之后发生了什么
  • 设计与实现

Go Web #

  • Gin
  • Beego
    • beego.Run() 执行了哪些操作

Java Web #

  • Spring
    • SpringBoot 是解决什么问题

PHP Web #

  • Laravel

Python Web #

  • Flask
  • Django

数据库 #

  • 基础

  • 进阶

  • 设计与实现

  • 综合

    • Mysql 与 PostgreSQL 各有什么优势?
    • NoSQL 与传统数据库主要区别是什么?
    • 常见的 NoSQL 有哪些,各自适用什么场景?
  • Mysql

    • 基础
      • Mysql 有哪些引擎,分别有什么特点?
      • Mysql 配置文件在哪里?
    • 进阶
      • Mysql 事务隔离级别有哪些?
      • Mysql 什么情况下会出现死锁?
      • Mysql 有哪些锁,各自的使用场景是什么?
      • Mysql 如何保证数据一致性?
      • Mysql 主从如何同步?
    • 设计与实现
      • Mysql 索引是怎么实现的?
      • Mysql 事务是怎么实现的?
      • 为什么 Oracle 等默认隔离级别是 READ COMMITTED ,而 Mysql 默认隔离级别是 REPEATABLE READ
  • Redis

    • 基础
      • Redis 有哪些数据结构,分别适用什么场景?
    • 进阶
      • Redis 如何做持久化?
    • 设计与实现
      • Redis 是单进程单线程,这么设计有什么优点?
      • Redis 数据结构是如何实现的?
  • PostgreSQL


消息队列 #

  • 基础

  • 进阶

  • 设计与实现

  • 综合

    • 常见的消息队列有哪些,分别适用什么场景?
    • RocketMQ 相比于 Kafka 有哪些改进?
  • Kafka

    • Kafka 如何实现一致性?
  • RocketMQ

  • RabbitMQ

  • ActiveMQ

  • ZeroMQ


缓存 #

  • 基础
  • 进阶
  • 设计与实现

性能 #

  • 火焰图
    • perf

搜索引擎 #

  • 基础
  • 进阶
  • 设计与实现

其他 #



前端与客户端 #

Web 前端 #

  • 基础
    • Vue
    • React
    • Angular
  • 进阶
    • 浏览器
  • 设计与实现

Android #

  • 基础
  • 进阶
  • 设计与实现

iOS #

  • 基础
  • 进阶
  • 设计与实现


运维 #

  • 基础
    • 什么是 CI/CD
    • 你们公司如何实现 CI/CD
  • 进阶
  • 设计与实现


安全 #

  • 基础
    • XSS
      • 什么是 XSS,为什么会发生 XSS?
      • 有哪些 XSS 攻击方法?
      • 如何防止 XSS 攻击?
    • CSRF
      • 什么是 CSRF,为什么会发生 CSRF?
      • 有哪些 CSRF 攻击方法?
      • 如何防止 CSRF 攻击?
  • 进阶
  • 设计与实现


测试 #

  • 基础
  • 进阶
  • 设计与实现


其他 #



其他教程 #

HIT-Alibaba/interview Github stars Language Last Tag Last commit #

https://hit-alibaba.github.io/interview/

笔试面试知识整理


本文访问量

本站总访问量

本站总访客数