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)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JYKTbdxP-1641393163396)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105211649280.png)]


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

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

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

  • 相同点

在这里插入图片描述

  • 不同点

    • 抽象类

      [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LoSVljVq-1641393163397)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105212132548.png)]

    • 接口

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M95pwAO5-1641393163398)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105212150487.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)]

  • 不同点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-l9FtQ0Hv-1641393163400)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105213531852.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)]


11、mybatis的优缺点

  • 优点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gZo1g7UV-1641393163402)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105221300586.png)]

  • 缺点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jn8gSsgP-1641393163403)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105221308351.png)]


12、mybatis和hibernate的区别

  • 相同点

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5pSPZrBJ-1641393163404)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105221901050.png)]

  • 不同点

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-87e4qPNs-1641393163404)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105221951274.png)]


13、mybatis中#{}和${}的区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2k6YJwab-1641393163405)(C:/Users/PePe/AppData/Roaming/Typora/typora-user-images/image-20220105222424594.png)]


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

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

15、

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>