1 Star 0 Fork 31

霍月龙 / Ebooks

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

2021年Java基础面试题大汇总附答案

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

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

Java 基础

题1:Java 中 final关键字有哪些用法?

Java代码中被final修饰的类不可以被继承。

Java代码中被final修饰的方法不可以被重写。

Java代码中被final修饰的变量不可以被改变,如果修饰引用类型,那么表示引用类型不可变,引用类型指向的内容可变。

Java代码中被final修饰的方法,JVM会尝试将其内联,以提高运行效率。

Java代码中被final修饰的常量,在编译阶段会存入常量池中。

题2:Object 中 equals() 和 hashcode() 有什么联系?

Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象的地址是否相等(可以理解成是否是同一个对象),地址相等则认为是对象相等,hashCode()方法用于计算对象的哈希码。equals()和hashCode()都不是final方法,都可以被重写(overwrite)。

hashCode()方法是为对象产生整型的hash值,用作对象的唯一标识。

hashCode()方法常用于基于hash的集合类,如Hashtable、HashMap等,根据Java规范使用equal()方法来判断两个相等的对象,必须具有相同的hashcode。

将对象放入到集合中时,首先要判断放入对象的hashcode是否已经存在,不存在则直接放入集合。

如果hashcode相等,然后通过equal()方法判断要放入对象与集合中的其他对象是否相等,使用equal()判断不相等,则直接将该元素放入集合中,反之不放入集合中。

题3:Java 中标识符有哪些命名规则?

标识符用作给变量、类和方法命名。

标识符以由大小写字母、数字、下划线(_)和美元符号($)组成,但是不能以数字开头。

大小写敏感

不能与Java语言的关键字重名

不能和Java类库的类名重名

不能有空格、@、#、+、-、/ 等符号

长度无限制

应该使用有意义的名称,达到见名知意的目的

不可以是true和false

题4:String 类的常用方法都有哪些?

String 类型常用方法有很多,见表格内容:

返回类型 方法名 功能说明
int length() 得到字符串的字符个数
byte[] getByte() 将字符串转换成字节数组
char[] toCharArray() 将字符串转换成字符数组
String split(String) 将字符串按照指定内容劈开
boolean equals() 判断两个字符串的内容是否相同,可以重新equals
boolean equalsIgnoreCase(String) 忽略太小写比较两个字符串的内容是否相同
boolean contains(String) 判断字符串里面是否包含指定的内容
boolean startsWith(String) 判断字符串是否以指定的内容开头
boolean endsWith(String) 判断字符串是否以指定的内容结尾
String toUpperCase() 将字符串全部转换成大写
String toLowerCase() 将字符串全部转换成小写
String replace(String,String) 将某个内容全部替换成指定内容
String replaceAll(String,String) 将某个内容全部替换成指定内容,支持正则
String repalceFirst(String,String) 将第一次出现的某个内容替换成指定的内容
String substring(int) 从指定下标开始一直截取到字符串的最后
String substring(int,int) 从下标x截取到下标y-1对应的元素
String trim() 去除字符串的前后空格
char charAt(int) 得到指定下标位置对应的字符
int indexOf(String) 得到指定内容第一次出现的下标
int lastIndexOf(String) 得到指定内容最后一次出现的下标

还包括valueOf()方法,由基本数据型态转换成String:String类别中已经提供了将基本数据型态转换成String的static方法 ,也就是String.valueOf()这个参数多载的方法,有以下几种:

1)String.valueOf(boolean b): 将boolean变量b转换成字符串

2)String.valueOf(char c): 将char变量c转换成字符串

3)String.valueOf(char[] data): 将char数组data转换成字符串

4)String.valueOf(char[] data, int offset, int count): 将char数组data中由data[offset]开始取count个元素转换成字符串

5)String.valueOf(double d): 将double变量d转换成字符串

6)String.valueOf(float f): 将float变量f转换成字符串

7)String.valueOf(int i): 将int变量i转换成字符串

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

异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误。

java编译器要求方法必须声明抛出可能发生的非运行时异常,但是并不要求必须声明抛出未被捕获的运行时异常。

题6: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。

题7: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方法用于将缓冲区中的当前页面内容立刻输出到客户端。

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

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

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

题9:RMI中的远程接口(Remote Interface)扮演了什么样的角色?

远程接口用来标识哪些方法是可以被非本地虚拟机调用的接口。

远程对象必须要直接或者是间接实现远程接口。

实现了远程接口的类应该声明被实现的远程接口,给每一个远程对象定义构造函数,给所有远程接口的方法提供实现。

题10:Java 中 Integer a= 128 与 Integer b = 128 相等吗?

Java中Integer a=128与Integer b=128是不相等。

Integer a= 127;
Integer b= 127;
Integer c= 128;
Integer d= 128;
System.out.println(a==b); //返回true;
System.out.println(c==d); //返回false;
System.out.println(a.equals(b)); //返回true;
System.out.println(c.equals(d)); //返回true;

引用类型中==是比较的对象内存地址;而基本数据类型中==是比较的值。

IntegerCache.low默认是-128;IntegerCache.high默认是127。

如果Integer类型的值是-128到127之间,那么自动装箱时不会new新的Integer对象,而是直接引用常量池中的Integer对象,因此超过范围c==d的结果是false。

题11:为什么-hashmap-负载因子是-0.75

题12:java-中-log4j-日志都有哪些级别

题13:java-中-this-和-super-有哪些用法区别

题14:构造器-constructor-是否可被重写override

题15:java-中能否继承-string-类?

题16:java-中-finally-和-return-执行顺序

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

题18:java-中-error-和-exception都有哪些区别

题19:为什么有-int-类型还要设计-integer-类型

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

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

题22:java-中-bigdecimal-类型如何加减乘除运算

题23:java-中-数组有-length()-方法吗-string-呢

题24:java-中字符型常量和字符串常量有什么区别

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

大厂面试题

大厂面试题

大厂面试题

Java
1
https://gitee.com/huo-yuelong/ebooks.git
git@gitee.com:huo-yuelong/ebooks.git
huo-yuelong
ebooks
Ebooks
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891