面试题汇总一 Java 语言基础篇

前言

题目汇总来源 史上最全各类面试题汇总,没有之一,不接受反驳

春招的进度有些太快了,不知道现在开始学还来不来得及。跟着上面那篇公众号文章里的问题学的,顺便做个记录。

 


目录

前言

Java基础知识

面向对象三大特征

面向对象六大原则

Java可见性修饰符

Java设计模式

Java中==和equals和hashCode的区别 

Object类的equal和hashCode方法重写,为什么?

Java基本类型及其占用空间

int与integer的区别

类变量初始化顺序

抽象类的意义

接口和抽象类的区别

能否创建一个包含可变对象的不可变对象?

谈谈对java多态的理解

Java中String的了解

String、StringBuffer、StringBuilder区别

你对String对象的intern()熟悉么?

String为什么要设计成不可变的?

泛型中extends和super的区别

进程和线程的区别

final,finally,finalize的区别

序列化的方式

如何将一个Java对象序列化到文件里?

String 转换成 integer的方式及原理

静态属性和静态方法是否可以被继承?是否可以被重写?以及原因?

成员内部类、静态内部类、局部内部类和匿名内部类的理解,以及项目中的应用

讲一下常见编码方式?

如何格式化日期?

Java的异常体系

什么是异常链

throw和throws的区别

说说你对Java反射的理解

反射的原理,反射创建类实例的三种方式是什么

反射中ClassLoader.loadClass和class.ForName区别

java当中的四种引用

深拷贝和浅拷贝的区别是什么?

什么是编译期常量?使用它有什么风险?

a=a+b与a+=b有什么区别吗?

静态代理和动态代理的区别,什么场景使用?

Java中实现多态的机制是什么?

说说你对Java注解的理解

说说你对依赖注入的理解

说一下泛型原理,并举例说明


 

Java基础知识

面向对象三大特征

面象对象的三大特征

  • 继承:子类继承父类的特征和行为
  • 封装:隐藏内部实现,暴露公共行为
  • 多态:不同对象对一个动作有不同表现

 

面向对象六大原则

设计模式:面向对象设计的六大原则 (绝对详细)

  • 单一职责原则 SRP:一个类只担负一个职责
  • 开闭原则 OCP:类对扩展开放,对修改关闭
  • 里式替换原则 LSP:引用基类的地方必须能透明地使用其子类对象
  • 依赖倒置原则 DIP:依赖抽象接口,不依赖具体实现
  • 接口隔离原则 ISP:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上
  • 迪米特原则 LOD:低耦合,高内聚

 

Java可见性修饰符

Java 修饰符

public > protected > default > private

 

Java设计模式

设计模式 | 菜鸟教程

Java之美[从菜鸟到高手演变]之设计模式

Java之美[从菜鸟到高手演变]之设计模式二

Java之美[从菜鸟到高手演变]之设计模式三

Java之美[从菜鸟到高手演变]之设计模式四

 

Java中==和equals和hashCode的区别 

java中equals,hashcode和==的区别

1. 基本数据类型用==进行比较。

2. 引用使用==判断是否指向同一个对象,也可覆盖equals方法实现自定义判断。

3. hashCode生成hash码。同一对象一定生成相同的hash码

4. hashCode和equals的关系

  • 同一对象上多次调用hashCode()方法,总是返回相同的整型值。

  • 如果a.equals(b),则一定有a.hashCode() 一定等于 b.hashCode()。 

  • 如果!a.equals(b),则a.hashCode() 不一定不等于 b.hashCode()。此时如果a.hashCode() 总是不等于 b.hashCode(),会提高hashtables的性能。

  • a.hashCode() == b.hashCode() 则 a.equals(b)可真可假

  • a.hashCode() != b.hashCode() 则 a.equals(b)为假。 

 

Object类的equal和hashCode方法重写,为什么?

  1. 如果两个对象equals,Java运行时环境会认为他们的hashcode一定相等。 
  2. 如果两个对象不equals,他们的hashcode有可能相等。 
  3. 如果两个对象hashcode相等,他们不一定equals。 
  4. 如果两个对象hashcode不相等,他们一定不equals。 
  • 若重写 equals(Object obj) 方法,有必要重写 hashcode() 方法,确保通过 equals(Object obj) 方法判断结果为true的两个对象具备相等的 hashcode() 返回值。说得简单点就是:“如果两个对象相同,那么他们的 hashcode 应该相等”。不过请注意:这个只是规范,如果你非要写一个类让 equals(Object obj) 返回 true 而 hashcode() 返回两个不相等的值,编译和运行都是不会报错的。不过这样违反了Java规范,程序也就埋下了BUG。 
  •  一个很常见的错误根源在于没有覆盖 hashCode 方法。在每个覆盖了 equals 方法的类中,也必须覆盖 hashCode 方法。如果不这样做的话,就会违反 Object.hashCode 的通用约定,从而导致该类无法结合所有基于散列的集合一起正常运作,这样的集合包括 HashMap、HashSet 和 Hashtable。

 

Java基本类型及其占用空间

byte 1字节
short 2字节
char 2字节
int 4字节
float 4字节
boolean 4字节
long 8字节
double 8字节

 

int与integer的区别

java面试题之int和Integer的区别

1. Integer是int的包装类,int则是java的一种基本数据类型 

2. Integer变量必须实例化后才能使用,而int变量不需要 

3. Integer实际是对象的引用,当new一个Integer时,实际上是生成一个指针指向此对象;而int则是直接存储数据值 

4. Integer的默认值是null,int的默认值是0

 

类变量初始化顺序

  1. 父类显式静态初始化代码块
  2. 子类显式静态初始化代码块
  3. 父类非静态实例初始化代码块
  4. 父类构造函数
  5. 子类非静态实例初始化代码块
  6. 子类构造函数

 

抽象类的意义

一个类中如果包含抽象方法,这个类应该用abstract关键字声明为抽象类。

意义:

1. 为子类提供一个公共的类型;

2. 封装子类中重复内容(成员变量和方法);

3. 定义有抽象方法,子类虽然有不同的实现,但该方法的定义是一致的。

 

接口和抽象类的区别

深入理解Java的接口和抽象类

抽象类:

包含抽象方法的类要用abstract修饰(虽然没有抽象方法也可以)。

和普通类一样可以有普通成员变量和方法。

接口:

接口中所有的方法不能有具体的实现。

变量会被隐式地指定为public static final变量

 

能否创建一个包含可变对象的不可变对象?

原公众号放答案了,自己看吧?

Java面试题(二):你真的懂这几道题了吗?

 

谈谈对java多态的理解

java提高篇(四)-----理解java的三大特性之多态

JAVA重写和重载的区别

概念:

同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性。

父类引用指向子类对象,可以提高代码的灵活性和可扩展性。

实现条件:

继承、重写、向上转型。

实现形式:

继承和接口。

重载规则:必须具有不同的参数列表; 可以有不同的返回类型;可以有不同的访问修饰符;可以抛出不同的异常。

重写规则:参数列表必须完全相同;返回类型必须相同;访问修饰符的限制一定要大于等于被重写方法的访问修饰符;重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。

 

Java中String的了解

  • 3
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值