每日后端面试5题 第六天

1. Java中有几种类型的流

字符流、字节流

输入流、输出流

节点流、处理流

2 .Spring支持的几种bean的作用域

五种:

1.singleton

bean在每个ioc容器中只有一个实例

2.prototype

可以有多个实例

3-5在web环境中才生效

3.request

每次请求才创建bean

4.session

在一个HTTP session中,一个bean定义对应的一个实例

5.application

应用程序启动时创建bean,销毁时销毁bean。

3. synchronized和Lock有什么区别?加锁的方式有哪些

语法层面

    synchronized 是关键字,隐式加锁,源码在 jvm 中,用 c++ 语言实现

    Lock 是接口,显式加锁,源码由 jdk 提供,用 java 语言实现

    使用 synchronized 时,退出同步代码块锁会自动释放,而使用 Lock 时,需要手动调用 unlock 方法释放锁

功能层面

    二者均属于悲观锁、都具备基本的互斥、同步、锁重入功能

    Lock 提供了许多 synchronized 不具备的功能,例如获取等待状态、公平锁、可打断、可超时、多条件变量

    Lock 有适合不同场景的实现,如 ReentrantLock,ReentrantReadWriteLock

性能层面

    在没有竞争时,synchronized 做了很多优化,如偏向锁、轻量级锁,性能不赖

    在竞争激烈时,Lock 的实现通常会提供更好的性能

4.Java提供的常见集合

单列集合

Collection -- List -- ArrayList

        │            ┖   -- LinkedList

       ┖      -- Set -- HashSet

                     ┖   -- TreeSet

双列集合

Map -- HashMap

 ┖   -- TreeMap

 ┖   -- ConcurrentHashMap

5.事务的四大特性是什么

1.原子性

事务是最小单位原子,同成同败

2.一致性

理解1:数据变化、保存一致 eg 银行里存500得500

理解2:预期值和实际值一致

3.隔离性

多个事务之间不要产生影响

4.持久性

操作最终会持久化到数据库中

补充:隔离性拓展-隔离级别

读未提交

一个事务可读取另一未提交的数据

安全性差

读已提交

只能读取另一已提交的数据

可重复读

一个事务同时只有一个事务操作当前表

其他事务在当前事务提交后还是看不到修改后的查询结果

年度财务报表可能用得到。

串行化

锁表,同时只有一个事务操作当前表

只有事务提交后,别的事务才能操作

你可能感兴趣的:(面试,职场和发展,java,spring,boot,sql)