欢迎进入皮皮猫的博客

本文是皮皮猫的博客,分享Java面试常见问题,包括JDK与JRE的区别、反射机制、创建对象的方式、序列化概念及用途、JDBC数据库连接步骤,同时涵盖环境部署知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

欢迎进入皮皮猫的博客

针对很多学Java的小伙伴来说,面试总会遇到很多问题,那么我就凭着以前的经验简单说一下面试官都会问什么吧! -------北京广深面试风格,

Java基础面试题

1.JDK 和 JRE 有什么区别?

	*JDK:Java Development Kit 的简称,Java 开发工具包,提供了 Java 的开发环境和运行环境。
	*JRE:Java Runtime Environment 的简称,Java 运行环境,为 Java 的运行提供了所需环境。
	*具体来说 JDK 其实包含了 JRE,同时还包含了编译 Java 源码的编译器 Javac,还包含了很多 
    *Java 程序调试和分析的工具。简单来说:如果你需要运行 Java 程序,只需安装 JRE 就可以了,如果你需要编写 Java 程序,需要安装 JDK。

2.== 和的equals的区别?

	基本类型:比较的是值是否相同。
	引用类型:比较的是引用是否相同。
	equals 的作用:比较的都是值是否相同。

3.final 在 Java 中有什么作用?

	*final 修饰的类叫最终类,该类不能被继承。
	*final 修饰的方法不能被重写。
	*final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

4.String 类的常用方法都有那些?

	*indexOf():返回指定字符的索引。
	*charAt():返回指定索引处的字符。
	*replace():字符串替换。
	*trim():去除字符串两端空白。
	*split():分割字符串,返回一个分割后的字符串数组。
	*getBytes():返回字符串的 byte 类型数组。
	*length():返回字符串长度。
	*toLowerCase():将字符串转成小写字母。
	*toUpperCase():将字符串转成大写字符。
	*substring():截取字符串。
	*equals():字符串比较。

5.接口和抽象类有什么区别?

	*默认方法实现:抽象类可以有默认的方法实现;接口不能有默认的方法实现。
	*实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。
	*构造函数:抽象类可以有构造函数;接口不能有。
	*main 方法:抽象类可以有 main 方法,并且我们能运行它;接口不能有 main 方法。
	*实现数量:类可以实现很多个接口;但是只能继承一个抽象类。
	*访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的方法可以是任意访问修饰符。

6.List、Set、Map 之间的区别是什么?

List、Set、Map 的区别主要体现在两个方面:元素是否有序、是否允许元素重复。
三者之间的区别,如下表:
在这里插入图片描述
7. HashMap 和 Hashtable 有什么区别?

	*存储:HashMap 运行 key 和 value 为 null,而 Hashtable 不允许。
	*线程安全:Hashtable 是线程安全的,而 HashMap 是非线程安全的。
	*推荐使用:在 Hashtable 的类注释可以看到,Hashtable 是保留类不建议使用,
	推荐在单线程环境下使用 HashMap 替代,如果需要多线程使用则用 ConcurrentHashMap 替代。

8.ArrayList 和 LinkedList 的区别是什么?

	*数据结构实现:ArrayList 是动态数组的数据结构实现,而 LinkedList 是双向链表的数据结构实现。
	*随机访问效率:ArrayList 比 LinkedList 在随机访问的时候效率要高,因为 LinkedList 是线性的数据存储方式,所以需要移动指针从前往后依次查找。
	*增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为 ArrayList 增删操作要影响数组内的其他数据的下标。
	综合来说,在需要频繁读取集合中的元素时,更推荐使用 ArrayList,而在插入和删除操作较多时,更推荐使用 LinkedList。

9.什么是反射?

反射是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,
都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。

10.什么是 Java 序列化?什么情况下需要序列化?

Java 序列化是为了保存各种对象在内存中的状态,并且可以把保存的对象状态再读出来。
以下情况需要使用 Java 序列化:
*想把的内存中的对象状态保存到一个文件中或者数据库中时候;
*想用套接字在网络上传送对象的时候;
*想通过RMI(远程方法调用)传输对象的时候。

数据库方面

Linux方面

Spring全家桶

自己总结:

java的反射是什么?

就是程序运行时能够获取自身的信息,只要给定类的名字,就可以通过反射机制来获取所有信息

官方:在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法的功能就称为java语言的反射机制。通俗点讲,通过反射,该类对我们来说是完全透明的,想要获取任何东西都可以。

如何创建一个对象,有哪几种方式?

1.使用new关键字:
2.使用Clone的方法:无论何时我们调用一个对象的clone方法,JVM就会创建一个新的对象,将前面的对象的内容全部拷贝进去
3.使用反序列化:当我们序列化和反序列化一个对象,JVM会给我们创建一个单独的对象

序列化:

1.实现序列化:

1)让类实现Serializable接口,该接口是一个标志性接口,标注该类对象是可被序列

2)然后使用一个输出流来构造一个对象输出流并通过writeObect(Obejct)方法就可以将实现对象写出

3)如果需要反序列化,则可以用一个输入流建立对象输入流,然后通过readObeject方法从流中读取对象

2.作用:

1)序列化就是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化,可以对流化后的对象进行读写操作,也可以将流化后的对象传输与网络之间;

2)为了解决对象流读写操作时可能引发的问题(如果不进行序列化,可能会存在数据乱序的问题)

3)序列化除了能够实现对象的持久化之外,还能够用于对象的深度克隆

request.getparameter(String key);
返回由前台传过来的一个指定的参数的属性值;

request.getAttribute(String name);
返回由name指定的属性值

getAttribute() 方法返回指定属性名的属性值

JDBC连接数据库步骤

确定连接的数据库类型《mysql,oracle,db2,moangdb,sqlservlet》

下载数据库的驱动(http://mvnrepository.org),并把jar包添加到项目中

把数据库连接的驱动类加载到java虚拟机中

通过DriverManager类中getConnection方法获取到对应数据库连接对象

通过连接对象创建编译对象

通过编译对象想sql发出指令

接受并处理返回的结果

**

环境部署

**

pro环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。

pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。

test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定。

dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值