Java笔试强训错题集(一)

Java春招笔试题集

选择题

在这里插入图片描述
上图都是fun方法且参数都只有一个,目的是与父类中的fun方法构成重写。
重写:方法返回值+方法名+参数列表。
图中访问修饰限定符有差别,如果发生重写,子类的访问修饰限定符的权限大于等于父类的。

答案:D

访问修饰限定符权限:private<默认访问权限(包访问权限)<protected<public

在这里插入图片描述
成员变量没有初始化,默认的值是0.

答案:D

在这里插入图片描述
被private修饰只能在当前类使用。

答案:C

在这里插入图片描述
A:成员变量通过引用对象访问。
B:成员方法通过实例化对象访问。
C:错误,通过类名访问需要静态方法。
D:是静态方法所以能通过类名访问。

在这里插入图片描述

答案:C

在这里插入图片描述
A派生B,B派生C。所以A与B是继承关系,B与C是继承关系,A与C也构成继承关系。
图中声明均为父类引用引用子类对象,所以声明全部是正确的。
在这里插入图片描述

答案:D

重点题


难道题目错啦???不可能,绝对不可能。

在这里插入图片描述
查看了toLowerCase方法源码,这个方法是把大写字母变小写字母,本身是小写字母返回this,否则返回一个新的对象。然后原来的字母在定义的常量在常量池中与新定义的对象在堆区中,相比较肯定结果是false。

在这里插入图片描述

在这里插入图片描述

答案:B

在这里插入图片描述
调用的是静态方法。对于静态成员变量和静态方法,它们的存储区域是方法区(Method Area)。普通成员变量,存储在对象的堆内存中。普通方法,方法的字节码存储在方法区,方法的执行在栈内存中进行。

即使实例化的对象不指向任何引用为NULL;还是能通过编译,正常运行。

答案:A
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

不能存在于static方法和static语句块,因为static方法不指向任何引用(this和super都是指向当前引用)

答案:A

在这里插入图片描述
在这里插入图片描述
static修饰符修饰的变量叫类变量,在方法里面不能定义类变量。

答案:D

在这里插入图片描述

A:构成了方法的重载,同时是抽象方法不需要花括号.
B:对成员变量的赋值要放在方法里面.
C:不是抽象方法所以要有花括号.
D:抽象方法不能有花括号

答案:A

编程题

组队竞赛

  1. ACM编程题 标题:组队竞赛 | 时间限制:1秒 | 内存限制:32768K
    牛牛举办了一次编程比赛,参加比赛的有3n个选手,每个选手都有一个水平值a_i.现在要将这些选手进行组队,
    一共组成n个队伍,即每个队伍3人.牛牛发现队伍的水平值等于该队伍队员中第二高水平值。
    例如:
    一个队伍三个队员的水平值分别是3,3,3.那么队伍的水平值是3
    一个队伍三个队员的水平值分别是3,2,3.那么队伍的水平值是3
    一个队伍三个队员的水平值分别是1,5,2.那么队伍的水平值是2
    为了让比赛更有看点,牛牛想安排队伍使所有队伍的水平值总和最大。
    如样例所示:
    如果牛牛把6个队员划分到两个队伍
    如果方案为:
    team1:{1,2,5}, team2:{5,5,8}, 这时候水平值总和为7.
    而如果方案为:
    team1:{2,5,8}, team2:{1,5,5}, 这时候水平值总和为10.
    没有比总和为10更大的方案,所以输出10.
    输入描述:
    输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
    第二行包括3
    n个整数a_i(1 ≤ a_i ≤ 10^9),表示每个参赛选手的水平值.
    输出描述:
    输出一个整数表示所有队伍的水平值总和最大值.
    示例1:
    输入
    2
    5 2 8 5 1 5
    输出

首先读懂题目,每队有3个数,水平值为每队的中位数.如果有多条队伍,要算水平值总和最大值,需要把整个队伍所有值进行排序,然后每条队伍的水平值相加就是水平值最大值.本题的主要思路是贪心算法,以这里的贪心就是保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,但是最大的数不可能是中位数,所以退而求其次,取 每组中第二大的

贪心算法指的是不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解。

arr.len-2(i+1)*
这个公式可以拿到排序过后的每组中位数即水平值.

public static void main(String[] args) {
        Scanner scan=new Scanner(System.in);
        while (scan.hasNext()){
            int n= scan.nextInt();
            long[] array=new long[3*n];
            for(int i=0;i<(3*n);i++){
                array[i]= scan.nextLong();
            }
            //排序方法
            Arrays.sort(array);
            long sum=0;
            for(int i=0;i<n;i++){
                //求平均值公式
                sum+=array[array.length-(2*(i+1))];
            }
            System.out.println(sum);
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值