2021年Java基础面试题整理
发布日期:2021-06-29 01:11:52 浏览次数:2 分类:技术文章

本文共 1786 字,大约阅读时间需要 5 分钟。

1.String类能否被继承?为什么?

答:不能,因为String类是被final修饰的类。final修饰的类不能被继承,final修饰的变量不能被修改。

 

2.简述Java反射机制和应用场景?

答:反射是Java的一种机制,可以让我们在运行时获取类的信息,比如它的属性、构造器、方法、注解等。

3 简述动态代理和静态代理?

答:

静态代理:由程序员或特定工具创建生成的代码,再对其编译,在程序运行之前,代理类的.class文件就已经存在了。静态代理通常只代理一个类。

动态代理:

在程序运行时,运用反射机制动态创建而成,动态代理是代理一个接口下的多个实现类,动态代理不知道代理什么东西,只有在运行时才知道。

4.Java中的sleep和wait的区别?

答:sleep是Thread的方法,wait是Object的方法。

sleep方法没有释放锁,而wait释放了锁。

wait, notify和notifyAll只能在同步控制方法或者同步控制块里面使用,而sleep在任何地方都可以使用。

sleep必须捕获异常,而wait、notify、notifyAll则不需要。

5 成员变量和局部变量的区别

答:

成员变量:

①成员变量定义在类中,在整个类中都可以被访问。

②成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。

③成员变量有默认初始化值。

局部变量:

①局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。

②局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。

③局部变量没有默认初始化值

6 hashcode和equals方法的联系

答:java规定:

如果两个对象的的hashCode()相等,那么他们的equals()不一定相等。

如果两个对象的equals()相等,那么他们的hashCode()必定相等。

7 什么是重写和重载

答:

重写是在子类存在方法与父类的方法的名字相同,而且参数的个数与类型一样,返回值也一样的方法,就称为重写(Override)。

重载是一个类中定义了多个方法名相同,而他们的参数的数量不同或数量相同而类型和次序不同,则称为方法的重载(Overload)

重载是一个类的多态性表现,而重写是子类与父类的一种多态性表现

8 什么是公平锁?什么是非公平锁?

答:公平锁:当前获得锁的线程释放锁后,其他等待中的线程会按照来的顺序执行,不会造成锁的竞争。

非公平锁:当前获得锁的线程释放锁后,其他所有等待中的线程都会参与竞争。

9 数据库的三范式

答:

第一范式:属性(字段)的 原子性约束,要求属性具有原子性,不可再分隔;

第二范式:记录的唯一性约束,要求记录有唯一标识,每条记录需要有一个属性作为实体的唯一标识。

第三范式:字段冗余性约束,要求记录有唯一标识,每条记录要求有一条属性来作为实体的唯一标识。

10 简述java中的io、nio、bio

答:io:读写操作。

bio:同步堵塞。

nio:同步非阻塞。

aio:异步非阻塞。

11 String str = new String("abc");new了几个对象。

答:两个或者一个

一个:如果常量池里已经有了"abc"这个字符串,那虚拟机就只会在堆内存中new一个String,并将常量池中的"abc"的地址指向你刚刚new的Sting对象。

两个:如果常量池里面没有“abc”这个字符串,那虚拟机就会在堆内存中new出一个String对象,还会在常量池中new一个abc字符串对象;

12 String和StringBuilder、StringBuffer的区别?

答:

String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,这样不仅效率低下,而且大量浪费有限的内存空间,所以经常改变内容的字符串最好不要用 String

StringBuffer 字符串变量(底层使用synchronized修饰线程安全)

StringBuilder 字符串变量(非线程安全)

综合:StringBuilder > StringBuffer > String

如需要更多java面试资料可私信“面试”给小编即可获取哦

转载地址:https://blog.csdn.net/yoyo31/article/details/117668514 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:转发微博Qzone微信从入门到放弃?零基础学java并不难,小白快速入门秘籍
下一篇:Java面试,我应该准备哪些知识呢?

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月25日 06时33分56秒