想学习架构师构建流程请跳转:Java架构师系统架构设计
笔者网上搜集的试题,自己做一下,然后出个解析.答案不一定对,但是有理有据,欢迎指出不同见解.
一、 单选题
1. 以下选项中哪个是表示进入目录的 DOS 命令
A、cmd B、dir C、cd D、cls
[解析]:C 这没什么好说的,cmd是程序打开命令窗口,dir目录内容查看,cls清空屏幕
2. 不论循环条件判断的结果是什么()循环至少执行一次。
A、while B、do while C、for D、以上都不是
[解析]:B 最基础的东西,这个不必要细说
3. 请问数组 int[] num={2,14,-9,31,24};索引为 2 的元素是
A、14 B、-9 C、2 D、31
[解析]:B 索引是从0开始,num[0]就是访问第一个数组值,因为计算机是二进制补码最后运行从0开始.定义的话是几就是几个.
4. 以下 java 代码,当 x=2 时,运行结果是( )
A、没有输出任何结果 B、输出结果为 3 C、输出结果为 3 和 4 D、输出结果为 1、3 和 4
[解析]:C 因为没有break就会穿透,继续向下运行到2-3-4然后结束,如果有default还会向下穿透.
运行效果
5. 以下代码,打印结果正确的是( ):
A、30
B、20
C、16
D、2
[解析]:A 这个题主要就是考察取余运算,只有0 2 4 6 8 10可以让a的值叠起来,然后加起来为30.
6. 以下哪项不是基本数据类型()
A、int
B、char
C、Boolean
D、float
[解析]:C Boolean大写字母包装类,细节不解释,详情找我博文即可.
7. 以下变量声明不正确的是
A、int _a = 10;
B、int 0x = 1996;
C、String string = "itheima";
D、String S1994 = "String";
[解析]:C 变量的命名规则数字不能开头,大小驼峰是江湖规矩,但是实际都能用.
8. 下面代码运行的结果是
A、编译失败
B、[123]
C、[123,abc]
D、[abc]
[解析]:A Error: java: 不兼容的类型: int无法转换为java.lang.String因为泛型以限定数据类型为String,泛型只能存放引用数据类型.
9. 下面定义数组错误的是:
A、int[] arr=new int[]{1,2,3};
B、int[] arr={1,2,3};
C、int[] arr=new int[3];
D、int arr={1,2,3};
[解析]:D D选项定义的就不是数组,但是强调的是动态静态不能一起初始化.
10. 下面的方法重载,正确的是()
A、int fun (int a , float b){...} float fun (int a , float b){...}
B、float fun (float a){...} float fun (float a , float b){...}
C、float fun (int a , float b){...} float fun (int x , float y){...}
D、float fun1 (int a , float b){...} float fun2 (int a , float b){...}
[解析]:B 方法重载也就是方法名相同,同一个名字做不同的事儿为了减少各种命名记忆,其中不同的参数值,不同类型的参数都是重载和返回值类型无关.
11. 下面关于方法的参数说法不正确的是()
A、形式参数是在方法定义时的参数;
B、实际参数是方法调用时的参数;
C、方法调用时,形参实参之间的个数、顺序、类型都需要一致;
D、方法调用时,实参的变量名必须和形参的变量名一致;
[解析]:D 变量名无所谓,我用你的方法只需知道你要什么数据类型要几个,我不管你起了什么形参变量名字,如果要知道命名一样方法也没那么便捷了,全是记忆的东西.
12. 在 java 中,一个类可同时定义许多同名的方法,这些方法的形式参数的个数、类型或顺序各不相同, 这种面向对象的特性称为
A、隐藏
B、重写
C、重载
D、不支持此特性
[解析]: B 面向对象特性明显是重载,重写就是对已有的方法进行继续添加的过程,字面意思但是实际是一般子类中把父类本身有的方法重新写一遍.
13. 下面关于 Java 中类与对象描述错误的是
A、对象是类的一个实例
B、类是所有事物的模板,用事物属性特征和行为来描述所有事物
C、类是对象的模板,对象是类的实体
D、对象是一类事物的具体体现,必然具备该类事物的属性和行为
[解析]: D 这个题有点绕,先选个D,ABC肯定没有错的,这个必然,就比如说我动物类,里面有行为是奔跑,但是有的动物也是动物类中但是他只能爬行,无法使用奔跑行为,也不是必然具备.
类:是一个抽象的事务,是一个模板,创建类创建对象
对象:是类的一个实例
Student类代表是 学生这个群体模板
Teacher类代表是 老师这个群体模板
类仅仅是代表某一类事务模板,而不是所有事务
这样说也有道理.类确实不是所有事物的模板.
14. 有如下程序段:则表达式 a == b 与 s == s2 的结果分别是:( )。
A、true 与 true
B、false 与 true
C、true 与 false
D、false 与 false
[解析]: B 因为a==b因为a变为了6,b给的是5,s==s2两个地址一样所以相同.
15. 下面哪条语句定义了 5 个元素的数组
A、int [] a={22,23,24,25,12};
B、int a []=new int(5);
C、int [5] array;
D、int [] arr;
[解析]:A BCD错误离谱,知道定义就能做出来
二、 多选题
16. 定义及初始化变量的格式包括哪三个要素
A、数据类型
B、数据值
C、字符串
D、变量名
[解析]:ABD 字符串就是来搞笑的
17. 在 java 中,关于数组描述正确的是( )
A、数组中的索引从 1 开始
B、存储在数组当中的数据都属于同一数据类型
C、通过数组名.length()能获得数组的长度
D、数组的最大索引是数组的长度减 1
[解析]:BCD A错误从0开始索引
C错误当时没看清楚,数组只能调用属性长度
18. 下列关于成员变量和局部变量的区别哪些是描述正确的?
A、作用范围不一样:成员变量在类中,局部变量在方法中
B、初始化值的不同:成员变量和局部变量都没有默认值,必须先定义赋值然后使用
C、在类中的位置不同:成员变量在类中方法外,局部变量在方法中或方法声明上
D、生命周期不同:成员变量随着对象创建而存在,随着对象消失而消失,局部变量:随着方法的调用而存
在,随着方法的调用完毕而消失
[解析]:ACD B变量从定义都有默认值.
19. 以下关于运算符说法正确的有( )
A、&& 短路与,符号左边是 false,右边不再运算
B、+ 可以用来做加法运算,也可以当连接符
C、% 表示取整,/ 表示取余
D、i++就是先变量参与操作,之后变量做自增 ,++i 先变量做自增 ,之后变量参与操作
[解析]:ABD C%区域/除法
20. 下面程序的运行结果是()
A、60
B、30
C、0
D、null
E、运行时出错
F、 “”
G、编译时出错
[解析]:BC 程序长度的30,因为数组没有赋值默认值全为0
三、 代码题(共计 50 分;得分____)
21.随机生成 8 个 1-10 之间的数(包括 1 和 10),将生成的数放到数组中,计算数组元素的平均值,并将结果打印到控制台上.
package com.test;
//随机生成 8 个 1-10 之间的数(包括 1 和 10)
//将生成的数放到数组中,计算数组元素的平均值,并将结果打印到控制台上.
//导包
import java.util.Random;
public class demo1 {
public static void main(String[] args) {
Random r=new Random();
int[] arr=new int[8];
int sum = 0;
for (int i = 0; i < arr.length; i++) {
arr[i] = r.nextInt(10)+1;//索引千万别加int,纯属闲的没事儿干 定义加用就别加了
sum+=arr[i];
}
System.out.println(sum/arr.length);
}
}
22.按顺序完成以下要求:
a. 创建一个电车类(Tram),属性有:品牌(String 类型)、价格(int 类型)、已
行驶距离(int 类型)生成对应的 set/get 方法以及空参、满参构造;
b. 创建 Test 类,在 main 方法中创建出三个电车对象,品牌名和价格自拟,“已行
驶距离”属性值需要随机生成(随机数需生成 3 个,范围:
0-2000 之间的整数,包括 0 和 2000);
c. 将创建好的三个电车对象存入 ArrayList<Tram> 集合中
d. 查找集合中是否存在“已行驶距离”在 1000 以下的电车,存在,则将该电车的
品牌、价格和行驶距离打印到控制台上;否则:输出“没有行驶距离在 1000 以下的电车”;
示例如下:
代码:
电车类:
package com.test;
/*a. 创建一个电车类(Tram),属性有:品牌(String 类型)、价格(int 类型)、已
行驶距离(int 类型)生成对应的 set/get 方法以及空参、满参构造;*/
public class Tram {
private String brand;
private int price;
private int juli;
public Tram() {
}
public Tram(String brand, int price, int juli) {
this.brand = brand;
this.price = price;
this.juli = juli;
}
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
public int getJuli() {
return juli;
}
public void setJuli(int juli) {
this.juli = juli;
}
}
测试类:
package com.test;
import java.util.ArrayList;
import java.util.Random;
/*a. 创建一个电车类(Tram),属性有:品牌(String 类型)、价格(int 类型)、已
行驶距离(int 类型)生成对应的 set/get 方法以及空参、满参构造;
b. 创建 Test 类,在 main 方法中创建出三个电车对象,品牌名和价格自拟,“已行
驶距离”属性值需要随机生成(随机数需生成 3 个,范围:0-2000 之间的整数,包括 0 和 2000);
c. 将创建好的三个电车对象存入 ArrayList<Tram> 集合中
d. 查找集合中是否存在“已行驶距离”在 1000 以下的电车,存在,则将该电车的
品牌、价格和行驶距离打印到控制台上;否则:输出“没有行驶距离在 1000 以下的电车”;
示例如下:*/
public class Test {
public static void main(String[] args) {
Tram t1 = new Tram();
Tram t2 = new Tram();
Tram t3 = new Tram();
Random r=new Random();
t1.setBrand("小刀");
t1.setPrice(999);
t1.setJuli(r.nextInt(2001));
t2.setBrand("小力");
t2.setPrice(666);
t2.setJuli(r.nextInt(2001));
t3.setBrand("小刘");
t3.setPrice(888);
t3.setJuli(r.nextInt(2001));
ArrayList<Tram> arr=new ArrayList<>();
arr.add(t1);
arr.add(t2);
arr.add(t3);
boolean flag=false;
for (int i = 0; i < arr.size(); i++) {
if(arr.get(i).getJuli()<1000){
System.out.println(arr.get(i).toString());
/* System.out.println(arr.get(i).getBrand());*/
/* System.out.println(arr.get(i).getPrice());
System.out.println(arr.get(i).getJuli());*/
flag = true;
}
}
if(flag==false){
System.out.println("无超过1000米的车子");
}
}
}
这里有一些问题,就是如果前三个都大于1000都会输出语句,但是大致功能没有问题.这套题较为简单没什么难度.如果有好的想法和答案质疑欢迎留言.
错误解决我将if结构嵌套到了for循环,拿出去就好了,答案应该没什么问题了,又检查了一次,欢迎私信.