大家好,我是一名即将到40岁的程序员,就职过多家互联网大厂,忙于工作和家庭,也没有做过什么文档性总结,今天的这篇文章,主要是为了写一下当年为了进阿里背过的面试题和一些自己的经验,供大家参考。
任何技术相关问题,欢迎加微信沟通 ~
先放个目录,大家根据目录也审视一下自己
上篇
• 一、基础篇
o 网络基础
TCP三次握手
1、OSI与TCP/IP 模型
2、常见网络服务分层
3、TCP与UDP区别及场景
4、TCP滑动窗口,拥塞控制
5、TCP粘包原因和解决方法
6、TCP、UDP报文格式
HTTP协议
1、HTTP协议1.0_1.1_2.0
2、HTTP与HTTPS之间的区别
3、Get和Post请求区别
4、HTTP常见响应状态码
5、重定向和转发区别
6、Cookie和Session区别。
浏览器输入URL过程
o 操作系统基础
进程和线程的区别
1、进程间通信方式IPC
2、用户态和核心态
3、操作系统的进程空间
操作系统内存管理
1、页面置换算法FIFO、LRU
2、死锁条件、解决方式。
o Java基础
面向对象三大特性
1、Java与C++区别
2、多态实现原理
3、static和final关键字
4、抽象类和接口
5、泛型以及泛型擦除
6、反射原理以及使用场景
7、Java异常体系
数据结构
1、ArrayList和LinkedList
2、List遍历快速和安全失败
3、详细介绍HashMap
**4、ConcurrentHashMap **
5、序列化和反序列化
6、String
设计模式与原则
1、单例模式
2、工厂模式
3、抽象工厂模式
o 面试题
构造方法
初始化块
This
重写和重载的区别
Object类方法
基本数据类型和包装类
• 二、JVM篇
o JVM内存划分
1、JVM运行时数据区域
2、堆内存分配策略
3、创建一个对象的步骤
4、对象引用
o JVM类加载过程
1、双亲委派机制
2、tomcat的类加载机制
o JVM垃圾回收
1、存活算法和两次标记过程
2、垃圾回收算法
MinorGC、MajorGC、FullGC
3、垃圾收集器
4、配置垃圾收集器
4、JVM性能调优
5、JDK新特性
o 线上故障排查
1、硬件故障排查
2、报表异常 | JVM调优
3、大屏异常 | JUC调优
4、接口延迟 | SWAP调优
5、内存溢出 | Cache调优
6:CPU飙高 | 死循环
• 三、多线程篇
o 线程调度
1、线程状态
2、线程状态切换
3、阻塞唤醒过程
4、wait和sleep区别
5、创建线程方式
o 线程池
1、线程池构造函数
2、线程处理任务过程:
3、线程拒绝策略
4、Execuors类实现线程池
5、线程池大小设置
o 线程安全
1、乐观锁,CAS思想
2、synchronized底层实现
3、ReenTrantLock底层实现
4、公平锁和非公平锁区别
5、使用层面锁优化
6、系统层面锁优化
7、ThreadLocal原理
8、HashMap线程安全
9、String不可变原因
o 内存模型
1、volatile底层实现
2、AQS思想
3、happens-before
• 四、MySQL篇
o WhyMysql?
海量Aerospike
图谱Neo4j
文档MongoDB
云存储
FastDFS
o 事务
1、事务4大特性
2、事务隔离级别
3、默认隔离级别-RR
4、RR和RC使用场景
5、行锁,表锁,意向锁
6、MVCC多版本并发控制
o 索引
1、Innodb和Myisam引擎
2、哈希索引
3、B+树索引
4、创建索引
5、聚簇索引和非聚簇索引
6、最左前缀问题
o SQL查询
1、SQL语句的执行过程
2、回表查询和覆盖索引
3、Explain及优化
4、JOIN查询
o 集群
1、主从复制过程
2、数据一致性问题
3、集群架构
4、故障转移和恢复
o 面试题
分库分表
如何进行分库分表
如何将老数据进行迁移
系统性能的评估及扩容
如何生成自增的id主键
o 线上故障及优化
更新失败 | 主从同步延时
应用崩溃 | 分库分表优化
查询异常 | SQL 调优
• 五、Redis篇
o WhyRedis
1、简单高效
2、Memcache
3、Tair
4、Guava
5、EVCache
6、ETCD
o Redis底层
1、redis数据类型
2、相关API
3、redis底层结构
4、Zset底层实现
o Redis可用性
1、redis持久化
2、redis事务
3、redis失效策略
4、redis读写模式
5、多级缓存
o Redis七大经典问题
1、缓存雪崩
2、缓存穿透
3、缓存击穿
4、数据不一致
5、数据并发竞争
6、热点key问题
7、BigKey问题
o Redis分区容错
1、redis数据分区
2、主从模式=简单
3、哨兵模式=读多
4、集群模式=写多
5、分布式锁
6、redis心跳检测
o Redis实战
1、Redis优化
2、Redis热升级
• 六、Kafka篇
o Why kafka
o What Kafka
o How Kafka
o 生产消费基本流程
o 一致性
o 可用性
o 面试题
线上问题rebalance
ZooKeeper 的作用
Replica副本的作用
为什么不支持读写分离?
如何防止重复消费
如何保证数据不会丢失
如何保证顺序消费
【线上】如何解决积压消费
如何避免消息积压
如何设计消息队列
• 七、Spring篇
o 设计思想&Beans
1、IOC 控制反转
2、AOP 动态代理
3、Bean生命周期
4、Bean作用域
5、循环依赖
o Spring注解
1、@SpringBoot
2、@SpringMVC
3、@SpringMybatis
4、@Transactional
o Spring源码阅读
1、Spring中的设计模式
• 八、SpringCloud篇
o Why SpringCloud
Spring Boot
GateWay / Zuul
Eureka / Zookeeper
Feign / Ribbon
Hystrix / Sentinel
Config / Nacos
Bus / Stream
Sleuth / Zipkin
安全认证
灰度发布
多版本隔离
各组件调优
• 九、分布式篇
o 发展历程
o CAP
o 一致性
XA方案
Paxos算法
ZAB算法
Raft算法
数据库和Redis的一致性
o 可用性
心跳检测
多机房实时热备
o 分区容错性
日志复制
主备(Master-Slave)
互备(Active-Active)
集群(Cluster)模式
o 分布式事务
XA方案
TCC方案
Saga方案
本地消息表(eBay)
MQ最终一致性
最大努力通知方案(订单 -> 积分)
o 面试题
分布式Session实现方案
下篇
• 一、ES篇
o 1、概述
特点
功能
场景
竞品分析
对比
o 2、基本概念
IK分词器
索引(类数据库)
映射(类表设计)
文档(数据)
o 3、高级特性
映射高级
地理坐标点数据类型
动态映射
DSL高级
聚合分析
智能搜索
o 4、实战
写优化
读优化
零停机索引重建方案
DeepPaging性能解决方案
• 二:Docker&K8S篇
o Why Docker
o 核心概念
o 基本操作
o 实战
• 三、Netty篇
o 核心组件
1、整体结构
2、逻辑架构
o 网络传输
1、五种IO模型的区别
2、Reactor多线程模型
3、拆包粘包问题
4、自定义协议
5、WriteAndFlush
o 内存管理
1、堆外内存
2、数据载体ByteBuf
3、内存分配jemalloc
4、jemalloc 架构
5、内存池设计(待补充)
6、Recycle对象池(待补充)
7、零拷贝技术
o 高性能数据结构
1、FastThreadLocal
2、HashedTimerWheel
3、MpscQueue
4、select、poll、epoll的区别
• 四、LEETCODE
o 【Python语法】
o 【背包模板】
o 【回溯模板】
o 【并查集模板】
o 【拓扑排序模板】
o 【单调栈模板】
o 【二分模板】
o 【动态规划模板】
「单串问题」
「单串加状态问题」
「经典双串LCS问题」
「区间动态规划」
「区间分治动态规划」
o 【滑动窗口】
o 【前缀和】
o 【双指针】
o 【深度优先】
o 【广度优先】
o 【图论】
• 五、实战算法篇
o 1、URL黑名单(布隆过滤器)
o 2、词频统计(分文件)
o 3、未出现的数(bit数组)
o 4、重复URL(分机器)
o 5、TOPK搜索(小根堆)
o 6、中位数(单向二分查找)
o 7、短域名系统(缓存)
o 8、海量评论入库(消息队列)
o 9、在线/并发用户数(Redis)
o 10、热门字符串(前缀树)
o 11、红包算法
o 11、手写快排
o 12、手写归并
o 13、手写堆排
o 14、手写单例
o 15、手写LRUcache
o 16、手写线程池
o 17、手写消费者生产者模式
o 18、手写阻塞队列
o 19、手写多线程交替打印ABC
o 20、交替打印FooBar
• 六、个人项目
o 一、一站到底
1、如何设计排行榜
性能优化过程
方案优化过程
方案1:每日一个滚动榜,当日汇聚(费时间)
方案2:全局N个滚动榜同时写(费空间)
方案3:实时更新,常数次写操作
2、如何解决重复答题
3、一个题目被多个人抢答
4、如何管理昵称重复
5、如何管理出题定时任务
6:如何解决客户端断连
o 二、秒杀项目
技术选型
方案设计
1、如何解决超卖?
2、如何解决重复下单?
3、如何防刷?
4、热key问题如何解决?
5、应对高并发的读请求
6、应对高并发的写请求
7、如何保证数据一致性
8、可靠性如何保障**
9、秒杀系统瓶颈-日志
o 三、即时通信
1、单聊消息可靠传输
2、群聊消息如何保证不丢不重
3、如何保证消息的时序性
4:推拉结合
5、好友推荐
o 四、智慧社区
物联网架构
DCM系统架构
三要素
云 / 边 / 端协同
物联网平台接入
门锁接入
各种协议
IOT流量洪峰
社区直播带货
产品的背景
面临的挑战
协议的比较
整体流程
直播流程
播放流程
直播高可用方案
性能优化方案
流量回放自动化测试
• 七、架构设计
o 1、社区系统的架构
o 2、商城系统-亿级商品如何存储
o 3、对账系统-分布式事务一致性
o 4、用户系统-多线程数据割接
o 5、秒杀系统场景设计
o 6、统计系统-海量计数
o 7、系统设计 - 微软
1、需求收集
2、顶层设计
3、系统核心指标
4、数据存储
o 7、如何设计一个微博
• 八、领域模型落地
o 1、拆分微服务
o 2、关联微服务
o 3、微服务的落地
o 4、领域模型的意义
o 5、战略建模
o 6、相关名词