面试题知识点全纪录---基础概念与常识

面试题知识点全纪录—基础概念与常识

注意:该博客仅是本人对掌握知识的测试,具体内容请移步guide哥网站!!!

https://snailclimb.gitee.io/javaguide
链接


基础概念与常识


  1. Java 语言有哪些特点?
    面向对象,简单易学,平台无关,多线程,可靠性,安全性,编译与解释并存。
  2. JVM vs JDK vs JRE?
  3. JVM?
    java虚拟机,运行字节码文件,针对不同系统有特定实现。
  4. JDK 和 JRE?
    java编译工具和java运行环境
  5. 为什么说 Java 语言“编译与解释并存”?
    .java --> .class --> 机器码、热点代码有JIT编译器
  6. Oracle JDK 和 OpenJDK 的对比?
    oracleJDK基于openJDK7构建
  7. Java 和 C++的区别?
    都是面向对象,(都支持封装继承多态)java不提供指针访问内存,更安全;java单继承,c++多继承;java垃圾自动回收,c++手写;
  8. import java 和 javax 有什么区别?
    没什么区别

基本语法


  1. 字符型常量和字符串常量的区别?
    字符常量单引号,字符串常量双引号;字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置);字符常量只占 2 个字节; 字符串常量占若干个字节 (注意: char 在 Java 中占两个字节),
  2. 注释
  3. 标识符和关键字的区别是什么?
  4. Java 中有哪些常见的关键字?
  5. 自增自减运算符
  6. continue、break、和 return 的区别是什么?
  7. Java 泛型了解么?什么是类型擦除?介绍一下常用的通配符?
    泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。

Java 的泛型是伪泛型,这是因为 Java 在编译期间,所有的泛型信息都会被擦掉,这也就是通常所说类型擦除 。
8. ==和 equals 的区别?
?表示不确定的 java 类型
T (type) 表示具体的一个 java 类型
K V (key value) 分别代表 java 键值中的 Key Value
E (element) 代表 Element
9. hashCode()与 equals()?
对于基本数据类型来说,==比较的是值。对于引用数据类型来说,==比较的是对象的内存地址。

因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是值,只是引用类型变量存的值是对象的地址。
equals() 作用不能用于判断基本数据类型的变量,只能用来判断两个对象是否相等。equals()方法存在于Object类中,而Object类是所有类的直接或间接父类。

如果两个对象相等,则 hashcode 一定也是相同的。两个对象相等,对两个对象分别调用 equals 方法都返回 true。但是,两个对象有相同的 hashcode 值,它们也不一定是相等的 。因此,equals 方法被覆盖过,则 hashCode 方法也必须被覆盖。


基本数据类型


  1. Java 中的几种基本数据类型是什么?对应的包装类型是什么?各自占用多少字节呢?
    byte,short,int,long,float,double,char,boolean
    基本类型 位数 字节 默认值
    int 32 4 0
    short 16 2 0
    long 64 8 0L
    byte 8 1 0
    char 16 2 ‘u0000’
    float 32 4 0f
    double 64 8 0d
    boolean 1 false
    注意:
Java 里使用 long 类型的数据一定要在数值后面加上 L,否则将作为整型解析。
char a = 'h'char :单引号,String a = "hello" :双引号。
这八种基本类型都有对应的包装类分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean 。

包装类型不赋值就是 Null ,而基本类型有默认值且不是 Null。

另外,这个问题建议还可以先从 JVM 层面来分析。

基本数据类型直接存放在 Java 虚拟机栈中的局部变量表中,而包装类型属于对象类型,我们知道对象实例都存在于堆中。相比于对象类型, 基本数据类型占用的空间非常小。
  1. 自动装箱与拆箱
  2. 8 种基本类型的包装类和常量池

方法(函数)


  1. 什么是方法的返回值?

  2. 方法有哪几种类型?

  3. 在一个静态方法内调用一个非静态成员为什么是非法的?

  4. 静态方法和实例方法有何不同?

  5. 为什么 Java 中只有值传递?

  6. 重载和重写的区别

  7. 重载

  8. 重写

  9. 在这里插入图片描述

  10. 深拷贝 vs 浅拷贝


Java 面向对象


  1. 面向对象和面向过程的区别

  2. 成员变量与局部变量的区别有哪些?

  3. 创建一个对象用什么运算符?对象实体与对象引用有何不同?

  4. 对象的相等与指向他们的引用相等,两者有什么不同?

  5. 一个类的构造方法的作用是什么? 若一个类没有声明构造方法,该程序能正确执行吗? 为什么?

  6. 构造方法有哪些特点?是否可被 override?

  7. 面向对象三大特征?
    封装 继承 多态

  8. String StringBuffer 和 StringBuilder 的区别是什么? String 为什么是不可变的?

  9. Object 类的常见方法总结

  10. 反射

  11. 何为反射?

  12. 反射机制优缺点
    更加灵活,但是耗费内存

  13. 反射的应用场景
    java动态代理;注解


异常


  1. Java 异常类层次结构图
  2. Throwable 类常用方法
  3. try-catch-finally
  4. 使用 try-with-resources 来代替try-catch-finally

I/O 流


  1. 什么是序列化?什么是反序列化?
    序列化:数据结构->二进制流
    反序列化:二进制流->数据结构

  2. Java 序列化中如果有些字段不想进行序列化,怎么办?
    transient关键字修饰;

  3. 获取用键盘输入常用的两种方法

    方法 1:通过 Scanner

    Scanner input = new Scanner(System.in);
    String s = input.nextLine();
    input.close();
    Copy to clipboardErrorCopied

    方法 2:通过 BufferedReader

    BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
    String s = input.readLine();

  4. Java 中 IO 流分为几种?

    按照流的流向分,可以分为输入流和输出流;
    按照操作单元划分,可以划分为字节流和字符流;
    按照流的角色划分为节点流和处理流。

  5. 既然有了字节流,为什么还要有字符流?

    字符流是由 Java 虚拟机将字节转换得到的,问题就出在这个过程还算是非常耗时,并且,如果我们不知道编码类型就很容易出现乱码问题。所以, I/O 流就干脆提供了一个直接操作字符的接口,方便我们平时对字符进行流操作。如果音频文件、图片等媒体文件用字节流比较好,如果涉及到字符的话使用字符流比较好。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值