java基础

  1. JDK 和 JRE 区别

    • JDK: Java Development KLit, Java 开发工具包, 包含开发环境和运行环境
      • 编译器
      • 调试器
      • 其他工具
      • JRE
    • JRE: Java Runtime Environment, Jav 运行时环境
      • JVM
      • API
      • 支持文件
  2. Java11后没有 JRE 怎么办?服务器安装什么?

  3. == 和 equals 区别

    • == 比较引用是否相等(基本类型比较值是否相等)
    • equals 为 Object 的方法, 默认比较引用是否相等, 可重写
  4. 常用类的 equals

    • 基本类型包装类: 重写为比较值
    • String 重写了, 必须是 String 才可比较, 比较字符序列是否相等
    • StringBuilder 和 StringBuffer 都没有重写
  5. hashCode 相同, equals 一定为 true?

    • equals 等则 hashCode 一定要等.
    • hashCode 等, equals 不一定等
  6. final 的作用

    • 类: 不可被继承
    • 方法: 不可被重写(可修饰静态与实例)
    • 字段: 必须赋值且只可赋值一次(可修饰静态与实例)
  7. String 是基本数据类型吗

    • 不是, 是引用类型
    • 8种基本数据类型: char、byte、short、int、long、float、double、boolean
  8. String、StringBuffer、StringBuilder 区别

    • String 不可变, 其他两者均可变
    • String 和 StringBuffer 线程安全, StringBuilder 非线程安全
    • StringBuilder 效率最高
  9. StringBuffer 和 String 的线程安全有什么区别

    • String 是因为不可变而导致的线程安全
    • StringBuffer 是使用 synchronized 关键字保证线程安全
  10. 抽象类

    • 与普通类最大的区别就是不能实例化
    • 可包含抽象方法, 也可不含
    • 不能使用 final 修饰, 因为抽象类必须要被继承从而被实现
  11. 接口的进化

    • JDK7: 接口中的所有方法都是抽象方法
    • JDK8: 新增默认方法 default 关键字、类方法(均public)(JDK8及前接口中还仅能有public)
    • JDK9: 新增私有方法(私有实例和私有静态)
      --- 但还是不能有 protected 的
      --- protected 是能修饰 static 的(无论是方法还是字段)
      --- 注意 JDK8 的接口是能有 main 方法且可执行的
  12. 接口与抽象类区别

    • 共性
      • 抽象方法都是对共性行为的抽象
      • 不能进行实例化
    • 区别
      • 单继承与多继承
      • 抽象类可以有实例变量和静态变量, 接口只能有public static final 【字段】
      • 接口不能有普通方法 【方法】
      • 接口不能有初始化 【构造函数、静态初始化块、实例初始化块】
  13. 接口优点

    • 抽象类用于实现通用逻辑, 然后将非通用逻辑交给子类实现, 模板方法模式
    • 接口多继承
    • 对外提供规则, 降低耦合性(规则定义好, 模块化开发), 体现了行为与规范分离的原则
  14. 重载 Overload

    • 一个类中可见的方法中, 方法名相同, 参数列表不同. 其他可同可不同
    • 也即静态和示例也可重载
  15. 重写 Override

    • 子类对父类方法重写, 返回值和形参列表都必须相同

    • 访问级别必须>=父类, 声明抛出的首检异常必须<=父类(非受检不限制), 返回值必须>=父类

    • static 不能重写, 但可再次声明(父子类不同, 静态绑定)

    • private 不能重写, 但可被覆盖(private是静态绑定吗)

    • 构造函数不能被重写

    • 调用父类被重写的方法, 可使用 super

  16. 动态绑定和静态绑定

  17. BIO、NIO、AIO

    • BIO: Block IO, 同步阻塞式IO
    • NIO: New IO, 同步非阻塞IO, 通过 Channel 通讯, 实现了多路复用
    • AIO: Asynchronous IO, NIO2, 异步非阻塞IO, 异步IO的操作给予事件和回调机制
    • 问题: 同步异步?阻塞非阻塞?
  18. IO流

    • 功能分: 输入输出流
    • 类型分: 字节字符流
  19. hashCode 和 equals 的重写

    • String 的 hashCode
  20. 面向对象基本特征

    • 封装
    • 继承
    • 多态
    • 举例及理解
  21. 面向对象优缺点

  22. 设计模式七大基本原则 SOLID

    • 单一职责原则 Single Responsibility Principle,SRP
    • 开闭原则 Open Closed Principle,OCP
    • 里氏替换原则 Liskov Substitution Principle
    • 依赖倒置原则 Dependency Inversion Principle
    • 接口隔离原则 Interface Segregation Principle
    • 迪米特法则
    • 组合/聚合复用原则

    最常用和理解的

    • 单一职责:类、方法的功能职责要单一,降低耦合,另一方面可简单理解为就是要短小精悍,这个基本可看《代码整洁之道》
    • 开闭原则:代码需要能很容易的添加新功能,而不必修改原有代码,有点插件思想的意思。可扩展性
    • 里氏替换:程序里的对象都能被其子类替换而不影响其正常工作。
    • 接口隔离:多个专用接口比一个通用接口好。一个类不要去实现用不到的接口。
    • 依赖倒置:高层次模块不应该依赖低层次模块,应该都依赖于抽象;抽象不应依赖于细节,细节依赖于抽象。降低依赖
    • https://developer.aliyun.com/article/226577
    • http://www.imooc.com/article/51098
    • https://www.cnblogs.com/sunflower627/p/4718702.html
posted @ 2022-04-07 18:03  YangDanMua  阅读(18)  评论(0编辑  收藏  举报