面试总结
文章平均质量分 90
豆豆子i
不摆
展开
-
Java多线程并发面试题
要说线程,必须得先说进程进程:进程是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。线程:线程是进程的一个执行路径,一个进程中至少有一个线程,进程中的多个线程共享进程的资源。Java中的线程分为两类,分别是daemon线程(守护线程)和user(用户)线程。在JVM 启动时会调用 main 函数,main函数所在的线程就是一个用户线程。其实在 JVM 内部同时还启动了很多守护线程, 比如垃圾回收线程。那么守护线程和用户线程有什么区别呢?原创 2023-09-13 21:01:37 · 228 阅读 · 0 评论 -
9月13日扒面经
获取锁:当一个进程需要获取锁时,它会向Redis发送一个SET命令,将一个特定的键作为锁的标识,并设置一个唯一的值作为锁的持有者标识,同时设置一个过期时间,以防止锁被永久持有。声明异常时,调用栈上的每个方法都需要添加异常的处理逻辑,这样会导致异常处理的代码变得冗长和繁琐,降低代码的可读性和可维护性。反射也称类的自省,在运行状态,任何一个类都可以动态获取它的所有属性和方法,任何属性都可以调用它的所有方法和属性。重写是子类继承父类去重写父类的方法,相同的方法名,相同的参数列表,访问权限必须比父类更好。原创 2023-09-13 16:41:46 · 152 阅读 · 0 评论 -
9月12扒面经
JDK 1.7:中 ConcurrentHashmap采用了数组+Segment + 分段锁的方式实现。JDK 1.8:中ConcurrentHashmap采用了数组+链表+红黑树的实现来设计,内部采用大量的CAS操作ConcurrentHashMap的底层结构由多个Segment组成,每个Segment都是一个独立的哈希表。每个Segment都维护了一个数组结构,该数组的每个元素都是一个链表或红黑树。原创 2023-09-12 20:43:06 · 142 阅读 · 0 评论 -
9月8日扒面经
本地方法栈(Native Method Stacks)与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机栈为虚拟机执行 Java 方法(也就是字节码)服务,而本地方法栈则是为虚拟机使用到的本地(Native)方法服务。当有多个线程等待获取锁时,公平锁会按照先来先得的原则,保证等待时间最长的线程最先获取到锁。它可以看作是当前线程所执行的字节码的行号指示器。方法区是比较特别的一块区域,和堆类似,它也是各个线程共享的内存区域,用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。原创 2023-09-09 21:57:17 · 188 阅读 · 0 评论 -
9月9日扒面经
在这个场景中,事务T1持有行A的行级锁并等待行B的行级锁,而事务T2持有行B的行级锁并等待行A的行级锁。Java中基本类型和方法的局部变量存储在栈中,它们的值存储在栈帧中,不需要进行垃圾回收,而对象的引用和实例变量则存储在堆内存中,有垃圾回收机制进行自动回收。IOC的基本功能是通过将对象的创建、管理和依赖注入的控制权交给容器中,从而降低应用程序的耦合度,提高代码的可维护性和可测试性。电商系统,产品类(产品打折的方法),继承产品类的图书类,手机类,子类(重新产品打折的方法,不同的折扣)原创 2023-09-09 21:56:28 · 233 阅读 · 0 评论 -
9月7日扒面经
事务是数据执行的最小单元,不可以被分割事务 A、B 交替执行,事务 A 读取到事务 B 未提交的数据,这就是脏读。在一个事务范围内,两个相同的查询,读取同一条记录,却返回了不同的数据,这就是不可重复读。事务 A 查询一个范围的结果集,另一个并发事务 B 往这个范围中插入 / 删除了数据,并静悄悄地提交,然后事务 A 再次查询相同的范围,两次读取得到的结果集不一样了,这就是幻读。原创 2023-09-07 22:02:41 · 188 阅读 · 0 评论 -
Java集合面试
ConcurrentHashMap采用锁分段技术,整个ConcurrentHashMap由一个个Segment组成,Segment通过继承ReentrantLock来进行加锁,所以每次需要加锁的操作锁住的是一个segment,这样只要保证每个Segment是线程安全的,也就实现了全局的线程安全。引入红黑树我认为是这样,当产生hash冲突时会形成链表,当数据多了冲突多了,链表会越来越长,造成链化,此时查询特别耗时间,本来时间复杂度为O(1)结构可能达到O(n),引入红黑树可以优化查询。链表用来解决哈希冲突;原创 2023-09-05 18:42:57 · 300 阅读 · 0 评论 -
Java基础面试题
两个对象的hashCode()相同,equals()不一定为true.因为在散列表中,hashCoding()相等即两个键值对的哈希值相等,然而哈希值相等,并不一定能得出键值对相等【散列冲突】原创 2023-09-04 11:17:06 · 69 阅读 · 0 评论