Day499&500.马士兵22春招面试题① -面经

Posted 阿昌喜欢吃黄桃

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Day499&500.马士兵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自旋锁保证原子性

容器


4、JDK1.8的新特性有哪些?

  • 接口的默认方法
  • Lambda表达式
  • Lambda作用域
  • 方法/构造引用
  • 函数式接口
  • 访问局部变量
  • 访问对象字段与静态变量
  • Stream流式编程
  • 多重注解

5、Java接口和抽象类的区别

  • 相同点

  • 不同点

    • 抽象类

    • 接口

  • 什么时候使用抽象类/接口?
    • 抽象类
      • 描述抽象的概念,如:植物、动物、人类…
    • 接口
      • 描述某个特征,如:会飞、会游泳

6、ACID是如何保证的?

  • 原子性
    • 由undolog日志保证,记录了需要回滚的日志信息,事务回滚时撤销已执行成功的sql
  • 一致性
    • 由其他3个特性保证,保证业务上的一致性
  • 隔离性
    • 由MVCC来保证,多版本并发控制
  • 持久性
    • redolog日志保证

7、BeanFactory和ApplicationContext的区别

  • 相同点

  • 不同点


8、HashMap和HashTable的区别

  • 相同点
    • 都是Map接口的子类
  • 不同点
    • 前者
      • 线程不安全
      • 效率高
      • 允许KV键值为空
      • 数组默认大小16,扩容为2的指数倍
      • 继承AbstractMap类
    • 后者
      • 线程安全
      • 效率低
      • 不允许KV键值为空
      • 数组默认大小11,扩容为原来的两倍+1
      • 继承Dictionary类

9、HashMap有哪些线程安全的方式?

  • 使用Collections.synchronizedMap();
    • 使用了syn进行互斥同步
    • 使用代理模式new新的类
  • 使用ConcurrentHashMap
    • 拆分了map,减少锁的粒度,减少锁冲突

10、MVCC解决的问题是什么?


11、mybatis的优缺点

  • 优点

  • 缺点


12、mybatis和hibernate的区别

  • 相同点

  • 不同点


13、mybatis中#和$的区别


14、mysql的隔离级别有哪些?

  • 读未提交
  • 读可提交
  • 可重复读
  • 串行化

15、MySql复制原理

主机写入数据会记录到BinLog中,从机会有一个IO线程去拉取主机的Binlog日志,并写入RelayLog日志中,并由一个SQL线程进行读取写入到从机的库中


16、MySql聚簇和非聚簇索引的区别

Mysql的索引是存储在磁盘中的,

聚簇和非聚簇索引的区别主要是判断数据和索引是否存放在一起


17、MySql索引结构的优劣势


18、MySql的锁有哪些类型?


19、MySql为什么需要主从同步?

  • 读写分离
  • 主备,数据预备
  • 提高整体性能


20、MySql执行计划怎么看?

Explain


21、spring、springmvc、springboot的区别是什么?

spring:底层框架

mvc:web框架

boot:整合上面的脚手架


22、springmvc工作流程

笔记


23、SpringMVC九大组件是什么?


24、Spring的核心是什么?


25、Spring事务传播机制是什么


26、Spring中单例Bean是线程安全的吗?

他是,但他又不是

线程处理本身就是读取到自身的线程内存中处理,是安全。

但如果处理的数据是有状态的,那不同线程修改的值之间的可见性不能保证,所以是不安全的。

就需要根据实际情况去进行判断和修改


27、Spring中使用了哪些设计模式以及应用场景


28、Spring事务的隔离级别有哪些?

数据库的隔离级别支持一毛一样


29、Spring事务的实现原理是什么


30、Spring事务失效的情况有哪些?


31、MyIsam和Innodb的区别

关注:是行锁/表锁,读写性能怎么样,是否支持事务/外键,存储的所有和数据是否是一起的


32、MySql索引的类型且对数据库的影响是什么?


33、Spring中Bean生命周期

9、通过getBean()方法获取对象


34、怎么处理MySql慢查询?

  • 改写sql
  • 多命中索引
  • 开启慢日志
  • 查看执行计划
  • 拆分表
  • 拆分查询数据量


35、

以上是关于Day499&500.马士兵22春招面试题① -面经的主要内容,如果未能解决你的问题,请参考以下文章

Java-马士兵动态代理模式

快速上手SpringCloud微服务系统架构+常用中间件服务

Java面试宝典每日3题:day22

Vue面试题超级干货春招必备(附答案)

java高并发编程

2023春招面试题:Redis数据库面试题整理