计算机组成原理 #
- 基础
- 硬件
- CPU
- 内存
- 磁盘
- 硬件
- 进阶
- 设计与实现
操作系统 #
- 基础
- 进程
- 一个进程包含哪些信息?
- 进程切换时,操作系统做了哪些事情?
- 进程切换时,需要保存哪些信息,保存在哪里?
- 线程
- 线程比进程轻量,体现在哪里?
- 什么时候使用线程,什么时候使用进程?
- 协程
- 协程是什么,怎么实现的?
- 既然协程那么好,那什么时候用进程和线程?
- 堆栈
- 程序加载的时候,是怎么分布的,哪些在堆里,哪些在栈里?
- 进程
- 进阶
- 设计与实现
Linux #
- 基础
- 硬件信息
- 如何查看内存大小?
- 如何查看 CPU 个数,CPU 核心数,逻辑 CPU 个数?
- 如何查看系统内核?
- 如何查看操作系统版本?
- 运行信息
- 如何查看占用内存最多的进程?
- 如何查看占用 CPU 最多的进程?
- 如何查看占用某个端口的进程?
- 如何查看文件被占用没被彻底删除(看不到文件,但是磁盘没有释放)?
- shell
- ps aux 与 ps -ef 有什么区别?
- lsof
- awk
- sed
- 硬件信息
- 进阶
- 设计与实现
网络 #
- 基础
- 进阶
- 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)
vsklog.Fatal
vspanic
- 标准库
- 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
)
- CAP (
- 高性能
- 高可用
- 高并发
- 高扩展性
- 如何提高可扩展性?
- 如何构建高扩展性网站?
- 架构设计原则
- 进阶
- 设计与实现
项目管理 #
- 基础
- 敏捷开发
- 什么是敏捷开发?
- 绩效管理
- KPI
- OKR
- 什么是 OKR,比 KPI 好在哪里?
- 如何做好 OKR 制定?
- 敏捷开发
- 进阶
- 设计与实现
云计算 #
云原生 #
- 基础
- 什么是云原生
- 云原生解决了哪些痛点
- 什么是声明式 API
- 什么是不可变基础设施
- 什么是 Service Mesh
- 进阶
- 如何实现 sidecar 注入
- 如何实现流量劫持
- 设计与实现
- Istio 可观察指什么,如何实现
Docker #
- dockerfile
entrypoint
vscmd
- 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 a
与curl 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 事务是怎么实现的?
- 为什么 Oracle 等默认隔离级别是
READ COMMITTED
,而 Mysql 默认隔离级别是REPEATABLE READ
?
- 基础
-
- 基础
- Redis 有哪些数据结构,分别适用什么场景?
- 进阶
- Redis 如何做持久化?
- 设计与实现
- Redis 是单进程单线程,这么设计有什么优点?
- Redis 数据结构是如何实现的?
- 基础
-
PostgreSQL
消息队列 #
-
基础
-
进阶
-
设计与实现
-
- 常见的消息队列有哪些,分别适用什么场景?
- RocketMQ 相比于 Kafka 有哪些改进?
-
- Kafka 如何实现一致性?
-
ActiveMQ
-
ZeroMQ
缓存 #
- 基础
- 进阶
- 设计与实现
性能 #
- 火焰图
- perf
搜索引擎 #
- 基础
- 进阶
- 设计与实现
其他 #
前端与客户端 #
Web 前端 #
- 基础
- Vue
- React
- Angular
- 进阶
- 浏览器
- 设计与实现
Android #
- 基础
- 进阶
- 设计与实现
iOS #
- 基础
- 进阶
- 设计与实现
运维 #
- 基础
- 什么是 CI/CD
- 你们公司如何实现 CI/CD
- 进阶
- 设计与实现
安全 #
- 基础
- XSS
- 什么是 XSS,为什么会发生 XSS?
- 有哪些 XSS 攻击方法?
- 如何防止 XSS 攻击?
- CSRF
- 什么是 CSRF,为什么会发生 CSRF?
- 有哪些 CSRF 攻击方法?
- 如何防止 CSRF 攻击?
- XSS
- 进阶
- 设计与实现
测试 #
- 基础
- 进阶
- 设计与实现
其他 #
其他教程 #
HIT-Alibaba/interview #
https://hit-alibaba.github.io/interview/
笔试面试知识整理
叶王 © 2013-2024 版权所有。如果本文档对你有所帮助,可以请作者喝饮料。