1 Star 0 Fork 31

moyu3390 / Ebooks_1

forked from Java精选 / Ebooks 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
最新2022年Java基础面试题及附答案解析.md 11.06 KB
一键复制 编辑 原始数据 按行查看 历史

最新2022年Java基础面试题及附答案解析

全部面试题答案,更新日期:01月30日,直接下载吧!

下载链接:高清500+份面试题资料及电子书,累计 10000+ 页大厂面试题 PDF

Java 基础

题1:Java 中如何定义一个常量?

Java中定义常量的最常用方法之一是通过整数,其中整数变量是静态的。

public static int MONDAY = 0;
public static int TUESDAY = 1;
public static int WEDNESDAY = 2;
public static int THURSDAY = 3;

题2:Java 中 Files 类常用方法都有哪些?

Files.exists():检测文件路径是否存在。

Files.createFile():创建文件。

Files.createDirectory():创建文件夹。

Files.delete():删除一个文件或目录。

Files.copy():复制文件。

Files.move():移动文件。

Files.size():查看文件个数。

Files.read():读取文件。

Files.write():写入文件。

题3:Java 中什么是重载(Overload)?

重载(Overload):是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同

重载规则

1、被重载的方法必须改变参数列表(参数个数或类型不一样);

2、被重载的方法可以改变返回类型;

3、被重载的方法可以改变访问修饰符;

4、被重载的方法可以声明新的或更广的检查异常;

5、方法能够在同一个类中或者在一个子类中被重载;

6、无法以返回值类型作为重载函数的区分标准;

实例:

public class OverloadDemo {
	
	// 方法1 无参
	public int test() {
		System.out.println("公众号Java精选,3000+面试题!");
		return 1;
	}

	// 方法2 单一参数
	public void test(int a) {
		System.out.println("公众号Java精选,3000+面试题!!");
	}

	// 方法3 下面两个参数类型顺序不同
	public String test(long a, String s) {
		System.out.println(s);
		return "方法3返回->" + s;
	}

	//方法4
	public String test(String s, int a) {
		System.out.println(s);
		return "方法4返回->" + s;
	}

	public static void main(String[] args) {
		OverloadDemo od = new OverloadDemo();
		System.out.println(od.test());//方法1
		od.test(2);//方法2
		System.err.println(od.test(3l, "公众号Java精选,3000+面试题!"));//方法3
		System.err.println(od.test("公众号Java精选,3000+面试题!!!", 4));//方法4
	}
}

执行结果

公众号Java精选,3000+面试题!
1
公众号Java精选,3000+面试题!!
公众号Java精选,3000+面试题!
方法3返回->公众号Java精选,3000+面试题!
方法4返回->公众号Java精选,3000+面试题!!!
公众号Java精选,3000+面试题!!!

题4:子类继承父类时,父类构造方法何时调用?

实例化一个子类对象时会先执行其父类的构造函数,然后再执行子类的构造函数。

super()必须先被调用;如果子类构造方法中没有写super(),编译器会自动调用super()方法,即调用父类的默认无参构造方法,因此不可以父类中只定义了有参数的构造方法。

Java中如果一个类没有定义构造方法,编译器会默认插入一个无参数的构造方法;但是如果一个构造方法在父类中已定义,在这种情况,编译器是不会自动插入一个默认的无参构造方法。

题5:抽象类能使用 final 修饰吗?

abstract类为抽象类,即该类只关心子类具有的功能,而不是功能的具体实现。

抽象类不能实例化,其作用是为了被其他类继承,因此final关键字不能修饰抽象类。

抽象类是被用于继承的,final修饰代表不可修改、不可继承的。

题6:java.rmi.Naming 类扮演了什么样的角色?

java.rmi.Naming类用来存储和获取在远程对象注册表里面的远程对象的引用。

Naming类的每一个方法接收一个URL格式的String对象作为它的参数。

题7:Java 中可以一次 catch 多个异常吗?

Java中可以一次catch多个异常,JDK1.7版本以后,可以通过以下代码实现:

try {
    //.....
} catch ( IllegalArgumentException
 | SecurityException
 | IllegalAccessException
 |NoSuchFieldException exc) {
    //.....	 
}

题8:OpenJDK 和 SunJDK 有什么区别?

历史上的原因是OpenJDK是JDK的开放原始码版本,以GPL(General Public License)协议的形式放出(题主提到的open就是指的开源)。在JDK7的时候,OpenJDK已经作为JDK7的主干开发,SUN JDK7是在OpenJDK7的基础上发布的,其大部分原始码都相同,只有少部分原始码被替换掉。使用JRL(JavaResearch License,Java研究授权协议)发布。

至于OpenJDK6则更是有其复杂的一面,首先是OpenJDK6是JDK7的一个分支,并且尽量去除Java SE7的新特性,使其尽量的符合Java6的标准。

关于JDK和OpenJDK的区别,可以归纳为以下几点:

授权协议的不同: OpenJDK采用GPL V2协议放出,而SUN JDK则采用JRL放出。两者协议虽然都是开放源代码的,但是在使用上的不同在于GPL V2允许在商业上使用,而JRL只允许个人研究使用。

OpenJDK不包含Deployment(部署)功能:部署的功能包括:Browser Plugin、Java Web Start、以及Java控制面板,这些功能在OpenJDK中是找不到的。

OpenJDK源代码不完整: 这个很容易想到,在采用GPL协议的OpenJDK中,SUN JDK的一部分源代码因为产权的问题无法开放给OpenJDK使用,其中最主要的部份就是JMX中的可选元件SNMP部份的代码。因此这些不能开放的源代码 将它作成plug,以供OpenJDK编译时使用,你也可以选择不要使用plug。而Icedtea则为这些不完整的部分开发了相同功能的源代码 (OpenJDK6),促使OpenJDK更加完整。

部分源代码用开源代码替换: 由于产权的问题,很多产权不是SUN的源代码被替换成一些功能相同的开源代码,比如说字体栅格化引擎,使用Free Type代替。

OpenIDK只包含最精简的JDK: OpenJDK不包含其他的软件包,比如Rhino Java DB JAXP……,并且可以分离的软件包也都是尽量的分离,但是这大多数都是自由软件,你可以自己下载加入。

不能使用Java商标:这个很容易理解,在安装OpenJDK的机器上,输入“java -version”显示的是OpenJDK,但是如果是使用Icedtea补丁的OpenJDK,显示的是java。

题9:Java 类命名规则是什么?

类名和接口名:通常定义为由具有含义的单词组成,所有单词的首字母大写。

长度基本上没有限制。

但是不能使用Java关键字(例如,public或 class等)作为类名。

题10:Java 中 Request 和 Response 对象都有哪些区别?

Request和Response对象起到了服务器与客户机之间的信息传递作用。Request对象用于接收客户端浏览器提交的数据,而Response 对象的功能则是将服务器端的数据发送到客户端浏览器。

1、Request对象

QueryString:用以获取客户端附在url地址后的查询字符串中的信息。

stra=Request.QueryString ["strUserld"]

Form:用以获取客户端在FORM表单中所输入的信息。(表单的method属性值需要为POST)

stra=Request.Form["strUserld"]

Cookies:用以获取客户端的Cookie信息。

stra=Request.Cookies["strUserld"]

ServerVariables:用以获取客户端发出的HTTP请求信息中的头信息及服务器端环境变量信息。

stra=Request.ServerVariables["REMOTE_ADDR"]//返回客户端IP地址

ClientCertificate:用以获取客户端的身份验证信息

stra=Request.ClientCertificate["VALIDFORM"]//对于要求安全验证的网站,返回有效起始日期。

2、Response对象

Response对象用于动态响应客户端请示,控制发送给用户的信息,并将动态生成响应。Response对象提供了一个数据集合cookie,它用于在客户端写入cookie值。若指定的cookie不存在,则创建它。若存在,则将自动进行更新。结果返回给客户端浏览器。

语法格式:Response.Cookies(CookieName)[(key)|.attribute]=value。这里的CookiesName是指定的Cookie的名称,如果指定了Key,则该Cookie就是一个字典,Attribute属性包括Domain,Expires,HasKeys,Path,Secure。

response的方法:

Write:向客户端发送浏览器能够处理的各种数据,包括:html代码,脚本程序等。

Redirect:response.redirect("url")的作用是在服务器端重定向于另一个网页。

End:用来终止脚本程序。

Clear:要说到Clear方法,就必须提到response的Buffer属性,Buffer属性用来设置服务器端是否将页面先输出到缓冲区。语法为:

Response.Buffer=True/False

Flush:当Buffer的值为True时,Flush方法用于将缓冲区中的当前页面内容立刻输出到客户端。

题11:java-中为什么要定义一个没有参数的构造方法

题12:运行时异常与一般异常有何异同

题13:浅拷贝和深拷贝有什么区别

题14:java-中的关键字都有哪些

题15:java-中如何生成随机数

题16:什么是-java-事务

题17:java-中-jdbc-调用数据库有哪几步骤

题18:static-修饰变量代码块时何时执行执行几次

题19:了解过字节码的编译过程吗

题20:rmi体系结构的基本原则是什么

题21:rmi体系结构分哪几层

题22:java-中-while-和-do-while-有什么区别

题23:jdkjrejvm-之间有什么关系

题24:java中抛出-throwable-结构有哪几种类型

题25:switch-中能否使用-string-作为参数

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/moyu3390/ebooks_1.git
git@gitee.com:moyu3390/ebooks_1.git
moyu3390
ebooks_1
Ebooks_1
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891