八股20240324

1、java的数据类型
2、linkList和arrayList的区别
3、锁的类型有哪些,悲观锁和乐观锁知道吗
4、mysql索引类型,索引在什么时候失效
5、linux命令会吗
6、捕获异常会吗,什么时候用捕获异常
7、springcloud会吗,核心组件是什么
8、springboot启动类注解
9、equels和==的区别

1、

**基本数据类型**:整数类型(byte, short, int, long),浮点数类型(float、double),字符类型(char),布尔类型(boolean)
**引用数据类型**:类(class)、接口(interface)、数组(Array)

2、

①ArrayList基于数组实现,对于通过索引访问元素具有良好的性能;
②LinkedList基于双向链表实现,插入和删除操作在链表中更高效,因为它们只涉及相邻节点的指针修改,而不需要移动大量元素
③LinkedList和ArrayList都不是线程安全的

3、

锁的类型:

  • 内置锁(synchronized): 每个Java对象都有一个内置锁,它可以通过synchronized关键字来获取和释放。同一时刻只允许一个线程获取该锁
  • 重入锁(Reentrant Lock): 与内置锁不同,重入锁允许线程在持有锁的情况下多次进入同步代码块,而不会被阻塞
  • 互斥锁(Mutex Lock): 确保同一时刻只有一个线程可以访问共享资源,内置锁和重入锁都可以被视为互斥锁的实现
  • 公平锁(Fair Lock): 等待时间较长的线程会优先获取锁。重入锁可以配置为公平锁。
  • 非公平锁(Nonfair Lock): 非公平锁允许锁竞争,不保证获取锁的顺序与线程请求锁的顺序相同。在非公平锁中,等待时间较短的线程可能会插队获取锁。

锁的并发机制:

  • 悲观锁:在执行读和写操作之前加锁,防止其他线程的干扰(内置锁、可重入锁),适用于并发更新操作频繁,且并发量较高的场景
  • 乐观锁:在读取数据时不对共享资源进行加锁,而是在更新数据之前,检查在读取数据后是否发生了其他线程的修改,适用于读操作频繁,且更新操作相对较少的场景,乐观锁减少了线程间的竞争,提高了并发性能,但需要处理冲突

4、

①B-Tree索引(Balanced Tree,平衡树):普通索引、唯一索引和主键索引都是基于B-Tree实现的
②哈希索引

5、

cd、touch、mkdir、vim、ssh、scp、docker

6、

需要回滚事务、异常发生时需要执行特定的业务逻辑、需要释放资源

7、

Netflix、Config、Bus、Sleuth、Stream、Security、Gateway、Consul、Kubernetes

8、

@SpringBootApplication
顺便说一下:springboot核心注解:@SpringBootApplication、@RestController、@RequestMapping、@Service、@Autowired、@Value

9、

equals() 方法是一个方法,用于比较对象的内容是否相等;而 == 运算符用于比较对象的引用是否相等
posted @ 2024-03-24 16:40  徐徐丶  阅读(6)  评论(0)    收藏  举报