面试总结--(2)

142 阅读16分钟

InnoDB支持的四种事务隔离级别名称是什么?有什么区别?说说MySQL隔离级别?

SQL标准定义的四个隔离级别为:

  1. read uncommited :  读到未提交数据
  2. read commited :读取提交内容
  3. repeatable  read : 可重读  (Mysql 的默认事务隔离级别)
  4. serializable :  串行事务  

**Read Uncommited ** 读到未提交数据  : 在隔离级别中,所有事务都可以看到其他未提交事务的执行结果。本隔离级别很少用于实际应用,因为他的性能也不比其他级别好多少。读取到未提交的数据,也被称之为脏读(Dirty  Read).

 

**Read Commited ** 读到提交内容  : 这是大多数 数据库系统的默认隔离级别(但不是Mysql 默认的)。它满足了隔离的简单定义:一个事务只能看见已经提交事务所做的改变。这种隔离级别也支持所谓的不可重复读 ( Nonrepeatable Read ), 因为同一事物的其他实例在该实例处理期间可能会有新的Commit ,所以同一 select 可以返回不同结果。

 

Repeatable  Read (可重读) :这是Mysql 的默认事务隔离级别,它确保同一事物的多个实例在并发读取数据时,会看到同样的数据行。不过理论上,这会导致另一个棘手的问题 :   幻读 ( Phantom  Read):简单的说,幻读指当用户读取某一范围的数据行时, 另一事务又在该范围内插入了新行,当用户再读取该范围的数据行时,会发现有新的“幻影”行 。 InnoDB 和 Falcon  存储引擎通过多版本并发控制(MVCC 、Multiversion  Concurrency  Control  间隙锁)机制解决问题。注:其实多版本只是解决不可重复读问题,而加上间隙锁(也就时它这里所谓的并发控制)才解决了幻读问题。

 

Serializable(可串行化)  : 这是最高的隔离级别,它通过强制事务排序,使之不可能互相冲突从而解决幻读问题。简而言之,它是在每个读的数据行上加上共享锁。在这个级别,可能导致大量的超时现象和锁竞争。

事务的特性及慢查询?

1,在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务

l 原子性:构成事务的的所有操作必须是一个逻辑单元,要么全部执行,要么全部不执行。

l 稳定性(一致性):数据库在事务执行前后状态都必须是稳定的。

l 隔离性:事务之间不会相互影响。

l 可靠性(持久性):事务执行成功后必须全部写入磁盘。

读未提交 读已提交 重复读 串行化

脏读:指一个线程中的事务读取到了另外一个线程中未提交的数据。

不可重复读(虚读):指一个线程中的事务读取到了另外一个线程中提交的update的数据。

幻读:指一个线程中的事务读取到了另外一个线程中提交的insert的数据。

2,慢查询

修改/etc/my.cnf配置文件,重启 MySQL, 这种永久生效.

[mysqld]

slow_query_log = ON 开启慢查询日志

slow_query_log_file = /var/log/mysql/slow.log

long_query_time = 1 大于1秒的记录下来

3,慢查询分析工具

MySQL自带的mysqldumpslow

mysqlsla工具,功能非常强大。数据报表,非常有利于分析慢查询的原因,包括执行频率,数据量,查询消耗等

percona-toolkit

4,mysql性能分析

show profile

BTree机制说一下?

自己回答:

   自己回答

百度答案:

   百度

说说MySQL常用的优化方法

自己回答:

   自己回答

百度答案:

   百度

三面(分布式,消息队列等):

cap了解吗,分别指什么?

自己回答:

   自己回答

百度答案:

   百度

强一致性和弱一致性有什么方法来实现的?

自己回答:

   自己回答

百度答案:

   百度

负载均衡怎么实现?为什么这么做?

自己回答:

   自己回答

百度答案:

   百度

缓存雪崩说下?

自己回答:

   自己回答

百度答案:

   百度

MySQL主从复制怎么实现的?具体原理是什么?有什么优缺点?

自己回答:

   自己回答

百度答案:

   百度

讲讲分布式事务?

自己回答:

   自己回答

百度答案:

   百度

消息队列,用到什么场景(削峰,限流,异步)?

zk的性能瓶颈怎么克服?

自己回答:

   自己回答

百度答案:

   百度

讲了下kafka,怎么保证数据不丢失?确保消息不会重复消费?

自己回答:

   自己回答

百度答案:

   百度

消息送达确认是怎么实现的?

自己回答:

   自己回答

百度答案:

   百度

四面(从项目讲起):

主要用到的架构,做了些什么?

自己回答:

   自己回答

百度答案:

   百度

比较复杂的业务逻辑讲一下?

自己回答:

   自己回答

百度答案:

   百度

遇到很难解决的问题和突破收货

自己回答:

   自己回答

百度答案:

   百度

以后的打算和未来的职业发展,谈谈自己的看法

自己回答:

   自己回答

百度答案:

   百度

并发编程:

什么是多线程并发和并行?

自己回答:

   自己回答

百度答案:

   百度

什么是线程安全问题?

自己回答:

   自己回答

百度答案:

   百度

什么是共享变量的内存可见性问题?

自己回答:

   自己回答

百度答案:

   百度

什么是Java中原子性操作?

自己回答:

   自己回答

百度答案:

   百度

什么是Java中的CAS操作,AtomicLong实现原理?

自己回答:

   自己回答

百度答案:

   百度

什么是Java指令重排序?

自己回答:

   自己回答

百度答案:

   百度

Java中Synchronized关键字的内存语义是什么?

自己回答:

   自己回答

百度答案:

   百度

Java中Volatile关键字的内存语义是什么?

自己回答:

   自己回答

百度答案:

   百度

什么是伪共享,为何会出现,以及如何避免?

自己回答:

   自己回答

百度答案:

   百度

什么是可重入锁、乐观锁、悲观锁、公平锁、非公平锁、独占锁、共享锁?

自己回答:

   自己回答

百度答案:

   百度

讲讲ThreadLocal 的实现原理?

自己回答:

   自己回答

百度答案:

   百度

ThreadLocal 作为变量的线程隔离方式,其内部是如何做的?

自己回答:

   自己回答

百度答案:

   百度

说说InheritableThreadLocal 的实现原理?

自己回答:

   自己回答

百度答案:

   百度

InheritableThreadLocal 是如何弥补 ThreadLocal 不支持继承的特性?

自己回答:

   自己回答

百度答案:

   百度

CyclicBarrier内部的实现与 CountDownLatch 有何不同?

自己回答:

   自己回答

百度答案:

   百度

随机数生成器 Random 类如何使用 CAS 算法保证多线程下新种子的唯一性?

自己回答:

   自己回答

百度答案:

   百度

ThreadLocalRandom 是如何利用 ThreadLocal 的原理来解决 Random 的局限性?

自己回答:

   自己回答

百度答案:

   百度

Spring 框架中如何使用 ThreadLocal 实现 request scope 作用域 Bean?

自己回答:

   自己回答

百度答案:

   百度

并发包中锁的实现底层(对AQS的理解)?

自己回答:

   自己回答

百度答案:

   百度

讲讲独占锁 ReentrantLock 原理?

自己回答:

   自己回答

百度答案:

   百度

谈谈读写锁 ReentrantReadWriteLock 原理?

自己回答:

   自己回答

百度答案:

   百度

StampedLock 锁原理的理解?

自己回答:

   自己回答

百度答案:

   百度

谈下对基于链表的非阻塞无界队列 ConcurrentLinkedQueue 原理的理解?

自己回答:

   自己回答

百度答案:

   百度

ConcurrentLinkedQueue 内部是如何使用 CAS 非阻塞算法来保证多线程下入队出队操作的线程安全?

自己回答:

   自己回答

百度答案:

   百度

基于链表的阻塞队列 LinkedBlockingQueue 原理。

自己回答:

   自己回答

百度答案:

   百度

JVM

Java 内存分配?

自己回答:

   自己回答

百度答案:

   百度

Java 堆的结构是什么样子的?

自己回答:

   自己回答

百度答案:

   百度

什么是堆中的永久代(Perm Gen space)?

自己回答:

   自己回答

百度答案:

   百度

简述各个版本内存区域的变化?

自己回答:

   自己回答

百度答案:

   百度

说说各个区域的作用?

自己回答:

   自己回答

百度答案:

   百度

Java 中会存在内存泄漏吗,简述一下?

自己回答:

   自己回答

百度答案:

   百度

Java 类加载过程?

自己回答:

   自己回答

百度答案:

   百度

描述一下 JVM 加载 Class 文件的原理机制?

自己回答:

   自己回答

百度答案:

   百度

什么是类加载器?

自己回答:

   自己回答

百度答案:

   百度

类加载器有哪些?

自己回答:

   自己回答

百度答案:

   百度

什么是tomcat类加载机制?

自己回答:

   自己回答

百度答案:

   百度

类加载器双亲委派模型机制?

自己回答:

   自己回答

百度答案:

   百度

什么是GC? 为什么要有 GC?

自己回答:

   自己回答

百度答案:

   百度

简述一下Java 垃圾回收机制?

自己回答:

   自己回答

百度答案:

   百度

如何判断一个对象是否存活?

自己回答:

   自己回答

百度答案:

   百度

垃圾回收的优点和原理,并考虑 2 种回收机制?

自己回答:

   自己回答

百度答案:

   百度

垃圾回收器的基本原理是什么?

自己回答:

   自己回答

百度答案:

   百度

垃圾回收器可以马上回收内存吗?有什么办法主动通知虚拟机进行垃圾回收?

自己回答:

   自己回答

百度答案:

   百度

深拷贝和浅拷贝?

自己回答:

   自己回答

百度答案:

   百度

System.gc() 和 Runtime.gc() 会做些什么?

自己回答:

   自己回答

百度答案:

   百度

如果对象的引用被置为 null,垃圾收集器是否会立即释放对象占用的内存?

自己回答:

   自己回答

百度答案:

   百度

什么是分布式垃圾回收(DGC)?它是如何工作的?

自己回答:

   自己回答

百度答案:

   百度

Spring

为什么需要代理模式?

自己回答:

   自己回答

百度答案:

   百度

讲讲静态代理模式的优点及其瓶颈?

自己回答:

   自己回答

百度答案:

   百度

对Java 接口代理模式的实现原理的理解?

自己回答:

   自己回答

百度答案:

   百度

如何使用 Java 反射实现动态代理?

自己回答:

   自己回答

百度答案:

   百度

Java 接口代理模式的指定增强?

自己回答:

   自己回答

百度答案:

   百度

谈谈对Cglib 类增强动态代理的实现?

自己回答:

   自己回答

百度答案:

   百度

point cut,advice,Join point是什么?

自己回答:

   自己回答

百度答案:

   百度

join point 和 point cut 的区别?

自己回答:

   自己回答

百度答案:

   百度

怎么理解面向切面编程的切面?

自己回答:

   自己回答

百度答案:

   百度

谈谈对SpringAOP Weaving(织入)的理解?

自己回答:

   自己回答

百度答案:

   百度

谈谈SpringAOP Introduction(引入)的理解?

自己回答:

   自己回答

百度答案:

   百度

讲解OOP与AOP的简单对比?

自己回答:

   自己回答

百度答案:

   百度

讲解JDK 动态代理和 CGLIB 代理原理以及区别?

自己回答:

   自己回答

百度答案:

   百度

讲解Spring 框架中基于 Schema 的 AOP 实现原理?

自己回答:

   自己回答

百度答案:

   百度

讲解Spring 框架中如何基于 AOP 实现的事务管理?

自己回答:

   自己回答

百度答案:

   百度

谈谈对控制反转的设计思想的理解?

自己回答:

   自己回答

百度答案:

   百度

怎么理解 Spring IOC 容器?点击这里统统拿走

自己回答:

   自己回答

百度答案:

   百度

数据库

MySQL 有哪些存储引擎啊?都有什么区别?

自己回答:

   自己回答

百度答案:

   百度

Float、Decimal 存储金额的区别?

自己回答:

   自己回答

百度答案:

   百度

Datetime、Timestamp 存储时间的区别?

自己回答:

   自己回答

百度答案:

   百度

Char、Varchar、Varbinary 存储字符的区别?

自己回答:

   自己回答

百度答案:

   百度

什么是索引?

自己回答:

   自己回答

百度答案:

   百度

对比一下B+树索引和 Hash索引?

自己回答:

   自己回答

百度答案:

   百度

MySQL索引类型有?

自己回答:

   自己回答

百度答案:

   百度

如何管理 MySQL索引?

自己回答:

   自己回答

百度答案:

   百度

对Explain参数及重要参数的理解?

自己回答:

   自己回答

百度答案:

   百度

索引利弊是什么及索引分类?

自己回答:

   自己回答

百度答案:

   百度

二叉树的装置是什么?

自己回答:

   自己回答

百度答案:

   百度

聚簇索引和非聚簇索引的区别?

自己回答:

   自己回答

百度答案:

   百度

B+tree 如何进行优化?索引遵循哪些原则?存储引擎会进行哪些自动优化?到底何时索引会失效?

自己回答:

   自己回答

百度答案:

   百度

索引与锁有什么关系?

自己回答:

   自己回答

百度答案:

   百度

还有什么其他的索引类型,各自索引有哪些优缺点?

自己回答:

   自己回答

百度答案:

   百度

谈谈对Innodb事务的理解?

自己回答:

   自己回答

百度答案:

   百度

说说数据库事务特点及潜在问题?

自己回答:

   自己回答

百度答案:

   百度

什么是MySQL隔离级别?

自己回答:

   自己回答

百度答案:

   百度

有多少种事务失效的场景,如何解决?

自己回答:

   自己回答

百度答案:

   百度

缓存

redis数据结构有哪些?

自己回答:

   自己回答

百度答案:

   百度

Redis缓存穿透,缓存雪崩?

自己回答:

   自己回答

百度答案:

   百度

如何使用Redis来实现分布式锁?

自己回答:

   自己回答

百度答案:

   百度

Redis的并发竞争问题如何解决?

自己回答:

   自己回答

百度答案:

   百度

Redis持久化的几种方式,优缺点是什么,怎么实现的?

自己回答:

   自己回答

百度答案:

   百度

Redis的缓存失效策略?

自己回答:

   自己回答

百度答案:

   百度

Redis集群,高可用,原理?

自己回答:

   自己回答

百度答案:

   百度

Redis缓存分片?

自己回答:

   自己回答

百度答案:

   百度

Redis的数据淘汰策略?

自己回答:

   自己回答

百度答案:

   百度

redis队列应用场景?

自己回答:

   自己回答

百度答案:

   百度

分布式使用场景(储存session)?

自己回答:

   自己回答

百度答案:

   百度

网络编程

TCP建立连接和断开连接的过程?

自己回答:

   自己回答

百度答案:

   百度

HTTP协议的交互流程,HTTP和HTTPS的差异,SSL的交互流程?

自己回答:

   自己回答

百度答案:

   百度

TCP的滑动窗口协议有什么用?

自己回答:

   自己回答

百度答案:

   百度

HTTP协议都有哪些方法?

自己回答:

   自己回答

百度答案:

   百度

Socket交互的基本流程?

自己回答:

   自己回答

百度答案:

   百度

讲讲tcp协议(建连过程,慢启动,滑动窗口,七层模型)?

自己回答:

   自己回答

百度答案:

   百度

webservice协议(wsdl/soap格式,与restt办议的区别)?

自己回答:

   自己回答

百度答案:

   百度

说说Netty线程模型,什么是零拷贝?

自己回答:

   自己回答

百度答案:

   百度

TCP三次握手、四次挥手?

自己回答:

   自己回答

百度答案:

   百度

DNS解析过程?

自己回答:

   自己回答

百度答案:

   百度

TCP如何保证数据的可靠传输的?

自己回答:

   自己回答

百度答案:

   百度

分布式

什么是CAP定理?

自己回答:

   自己回答

百度答案:

   百度

说说CAP理论和BASE理论?

自己回答:

   自己回答

百度答案:

   百度

什么是最终一致性?最终一致性实现方式?

自己回答:

   自己回答

百度答案:

   百度

什么是一致性Hash?

自己回答:

   自己回答

百度答案:

   百度

讲讲分布式事务?

自己回答:

   自己回答

百度答案:

   百度

如何实现分布式锁?

自己回答:

   自己回答

百度答案:

   百度

如何实现分布式 Session?

自己回答:

   自己回答

百度答案:

   百度

如何保证消息的一致性?

自己回答:

   自己回答

百度答案:

   百度

负载均衡的理解?

自己回答:

   自己回答

百度答案:

   百度

正向代理和反向代理?

自己回答:

   自己回答

百度答案:

   百度

CDN实现原理?

自己回答:

   自己回答

百度答案:

   百度

怎么提升系统的QPS和吞吐?

自己回答:

   自己回答

百度答案:

   百度

Dubbo的底层实现原理和机制?

自己回答:

   自己回答

百度答案:

   百度

描述一个服务从发布到被消费的详细过程?

自己回答:

   自己回答

百度答案:

   百度

分布式系统怎么做服务治理?

自己回答:

   自己回答

百度答案:

   百度

消息中间件如何解决消息丢失问题?

自己回答:

   自己回答

百度答案:

   百度

Dubbo的服务请求失败怎么处理?

自己回答:

   自己回答

百度答案:

   百度

对分布式事务的理解?

自己回答:

   自己回答

百度答案:

   百度

如何实现负载均衡,有哪些算法可以实现?

自己回答:

   自己回答

百度答案:

   百度

Zookeeper的用途,选举的原理是什么?

自己回答:

   自己回答

百度答案:

   百度

讲讲数据的垂直拆分水平拆分?

自己回答:

   自己回答

百度答案:

   百度