Day499.马士兵22春招面试题① -面经
马士兵22春招面试题①
1、Java面向对象有哪些特征?
-
三大特征
-
继承
- 父类方法属性复用,增强代码的复用性
-
多态
-
必备要求:
- 继承
- 重写
- 父类引用指向子类对象
Animal animal = new Dog(); -
增加代码的可移植性
-
增加代码的健壮性
-
灵活性
-
-
封装
- 增加了代码的可维护性
- 增强代码的复用性
-
2、ArrayList和LinkedList的区别
-
相同点
- 都实现了
List接口
- 都实现了
- 不同点
-
前者
- 底层
数组 - 访问数据更方便
- 底层
-
后者
- 底层
链表 - 插入/删除数据更快
- 底层
-
前者
3、高并发中的集合有哪些问题?
一代线程安全集合
- 涉及集合
- Vector
- Hashtable
- 特点
- 线程安全
- 直接由synchronized修饰,性能低下
二代线程非安全集合
- 涉及集合
- ArrayList
- HashMap
- …
- 特点
- 线程不安全
- 性能高效
- 如何变的线程安全
- 可使用Collections.synchronizedList(xxx);Collections.synchronizedMap(m);
三代线程安全集合
- juc包下的
- ConcurrentHashMap
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- 底层通过Cas自旋锁保证原子性
容器
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8AOySkEI-1641393163394)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105211638317.png)]](https://images2.imgbox.com/50/f8/xyMeFC8e_o.png)
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JYKTbdxP-1641393163396)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105211649280.png)]](https://images2.imgbox.com/70/79/Ox7hlrB9_o.png)
4、JDK1.8的新特性有哪些?
- 接口的默认方法
- Lambda表达式
- Lambda作用域
- 方法/构造引用
- 函数式接口
- 访问局部变量
- 访问对象字段与静态变量
- Stream流式编程
- 多重注解
5、Java接口和抽象类的区别
- 相同点

-
不同点
-
抽象类
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LoSVljVq-1641393163397)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105212132548.png)]](https://images2.imgbox.com/bc/25/5wWOHK94_o.png)
-
接口
-
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M95pwAO5-1641393163398)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105212150487.png)]](https://images2.imgbox.com/01/9b/p5MRB2NK_o.png)
-
什么时候使用抽象类/接口?
- 抽象类
- 描述抽象的概念,如:植物、动物、人类…
- 接口
- 描述某个特征,如:会飞、会游泳
- 抽象类
6、ACID是如何保证的?
- 原子性
- 由undolog日志保证,记录了需要回滚的日志信息,事务回滚时撤销已执行成功的sql
- 一致性
- 由其他3个特性保证,保证业务上的一致性
- 隔离性
- 由MVCC来保证,多版本并发控制
- 持久性
- redolog日志保证
7、BeanFactory和ApplicationContext的区别
-
相同点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uzHCNMic-1641393163399)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105213522423.png)]](https://images2.imgbox.com/ef/c1/crN7KMAc_o.png)
-
不同点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l9FtQ0Hv-1641393163400)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105213531852.png)]](https://images2.imgbox.com/a1/90/A5ygbJGW_o.png)
8、HashMap和HashTable的区别
-
相同点
- 都是Map接口的子类
-
不同点
- 前者
- 线程不安全
- 效率高
- 允许KV键值为空
- 数组默认大小16,扩容为2的指数倍
- 继承AbstractMap类
- 后者
- 线程安全
- 效率低
- 不允许KV键值为空
- 数组默认大小11,扩容为原来的两倍+1
- 继承Dictionary类
- 前者
9、HashMap有哪些线程安全的方式?
- 使用Collections.synchronizedMap();
- 使用了syn进行互斥同步
- 使用代理模式new新的类
- 使用ConcurrentHashMap
- 拆分了map,减少锁的粒度,减少锁冲突
10、MVCC解决的问题是什么?
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5nJJtr82-1641393163401)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105215919908.png)]](https://images2.imgbox.com/07/ed/LV72KDO9_o.png)
11、mybatis的优缺点
-
优点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZo1g7UV-1641393163402)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105221300586.png)]](https://images2.imgbox.com/c3/aa/PChMiihU_o.png)
-
缺点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jn8gSsgP-1641393163403)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105221308351.png)]](https://images2.imgbox.com/3c/97/tzskrSwK_o.png)
12、mybatis和hibernate的区别
-
相同点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5pSPZrBJ-1641393163404)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105221901050.png)]](https://images2.imgbox.com/51/03/7OPDG2m7_o.png)
-
不同点
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87e4qPNs-1641393163404)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105221951274.png)]](https://images2.imgbox.com/33/80/VX8yNyVA_o.png)
13、mybatis中#{}和${}的区别
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2k6YJwab-1641393163405)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105222424594.png)]](https://images2.imgbox.com/08/f6/UVkEj5Me_o.png)
14、MySql的隔离级别有哪些?
- 读未提交
- 读可提交
- 可重复读
- 串行化