zl程序教程

您现在的位置是:首页 >  其它

当前栏目

【nowcoder】笔试强训Day12

笔试 nowcoder
2023-09-11 14:17:51 时间

目录

一、选择题

二、编程题

2.1二进制插入

2.2 查找组成一个偶数最接近的两个素数


一、选择题

1.以下方法,哪个不是对add方法的重载?

public class Test
{
    public void add( int x,int y,int z){}
}

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. 所有选项都不是 

重载意味着参数列表必须不同,方法名称必须相同,其他可以更改也可以不更改。

所以正确答案是

2.在Java中,关于HashMap类的描述,以下错误的是

A. HashMap使用键/值得形式保存数据

B. HashMap 能够保证其中元素的顺序

C. HashMap允许将null用作键

D. HashMap允许将null用作值 

HashMap使用键/值得形式保存数据。HashMap 不能够保证其中元素的顺序,HashSet能。HashMap允许将null用作键和值。

所以正确答案是

3.在Java中,( )类提供定位本地文件系统,对文件或目录及其属性进行基本操作

A. FileInputStream

B. FileReader

C. FileWriter

D. File

FileInputStream提供了对文件的字节读取;FileReader提供了对文件的字符读取;FileWriter提供了对文件的字符写入;File提供了对文件的基本操作,包括对删除,文件路径等操作。

所以正确答案是 D 

4.下面程序的运行结果是

String str1 = "hello";
String str2 = "he" + new String("llo");
System.err.println(str1 == str2);

A. true

B. false

C. exception

D. 无输出

“==”进行的是两个变量数值的比较,对于基本数据类型来说比较的就是基本数值是否相等,对于引用数据类型来说比较的是两个引用是否指向同一个对象(即地址是否相同)。
str2和str1指向的不是同一个对象,所以==结果是false。

所以正确答案是 B 

5.下列哪个修饰符可以使在一个类中定义的成员变量只能被同一包中的类访问?

A. private

B. 无修饰符

C. public

D. protected

无修饰符表示default修饰符,private(私有权限,类内部权限)<default(包访问权限,包内部可见)<protected(继承权限)<public(公开的,所有对象可见)

所以正确答案是 B 

6.java接口的方法修饰符可以为?(忽略内部接口)

A. private

B. protected

C. final

D.abstract

private是访问修饰符表示私有权限。protected也是访问修饰符表示继承权限,final修饰表示不可更改,abstract是接口的方法修饰符。

所以正确答案是 D 

7.下列程序的运行结果

public void getCustomerInfo() {
    try {
        // do something that may cause an Exception
    } catch (java.io.FileNotFoundException ex) {
        System.out.print("FileNotFoundException!");
    } catch (java.io.IOException ex) {
        System.out.print("IOException!");
    } catch (java.lang.Exception ex) {
        System.out.print("Exception!");
    }
}

A. IOException!

B. IOException!Exception!

C. FileNotFoundException!IOException!

D. FileNotFoundException!IOException!Exception! 

考察多个catch语句块的执行顺序。当用多个catch语句时,catch语句块在次序上有先后之分。异常只会被一个catch捕捉到。

所以正确答案是 A 

8.下列哪种异常是检查型异常,需要在编写程序时声明?

A. NullPointerException

B. ClassCastException

C. FileNotFoundException

D. IndexOutOfBoundsException 

NullPointerException、ClassCastException 、IndexOutOfBoundsException 都是运行时异常,FileNotFoundException是编译时异常即检查型异常,需要用try-catch块进行处理。

所以正确答案是 C 

9.选项中哪一行代码可以添加 到题目中而不产生编译错误?

public abstract class MyClass {
    public int constInt = 5;
    //add code here
    public void method() {
    }
}

A. public abstract void method(int a);

B. constInt = constInt + 5;

C. public int method();

D. public abstract void anotherMethod() {} 

在抽象类中只能有定义变量和方法,不能有其他语句,所以B错。抽象方法用abstract修饰,并且不能有{},所以C,D错。

所以正确答案是 A 

10.如下代码,执行test()函数后,屏幕打印结果为()

public class Test2
{
    public void add(Byte b)
    {
        b = b++;
    }
    public void test()
    {
        Byte a = 127;
        Byte b = 127;
        add(++a);
        System.out.print(a + " ");
        add(b);
        System.out.print(b + "");
    }
}

A. 127 127

B. 128 127

C. 129 128

D. 其他选项都不对

byte的最小值是-128,最大值是127。进入add方法后的改变不改变test方法中的a和b本身。所以第一个输出的++a是128,但是已经超过了最大数127,所以会输出-128。b则还是127。

所以正确答案是 D 

二、编程题

2.1二进制插入

给定两个32位整数n和m,同时给定i和j,将m的二进制数位插入到n的二进制的第j到第i位,保证n的第j到第i位均为零,且m的二进制位数小于等于i-j+1,其中二进制的位数从0开始由低到高。

题目中保证了n的第j位到第i位都是0,并且m的二进制位数不会超过(i - j),所以将n的第i位到第j位替换成m的二进制位,本质上就是n加上m扩大(2^j)倍后的结果。

public class BinInsert {
    public int binInsert(int n, int m, int j, int i) {
        m<<=j;
        return n+m;
    }
}

2.2 查找组成一个偶数最接近的两个素数

任意一个偶数(大于2)都可以由2个素数组成,组成偶数的2个素数有很多种情况,本题目要求输出组成指定偶数的两个素数差值最小的素数对。

 在本题中先求得n的一半的值,然后创建一个方法来判断他是否是素数,即从2到a-1,均不能整除即可。若两者有一个不是就进入循环然后x--,y++,直到两个都是素数,两个加起来仍然等于n。

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int x= n>>1;
        int y = x;
        while(!su(x)||!su(y)){
            x--;
            y++;
        }
        System.out.println(x);
        System.out.println(y);
    }
    public static Boolean su(int a){
        for (int i = 2; i < a; i++) {
            if(a%i==0){
                return false;
            }
        }
        return true;
    }
}