java常用面试题——笔试选择题解析

1.以下关于 abstract 关键字的说法,正确的是(D)。
A.abstract 可以与 final 并列修饰同一个类。
B.abstract 类中不可以有 private 的成员。
C.abstract 类中必须全部是 abstract 方法。
D.abstract 方法必须在 abstract 类或接口中。

解析:
final的类不能被重写和继承;而abstract的类是抽象类,本身没有实现,只能通过子类来实现,也就是说必须被继承。所以说它们是没法同时做修饰符的。
abstract 类中可以有abstract 方法和非抽象方法,但abstract 方法必须在 abstract 类或接口中

2.以下方法,(B)不是对 add 方法的重载。
public class Test{
public void add(int x,int y,int z){
//todo
}
}
A.public int add(int x,int y,float z){return 0;}
B.public int add(int x,int y,int z){return 0;}
C.public void add(int x,int y){ }
D.以上都不是
解析:

比较项 位置 方法名 参数表 返回值 访问修饰符
方法重写 子类 相同 相同 相同或是其子类 不能比父类更严格
方法重载 同类 相同 不相同 无关 无关

3.关于 Java 堆,下面说法错误的是(D)。
A.所有类的实例都是在堆上分配内存。
B.对象所占的堆内存是由自动内存管理系统回收。
C.堆内存由存活和死亡的对象,空闲碎片区组成。
D.数组是分配在栈中的。

解析:数组是对象,所有对象存储在堆内存中,而基本数据类型存储在栈内存中。

4.观察以下代码,输出结果是(C)。
public class MyClass{
int i = -1;
private void action(){
int i = 0;
i++;
}
public static void main(String[] args){
MyClass mc = new MyClass();
mc.action();
System.out.println(mc.i);
}
}
A.1 B. 0 C. -1 D.抛出异常

解析:输出结果为mc.i,这里的i是全局变量,不会被action里面的局部变量影响

5.观察下面的代码,正确的结果是(A)。
class Letter{
char c = ‘x’;
}
public class PassObject{
static void f(Letter y){
y.c = ‘z’;
}
public static void main(String[] args){
Letter x = new Letter();
x.c = ‘a’;
f(x);
System.out.println(x.c);
}
}
A.z B. a C. x D. null
6.观察如下代码,正确显示结果为(C)。
class A{
void callme(){
System.out.println(“Inside A’s callme()method”);
}
}
class B extends A{
void callme(){
System.out.println(“Inside B’s callme() method”);
}
}
class C extends B{
void callme(){
System.out.println(“Inside C’s callme() method”);
}
}
public class Dispatch{
public static void main(String args[]){
A a = new C();
a.callme();
}
}
A.Inside A’s callme()method
B.Inside B’s callme()method
C.Inside C’s callme()method
D.抛出异常

解析:
A a = new C();
a为C对象,虽然有继承,但callme()方法重写之后,调用C重写之后的方法【子类重写方法,声名一个子类的对象,调用的方法是子类的方法】

7.观察如下代码,正确的显示结果是(A)。
public class MyClass{
public static void main(String[] args){
String s1 = “hello”;
String s2 = “hello”;
String s3 = new String(“hello”);
String s4 = new String(“hello”);
System.out.println((s1 == s2) + “/” + (s3 == s4));
}
}
A.true/false
B.true/true
C.false/true
D.false/false

解析:
String s1 = "hello"时,数据存储在常量池中,值一样,地址也一样。 String s3 = new
String(“hello”)时,直接在堆中创建对象,地址会发生改变 “==”判断 地址是否一致 equals() 判断值是否相等

8.观察如下代码,正确的显示结果是(B)。
class MyException extends Exception{
public MyException(String msg){
super(msg);
}
}
public class MyClass {
public static void main(String[] args){
try{
if(true) throw new MyException(“bad”);
System.out.println(" OK");
}catch(MyException e){
System.out.print(e.getMessage());
}
System.out.print(" bye");
}
}
A. bad
B. bad bye
C. OK bad
D. OK bad bye

解析:if(true) throw new MyException(“bad”);抛出异常时,不执行try异常后面的语句,由于异常被捕获,打印异常信息。代码继续执行,打印bye

9.下列说法中,不正确的是(B)。
A.一个 Java 源程序经过编译后,得到的文件的扩展名一定是.class。
B.一个 Java 源程序经过编译后,得到的结果文件数也只有一个。
C.一个 Java 源程序只能有一个 public class 类定义,且源文件的名字与 public class 的类
名相同,扩展名必须是.java。
D.一个 Java 源程序可以包含多个 class 类。

解析:一个JAVA源文件里面可以有内部类,其他类(有且仅有一个类可以声明为public),所以,编译后,可以有多个.class文件

10.欲构造 ArrayList 类的一个实例,此类实现继承了 List 接口,下列方法正确的是(B)。
A.ArrayList myList = new Object();
B.List mylist = new ArrayList();
C.ArrayList myList = new List();
D.List myList = new List();
11.下列说法正确的是(AC)(多选)。
A.LinkedList 实现了继承自 List。
B.AbstractSet 继承自 Set。
C.HashSet 继承自 AbstractSet。
D.WeakMap 继承集成自 HashMap。

解析:
List有两个实现类:ArrayList和LinkedList
AbstractSet 继承于AbstractCollection并且实现了大部分Set接口。

12.Thread 类用来创建和控制线程,一个线程从下面(B)方法开始执行。
A.init()
B.start()
C.run()
D.notifyAll()

解析: 调用start()方法开启线程来执行任务(start()方法会调用run()以便执行任务)

13.下面关于 Java 语言实例方法和类方法的说法,正确的是(BC)(多选)。
A.实例方法可以直接通过类名调用。
B.类方法可以直接通过类名调用。
C.实例方法可以操作实例变量也可以操作类变量。
D.类方法可以操作实例变量也可以操作类变量。

解析:
类方法可以通过类名调用,实例方法不能通过类名调用,因为类方法在该类被加载到内存时,就分配了相应的入口地址。
类中的类方法不可以操作实例变量,也不可以调用实例方法,因为在类创建对象之前,实例成员变量还没有分配内存,而且实例方法也没有入口地址

14.在 Java 语言当中,(C)关键字用来实现同步。
A. native
B. Static
C. synchronized
D. abstract
15.以下关于 Java 的 List Set 和 Map 集合的描述,错误的是(BC)(多选)。
A) List 集合的元素是有序的,元素可以重复
B) HashSet 集合的元素是无序的,可以重复的;TreeSet 是有序的,基于 TreeMap 实现

C) HashMap 的 Key 必须唯一,Value 同样不可以重复
D) LinkedList 线程不安全,它是链表结构
E) List 集合具有以下几种常用的方法:add(E e) clear() hashCode() iterator()
toArray()

解析: HashSet 集合的元素不可重复的,HashMap的 Value可以重复

16.正则表达式“\d+.?\d”,在匹配下列字符串时结果失败的是(C)。*
A.12.5 B.1.25 C.以上都成功 D.以上都失败

解析:
\d数字字符匹配。等效于 [0-9]。

  • 零次或多次匹配前面的字符或子表达式。
  • 一次或多次匹配前面的字符或子表达式
    \ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。

热门文章

暂无图片
编程学习 ·

springcloud config 配置访问

springcloud http请求地址和资源文件映射如下: / { 应用名 } / { 环境名 } [ / { 分支名 } ] / { 应用名 } - { 环境名 }.yml / { 应用名 } - { 环境名 }.properties / { 分支名 } / { 应用名 } - { 环境名 }.yml / { 分支名 } / { 应用名 } - { 环境名 }.properties label 分支…
暂无图片
编程学习 ·

Python使用Request库实现PC端学小易(适用app版本1.0.6)

Python使用Request库实现PC端学小易app(适用app版本1.0.6)前言抓包登录操作抓包搜题操作抓包数据分析登录搜题重点代码实现导入库tkinter实现简易图形界面部分request库实现登录部分搜题部分整理输出至tkinter部分完整代码重点 前言 一直以来学小易只有安卓段与IOS端的app,在…
暂无图片
编程学习 ·

实战系列-Spring Cloud微服务中三把利器Feign、Hystrix、Ribbon

导语在之前的分享中分享过关于Fegin的底层实现原理,以及Spring Cloud OpenFegin的启动原理。在这次的分享中主要总结一下Spring Cloud 微服务架构的三把利器。对于Fegin、Hystrix、Ribbon三个组件来说它们之间是什么样的关系。怎么样综合使用等这些问题就是这次分享的内容文章…
暂无图片
编程学习 ·

leetcode-341-扁平化嵌套列表迭代器-java

题目及测试package pid341; /* 扁平化嵌套列表迭代器给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。示例 1:输入: [[1,1],2,[1,1]] 输出: […
暂无图片
编程学习 ·

2 css

css的三大特性 css有三个非常重要的三个特性;层叠性 继承性 优先级 层叠性 相同选择器给设置相同的样式,此时一个样式就会覆盖(层叠)另一个冲突的样式,层叠性 主要解决样式冲突的问题 原则 样式冲突,遵循原则上就近原则,那个样式离结构近,就执行那个样式 样式不冲突,不…
暂无图片
编程学习 ·

Spring-@Order注解

一、@Order 注解@Order的作用是定义Spring容器加载Bean的顺序 @Retention(RetentionPolicy.RUNTIME) @Target({ElementType.TYPE, ElementType.METHOD, ElementType.FIELD}) @Documented public @interface Order {/*** 默认最低优先级*/int value() default Ordered.LOWEST_PR…
暂无图片
编程学习 ·

GPU与深度学习

GPU与深度学习一.为什么深度学习要使用CPU 深度学习:深度学习是模拟人脑神经系统而建立的数学网络模型,最大特点是需要大数据来训练,也就需要大量的并行的重复计算。 GPU:CPU的全称是Central Processing Unit,GPU的全称是Graphics Processing Unit。在命名上,这两种器件…
暂无图片
编程学习 ·

Java教程,Java入门教程,9天快速掌握java基础

Java语言于1995年诞生至今,已经有25年的发展历史,并长期位居编程语言界榜首。行业需求大,薪资待遇高,这些都是Java的优势,那对于初学者来说,怎么样才能更好的入门Java呢?传智播客为此准备了精品视频课程,用9天时间带你快速掌握Java基础。(PS:文末附有课程)本课程将会…
暂无图片
编程学习 ·

Linux上远程命令

远程Linux: ssh -l root 192.168.0.1 -l 用户 远程成功了在输密码 远程Windows: rdesktop - u tedu -p tedu 192.168.0.10:3389 -u 用户 -p 密码
暂无图片
编程学习 ·

UGUI获取自适应UI元素的宽高

对于使用了layout的布局元素来说,并不能直接通过rectTransfrom来获取搞元素的weight和height 不过Unity中有对应API可以帮助我们获取 通过LayoutUtility中的静态方法我们可以获取对应的一些信息 GetFlexibleHeight 返回布局元素的灵活高度。GetFlexibleSize 返回布局元素的灵活…
暂无图片
编程学习 ·

Java学习 | 基础知识 - 关键字和标识符

Java基本知识 1、关键字关键字不能用于常量、变量、和任何标识符的名称Java关键字整理类别关键字 说明访问控制private私有的protected受保护的public公共的default默认类、方法和变量修饰符abstract声明抽象class类extends扩充,继承final最终值,不可改变的implements实现(接…
暂无图片
编程学习 ·

Java实现文件浏览器下载

前言:先说下需求,项目需求是用户一点击一个前端页面的链接就可以下载一个压缩包.因为就1个文件,使用文件管理系统像fastDSF,阿里云的OSS这种没必要,直接放在nginx服务器上的怕不好管理,于是给我限定了把文件打包到部署时候的jar包中并实现浏览器下载. 废话不多说,直接上代码! 1…
暂无图片
编程学习 ·

组合数学4-全排列与算法

文章目录全排列与算法一 钟声里的全排列**思考**:生成算法二 字典序法1.递归2.字典序法例1:生成字母abc的全排列例2:生成123的全排列例3:生成839647521的全排列3.**思考**:局部连续变化三 SJT算法(Steinhaus–Johnson–Trotter algorithm)1. 引出思路2. 可移动数(mobil…
暂无图片
编程学习 ·

docsify 构建文档网站之定制功能(全网最全)

作者: wugenqiang 学习笔记:https://notebook.js.org/ 微信公众号:码客 E 分享(ID:enjoytoshare)文档后续更新地址:docsify 构建文档网站4 定制功能 文章目录4 定制功能4.1 支持 DOT 语言作图4.2 支持 LaTex 数学公式4.3 支持 PDF 页面展示4.4 支持回到顶部4.5 点击页面…
暂无图片
编程学习 ·

Kafka中位移提交那些事儿

本文已收录GitHub,更有互联网大厂面试真题,面试攻略,高效学习资料等之前我们说过,Consumer 端有个位移的概念,它和消息在分区中的位移不是一回事儿,虽然它们的英文都是 Offset。今天我们要聊的位移是 Consumer 的消费位移,它记录了Consumer 要消费的下一条消息的位移。这…
暂无图片
编程学习 ·

一文聊透This

Thisthis指向当前属性所在对象。 var A = {name: 张三,describe: function () {return 姓名:+ this.name;} };var name = 李四; var f = A.describe; f() // "姓名:李四"JavaScript 语言之中,一切皆对象,运行环境也是对象,所以函数都是在某个对象之中运行,this…
暂无图片
编程学习 ·

SpringBoot的demo创建

SpringBoot的demo创建 springBoot项目的创建又多种方式本次就说一种比较简单的方式 选择Spring Initializr,点击确定(选择这种方式的创建,需要又网络环境,这相当于在spring.io官网下载demo) 这些看个人需求,进行修改,没有修改的可以直接下一步 这个界面是选取SpringBoot…
暂无图片
编程学习 ·

mfc110.dll丢失,解决方法

mfc110.dll丢失,解决方法参考文章: (1)mfc110.dll丢失,解决方法 (2)https://www.cnblogs.com/hsd1727728211/p/5412141.html 备忘一下。
暂无图片
编程学习 ·

基于Common.Logging + Log4Net实现的日志管理

基于Common.Logging + Log4Net实现的日志管理</h1><div class="clear"></div><div class="postBody">前言Common.Logging 是Commons-Logging(apache最早提供的日志门面接口,提供了简单的日志实现以及日志解耦功能) 项目的.net版本…