资料内容:
头条 Java 一面
1.讲讲 jvm 运行时数据库区
2.讲讲你知道的垃圾回收算法
3.jvm 内存模型 jmm
4.内存泄漏与内存溢出的区别
5. select、epoll 的区别?底层的数据结构是什么?
6.mysql 数据库默认存储引擎,有什么优点
7.优化数据库的方法,从 sql 到缓存到 cpu 到操作系统,知道多少说多少
8.什么情景下做分表,什么情景下做分库
9.linkedList 与 arrayList 区别 适用场景
10.array list 是如何扩容的
11. volatile 关键字的作用?Java 内存模型?
12.java lock 的实现,公平锁、非公平锁
13.悲观锁和乐观锁,应用中的案例,mysql 当中怎么实现,java 中的实现
头条 Java 二面
. Java 内存分配策略?多个线程同时请求内存,如何分配?
. Redis 底层用到了哪些数据结构?使用 Redis 的 set 来做过什么?
. Redis 使用过程中遇到什么问题?搭建过 Redis 集群吗?
. 如何分析“慢查询”日志进行 SQL/索引 优化?
MySQL 索引结构解释一下?(B+ 树)
. MySQL Hash 索引适用情况?举下例子?
头条 Java 三面
. 如何保证数据库与 redis 缓存一致的
. Redis 的并发竞争问题是什么?如何解决这个问题?了解 Redis 事务
的 CAS 方案吗?
. 如何保证 Redis 高并发、高可用?
. Redis 的主从复制原理,以及 Redis 的哨兵原理?
. 如果让你写一个消息队列,该如何进行架构设计啊?说一下你的思路。
. MySQL 数据库主从同步怎么实现?
. 秒杀模块怎么设计的,如何压测,抗压手段
头条 Java 一面参考答案:
MySQL 锁概述
相对其他数据库而言,MySQL 的锁机制比较简单,其最显著的特点是不同的存储
引擎支持不同的锁机制。
比如:
. MyISAM 和 MEMORY 存储引擎采用的是表级锁(table-level locking);
. InnoDB 存储引擎既支持行级锁( row-level locking),也支持表级锁,
但默认情况下是采用行级锁。
MySQL 主要的两种锁的特性可大致归纳如下: