面试
文章平均质量分 76
LSur_king
待你成王。
展开
-
MySQL事务(MVCC、锁机制)
锁的分类:按照对数据操作的类型来分,分为读锁和写锁。 按照锁的粒度来分,可分为行锁(间隙锁、临键锁、记录锁)、表锁(意向锁、自增锁)、页锁。 按照锁的意识形态分,又有悲观锁和乐观锁。悲观锁对应的实现有共享锁(又称读锁,简称S锁)和排他锁(又称写锁,简称X锁),Java中的synchronized关键字;乐观锁对应的实现java.util.concurrent.atomic包下面的原子变量使用了乐观锁的一种 CAS 实现、还有就是通过版本号控制。读锁(共享锁):针对同一份数据,多个读操作可以同时原创 2022-01-06 19:48:43 · 1382 阅读 · 2 评论 -
MySQL索引
常见的数据结构:Hash表(数组+链表的结构,有hash冲突的问题且无法进行范围查找) 二叉树(二叉排序树递增插入的时候会退化成链表) 红黑树(非严格的二叉平衡树,树的层数会相对多一些,但是插入性能相对会提升,HashMap的底层从1.8开始改用红黑树实现,取代了Hash表) AVL树(严格的二叉平衡树,左右两个子树高度差不能大于1,这会把树的层数打薄但是插入性能会降低) B-树(多叉树,所以大大降低了树的深度,但区间访问的时候会回旋查找,三层结构只能存储几千条索引数据) B+树(多叉树,三层原创 2021-05-05 15:40:51 · 261 阅读 · 1 评论 -
排序、递归、动态规划
问:一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。解:推导出递推公式后,编程时自底向上型循环求解,时间复杂度为O(n),空间复杂度为O(3) 。public class Solution { public int jumpFloor(int target) { if (target <= 1) return 1; // fn表示第f[n]项, fn1表原创 2021-04-27 16:31:43 · 186 阅读 · 0 评论 -
JVM、MVCC、NIO
【JVM相关知识】JVM虚拟机包含类装载子系统、JVM内存模型和字节码执行引擎。JVM内存模型由堆、(线程)栈、本地方法栈、方法区(元空间)和程序计数器组成。方法区(元空间)存放常量+静态变量+类元信息。 本地方法会用native关键字标志,底层是用C++实现的,所以本地方法栈和线程栈的区别就是一个是C++实现的栈一个是Java自己实现的栈。 每个Java线程会分配一个程序计数器、本地方法栈和线程栈,线程栈中根据线程调用的方法划分不同的栈帧区域。每个栈帧区域包含局部变量表、操作数栈、动.原创 2021-04-24 21:06:20 · 297 阅读 · 0 评论 -
建立与释放TCP连接的过程
首先给出标准的书上的概念,摘自 谢希仁著《计算机网络第6版》:三次握手的全过程: 四次挥手的全过程: 以下是经过总结、提取后在笔试题和面试题的回答:三次握手:1.客户端发送SYN请求,进入SYN-SEND(同步发送状态)2.服务端收到请求,回复ACK报文并发送SYN请求,进入SYN-RECV(同步接收状态)--为什么说建立连接至少三次握手,是因为这里发送...原创 2018-10-06 17:37:07 · 1677 阅读 · 1 评论