昨天小编面试了一个java开发实习生,下面附上笔试题和答案(这么简单的题小编裸面错成狗)
面试小题
01
单选题
1.下面关于变量及其作用该范围的陈述哪个是不对的?(B)
A.实例变量是类的成员变量
B.实例变量用关键字static声明
C.在方法中定义的局部变量在该方法被执行时创建
D.局部变量在使用前必须被初始化
解析:
一连到静态,就与实例无关
02
单选题
2.下面哪条语句把方法声明为抽象的公共方法(B)
A.public abstract method();
B.public abstract void methos();
C.public abstract void method(){};
D.public void method () extends abstract;
解析:
抽象方法:[访问权限] abstract 返回类型 方法名([参数表] ); //无方法体
03
单选题
3.关于被私有访问控制符private修饰的成员变量,以下说法正确的是(C)
A.可以被三种类所引用:该类自身,与它在同一个包中的其他类,在其他包中的改了的子类.
B.可以被两种类访问和引用:该类本身,该类的所有子类.
C.只能被该类自身所访问和修改
D.只能被同一个包中的类访问
解析:
本题主要考查Java的四种访问类型,分别为public、protected、default和private,其中 public变量可以被所有的外部类访问,而protected变量可以被同一个包及该类的子类访问, default变量即没有任何修饰符的变量可以被同一个包中的类访问,而private变量只能在该类内部被访问。
04
单选题
4.下面哪个赋值语句是不对的(A);
A.float f = 11.1;
B.double d = 5.3E12;
C.double d = 3.14159;
D.doble d = 3.14D;
05
单选题
5.假设Foo类有如下定义,设f是Foo类的一个实例,下列语句调用哪个是错误的(A)
A.Foo.imethod();
B.f.imethod();
C.System.out.println(f.i);
D.Foo.smethod();
解析:
类对象不能直接调用方法,除非方法声明为static
public class Foo{
int i ;
static String s;
void imethod(){}
static void smethod(){
}
}
06
单选题
6.阅读以下代码,输出结果应该是:(C)
A.代码得到编译,并输出 "s="
B.代码得到编译,并输出"s=null"
C.由于String s 没有初始化,代码不能编译通过
D.代码得到编译,但捕获到NullPointException异常
解析:
局部变量定义时需要初始化
public static void main(String[] args){
String s;
System.out.println("s=" + s);
}
07
单选题
7.执行完以下代码 int[] x = new int[10];后,,以下哪项说明是正确的(A)
A.x[9] = 0
B.x[9]未定义
C.x[10] 为0
D.x[0]为空
解析:
基本类型数组:
byte[],short[],int[] ,默认值为0,
boolean[]默认值为false
float[],double[],默认值为0.0
对象类型数组:
默认值为null
08
单选题
8.Which statement, when inserted at Line n1,enables the code to compile?(B)
A.this(10);
B.super(10);
C.SuperClass(10);
D.super.SuperClass(10);
class SuperClass{
SuperClass(int x){
System.out.println("Super");
}
}
public class SubClass extends SuperClass{
SubClass(){
//Line n1
System.out.println("Sub 2");
}
}
09
单选题
9.冒泡排序和选择排序
public class Demo1_Array {
/**
* * A:案例演示
* 数组高级冒泡排序代码
*/
public static void main(String[] args) {
int[] arr = {24, 69, 80, 57, 13};
bubbleSort(arr);
//selectSort(arr);
print(arr);
}
/*
* 冒泡排序
* 1,返回值类型,void
* 2,参数列表,int[] arr
*
* 第一次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3],arr[3]与arr[4]比较4次
第二次:arr[0]与arr[1],arr[1]与arr[2],arr[2]与arr[3]比较3次
第三次:arr[0]与arr[1],arr[1]与arr[2]比较2次
第四次:arr[0]与arr[1]比较1次
*/
public static void bubbleSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) { //外循环只需要比较arr.length-1次就可以了
for (int j = 0; j < arr.length - 1 - i; j++) { //-1为了防止索引越界,-i为了提高效率
if(arr[j] > arr[j+1]) {
/*int temp = arr[j];
arr[j] = arr[j + 1];
arr[j+1] = temp;*/
swap(arr,j,j+1);
}
}
}
}
/*
* 打印数组
* 1,返回值类型void
* 2,参数列表int[]arr
*/
public static void print(int[] arr) {
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
}
/*
* 选择排序
* 1,返回值类型void
* 2,参数列表int[] arr
*
* 第一次:arr[0]分别与arr[1-4]比较,比较4次
第二次:arr[1]分别与arr[2-4]比较,比较3次
第三次:arr[2]分别与arr[3-4]比较,比较2次
第四次:arr[3]与arr[4]比较,比较1次
*/
public static void selectSort(int[] arr) {
for (int i = 0; i < arr.length - 1; i++) { //只需要比较arr.length-1次
for (int j = i + 1; j < arr.length; j++) {
if(arr[i] > arr[j]) {
/*int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;*/
swap(arr,i,j);
}
}
}
}
/*
* 换位操作
* 1,返回值类型,void
* 2,参数列表int[] arr.int i,int j
*
* 如果某个方法,只针对本类使用,不想让其他类使用就可以定义成私有的
*/
private static void swap(int[] arr,int i,int j) {
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
看了就要关注我,喵呜~