开水团四轮游

这篇博客详细记录了一次全面的Java面试过程,涵盖了一面的Java基础、Redis、操作系统和算法,二面的Java进阶、网络、数据库和算法,以及三面和HR面的综合问题。内容包括HashMap与ConcurrentHashMap的区别,JVM内存结构,线程池原理,Redis数据结构,TCP连接状态,数据库优化,分布式事务解决方案等,最后还涉及了面试者自我评估和学习方法的讨论。

一面

Java
  1. HashMap和ConcurrentHashMap
    HashMap是基于拉链式的散列方法,当阈值超过3/4*cap时,就会进行桶的扩容,扩容时如果红黑树的个数小于6则重新变为链表。扩容的时候会拆分成两个链表(要么一致,要么差一个oldCap)

ConcurrentHashMap有一个特别的字段sizeCtl,不同的值有不同的含义。当为负数时:-1代表正在初始化,-N代表有N-1个线程正在 进行扩容;当为0时:代表当时的table还没有被初始化;当为正数时:表示初始化或者下一次进行扩容的大小。Con在计算size的时候有两个步骤,重复计算三次,不一样的话加锁计算

红黑树的结构

  1. Java9+新特性
    JDK9的jshell,接口私有方法,多版本兼容jar,try-with-resourses的改进,创建不可变集合,增强stream API,把String的char[]改为byte[]

jdk11支持局部变量类型推导

jdk12 switch不用写break

  1. Jvm的内存结构
    堆,方法区,虚拟机栈,本地方法栈和程序计数器

  2. 线程池的原理
    核心线程,最大线程,等待时间,等待单位,拒绝策略,线程工厂,阻塞队列

如何衡量线程池比较快

可以通过Java当中的Timer类来实现

  1. sl
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值