今天,就由某大厂一线架构师来手撕微服务架构,带你大战多线程、JVM、Redis和MySQL,这些内容不信你看完还搞不懂!
注意:以下所有面试题(含答案)的文档,以及笔记整理、实战pdf,均可以免费分享给大家哦,需要这些资料的
多线程(英语:multithreading),是指从软件或者硬件上实现多个线程并发执行的技术。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程,进而提升整体处理性能。在一个程序中,这些独立运行的程序片段叫作“线程”(Thread),利用它编程的概念就叫作“多线程处理(Multithreading)”。具有多线程能力的计算机因有硬件支持而能够在同一时间执行多于一个线程进而提升整体处理性能。
一、多线程相关
(1)多线程面试专题
- 多线程有什么用?
- 线程和进程的区别是什么?
- Java 实现线程有哪几种方式?
- 启动线程方法 start()和 run()有什么区别?
- 怎么终止一个线程?如何优雅地终止线程?
- 一个线程的生命周期有哪几种状态?它们之间如何流转的?
- 线程中的 wait()和 sleep()方法有什么区别?
- 多线程同步有哪几种方法?
- 什么是死锁?如何避免死锁?
- 多线程之间如何进行通信?
- 线程怎样拿到返回结果?
- violatile 关键字的作用?
- 新建 T1、T2、T3 三个线程,如何保证它们按顺序执行?
- 怎么控制同一时间只有 3 个线程运行?
- 为什么要使用线程池?
- 常用的几种线程池并讲讲其中的工作原理。
- 线程池启动线程 submit()和 execute()方法有什么不同?
- CyclicBarrier 和 CountDownLatch 的区别?
- 什么是活锁、饥饿、无锁、死锁?
- 什么是原子性、可见性、有序性?
多线程面试专题答案:
(2)Java多线程实战技术-笔记
- Java多线程技能
- 对象及变量的并发访问
- 线程间通信
- Lock的使用
- 定时器Timer
- 单例模式与多线程
- 拾遗增补
二、JVM相关
(1)JVM性能调优面试专题:
- JVM内存区域划分
- JVM执行子系统
- 垃圾回收器和内存分配策略
- 编写高效优雅Java程序
- 性能优化
JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
(2)深入浅出JVM-核心实战
- 走近Java
- Java内存区域与内存溢出异常
- 垃圾收集器与内存分配策略
- 虚拟机性能监控与故障处理工具
- 调优案例分析与实战
- 类文件结构
- 虚拟机类加载机制
- 虚拟机字节码执行引擎
- 类加载及执行子系统的案例与实战
- 早期(编译期)优化
- 晚期(运行期)优化
- Java内存模型与线程
- 线程安全与锁优化
三、MySQL相关
(1)MySQL面试专题:
- Mysql 的技术特点是什么?
- Hash 索引和 B+树所有有什么区别或者说优劣呢?
- Mysql 服务器默认端口是什么?
- 请简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?
- 在 Mysql 中 ENUM 的用法是什么?
- ACID 是什么?可以详细说一下吗?
- Mysql 中使用什么存储引擎?
- Mysql 驱动程序是什么?
- MYSQL 数据库服务器性能分析的方法命令有哪些?
- Innodb 使用的是哪种隔离级别呢?
- 我们如何在 mysql 中运行批处理模式?
- Mysql 表中允许有多少个 TRIGGERS?
- mysql 里记录货币用什么字段类型好
- MYSQL 数据表在什么情况下容易损坏?
- MySQL 都有哪些锁呢?像上面那样子进行锁定岂不是有点阻碍并发效率了?
MySQL在过去由于性能高、成本低、可靠性好,已经成为最流行的开源数据库,因此被广泛地应用在Internet上的中小型网站中。随着MySQL的不断成熟,它也逐渐用于更多大规模网站和应用。非常流行的开源软件组合LAMP中的“M”指的就是MySQL。
(2)MySQL(从入门到实战)笔记
- MySQL 架构与历史
- MySQL 基准测试
- 服务器性能剖析
- Schema 与数据类型优化
- 创建高性能的索引
- 查询性能优化
- MySQL 高级特性
- 优化服务器设置
- 操作系统和硬件优化
- 复制
- 可扩展的MySQL
- 高可用性
- 云端的MySQL
- 应用层优化
- 备份与恢复
- MySQL 用户工具
四、Redis相关:
(1)Redis面试专题
- 什么是 Redis?简述它的优缺点?
- Redis 与 memcached 相比有哪些优势?
- Redis 支持哪几种数据类型?
- Redis 有哪几种数据淘汰策略?
- 一个字符串类型的值能存储最大容量是多少?
- 为什么 Redis 需要把所有数据放到内存中?
- Redis 集群方案什么情况下会导致整个集群不可用?
- MySQL 里有 2000w 数据,redis 中只存 20w 的数据,如何保证 redis 中的数据都是热点数据?
- Jedis 与 Redisson 对比有什么优缺点?
- Redis 集群的主从复制模型是怎样的?
- Redis key 的过期时间和永久有效分别怎么设置?
- 什么是缓存穿透?如何避免?什么是缓存雪崩?何如避免?
- 使用过 Redis 分布式锁么,它是怎么实现的?
- 使用过 Redis 做异步队列么,你是怎么用的?有什么缺点?
Redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
(2)深入浅出Redis
- 第一部分 入门
- 初识Redis
- 使用Redis构建Web应用
- 第二部分 核心概念
- Redis命令
- 数据安全与性能保障
- 使用Redis构建支持程序
- 使用Redis构建应用程序组件
- 基于搜索的应用程序
- 构建简单的社交网站
- 第三部分 进阶内容
- 降低内存占用
- 扩展Redis
- Redis的Lua脚本编程
友情提醒:获取以上所有文档资料