当前位置: 首页 > article >正文

【java】笔试强训Day1

⛳选择题

1.在 Java 中,存放字符串常量的对象属于 (        )类对象

A、Character                        B、String               C、StringBuffer                    D、Vector

🙈大家觉得答案是什么呢


🙉答案是 B 啦~

2.已知如下类定义:

class Base {
    public Base (){
        //...
    }
    public Base ( int m ){
        //...
    }
    public void fun( int n ){
        //...
    }
}
public class Child extends Base{
    // member methods
}

如下哪句可以正确地加入子类中?(        )

A private void fun( int n ){ //...}
B void fun ( int n ){ //... }
C protected void fun ( int n ) { //... }
D public void fun ( int n ) { //... }

🙈大家觉得答案是什么呢


🙉答案是 D 啦~

🔎思路:此题主要的考点是————子类与父类的重写————方法返回值、方法名、参数列表均均相同

❗❗注意,想要构成重写,必须有 子类的访问修饰限定大于父类的访问修饰限定

public>protected>包访问权限(默认访问权限)>private

3.假设 A 类有如下定义,设 a 是 A 类的一个实例,下列语句调用哪个是错误的?(        )


public class A {
    public int i;
    static String s;
    void method1(){};
    static void method2(){
 
    }
}
 
public class Main{
    public static void main(String[] args) {
        A a = new A();
        }
}

A. System.out.println(a.i);              B. a.method1();            C. A.method1();              D. A.method2();

🙈大家觉得答案是什么呢


🙉答案是 D 啦~

🔎思路:i 是 A 的一个属性,s 是 A 的静态方法,method1 是 A 的一个实例方法,method2 是 A 的一个实例方法

实例方法和变量调用是 实例对象.方法名/属性/变量

静态方法和变量调用是 这个类.方法/属性/变量

静态成员变量, 静态方法可以直接通过类名或对象去调用, 因此ABD正确, 非静态方法, 必须通过对象名去调用, 因此C不正确.

4.类声明种,声明一个类不能再被继承的关键字是(        )

A public               B abstract                C final                   D static

🙈大家觉得答案是什么呢


🙉答案是 C 啦~

🔎思路:此题考查的是关键字的使用

public访问修饰符,可以被继承

abstract修饰的类是抽象类,可以被继承,同时子类还必须重写抽象类种的所有抽象方法。

final 修饰的类不可以被继承,final修饰的变量不可以更改

static修饰的类是一个静态类,可以被继承

5.方法通常存储在进程中的哪一区中(        )

A 堆区                  B 栈区                C 全局区                  D 方法区

🙈大家觉得答案是什么呢


🙉答案是 D 啦~

6.在基本Java类型中,如果不明确指定,整数型的默认是(         )类型,带小数的默认为(         ) 类型

A int float                     B int double                    C long float                       D long double

🙈大家觉得答案是什么呢


🙉答案是 B 啦~

7.下列代码的执行结果是:

public class Test3{
    public static void main(String[] args) {
        System.out.println(100%3);
		System.out.println(100%3.0);
    }
}

A 1和1                            B 1和1.0                           C 1.0和1                         D 1.0和1.0

🙈大家觉得答案是什么呢


🙉答案是 B 啦~

8.关于下列程序段的输出结果,说法正确的是(        )

public class MyClass{
    static int i;
    public static void main(String[] argv){
        System.out.println(i);
    }
}

A 有错误,变量i没有初始化                    B null                       C 1                           D 0

🙈大家觉得答案是什么呢


🙉答案是 D 啦~

🔎思路:在myclass类中,i是一个静态的成员变量,最终输出的是 i , 成员变量如果没有初始化,默认值为0.

9.不考虑反射,关于私有访问修饰符private修饰的成员变量,以下说法正确的是(         )

A 可以三种类所引用:该类自身、与他在同一包中的其他类,在其他包中的该类的子类

B 可以被两种类访问和引用:该类本身,该类的所有子类

C 只能被该类自身所访问和修改

D 只能被同一个包中的类访问

🔎思路:本题考查的 值访问修饰符的访问权限的大小

private只能被该类自身
default可以被同一个包 下的所有类访问
protected可以被同一个包下的所有类和其他包下的子类访问
public可以被同一个项目的所有类访问。

📝编程题

1.组队竞赛

牛客网链接:组队竞赛

牛牛举办了一次编程比赛,参加比赛的有3*n个选手,每个选手都有一个水平值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),表示每个参赛选手的水平值.

输出描述:

输出一个整数表示所有队伍的水平值总和最大值.

 🔎思路:想要最大即选一个最小,一个最大,另外一个是次最大值,这个时候才能取到输出最大值,就需要先排序

保证每组的第二个值取到能选择的最大值就可以,我们每次尽量取最大,但是最大的数不可能是中位数,所以退而求其次,取 每组中第二大的。

import java.util.Arrays;
import java.util.Scanner;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int n = scanner.nextInt();
            int[] array = new int[3 * n];
            for (int i = 0; i < 3 * n; i++) {
                array[i] = scanner.nextInt();
            }
            Arrays.sort(array);
            int sum = 0;
            for (int i = 0; i < n; i++) {
                sum = sum + array[array.length - 2*(i+1)];
            }
            System.out.println(sum);
        }
    }

第二种:假设有3n个数,先使用排序之后,分为3组,选最小的一个和最大值的一个及次最大值的一个

最小的肯定是前n个数,那么对于最大值和此最大值在后 n 到 3n 之中,从n开始,次最大值与下一个次最大值相差2

        for (int i = n; i < 3*n; i+=2) { 
            sum = sum + array[i];
        }
    import java.util.Arrays;
    import java.util.Scanner;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            int n = scanner.nextInt();
            int[] array = new int[3 * n];
            for (int i = 0; i < 3 * n; i++) {
                array[i] = scanner.nextInt();
            }
            Arrays.sort(array);
            int sum = 0;
            for (int i = n; i < 3*n; i+=2) {
                sum = sum + array[i];
            }
            System.out.println(sum);
        }
    }

2.删除公共字符

牛客网链接:删除公共字符

描述:

输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”

输入描述:

每个测试输入包含2个字符串

输出描述:

输出删除后的字符串

 第一种:使用 HashMap

去重联想到HashMap和HashSet

HashMap 可以使用两个引用,一个存放需要对比的字符串,一个存放每个字符出现的次数

HashSet 自带去除重复元素功能,在解决去除字符串中重复元素时效率最高

🔎思路:使用HashMap,首先遍历需要除去元素的字符串(str2),将每个字符串存放在HashMap中,并对其更新出现次数 ,接下来遍历需要检查的字符串,在放入前查询HashMap中对应字符的value值,如果元素没有出现,将其加入到输出字符串中,若value值大于等于1,则需要舍去 ,最后输出字符串

在进行存放输出字符串时可以采用String或者StringBuilder,在此处建议使用后者, 因为String在进行“+=”操作时会产生许多的临时变量,而StringBuer可以在原字符串的基础上进行添加操作

HashMap中采用的是引用的方法,在判断value值时不能使用“==0”进行判空操作,应该使用“==null”进行操作。

    port java.util.HashMap;
    import java.util.Scanner;

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();

        HashMap<Character,Integer> hashMap = new HashMap<>();

        StringBuffer str3 = new StringBuffer();

        for (int i = 0; i < str2.length(); i++) {
            if ( hashMap.get(str2.charAt(i)) == null) {
                hashMap.put(str2.charAt(i), 1);
            }
        }

        for (int i = 0; i < str1.length(); i++) {
            if (hashMap.get(str1.charAt(i)) == null) {
                str3.append(str1.charAt(i));
            }
        }
        System.out.println(str3);
    }

第二种:

    import java.util.Scanner;
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str1 = scanner.nextLine();
        String str2 = scanner.nextLine();
        char[] array = str1.toCharArray();
        for (int i = 0; i < array.length; i++) {
            if (!str2.contains(String.valueOf(array[i]))) {
                System.out.print(array[i]);
            }
        }
    }

http://www.kler.cn/a/2255.html

相关文章:

  • 【mysql】使用宝塔面板在云服务器上安装MySQL数据库并实现远程连接
  • Unity学习笔记(4):人物和基本组件
  • 冗余连接2 hard题 代随C#写法
  • SAP_MM_SD_PP_FICO_视频课程几乎免费送
  • Java项目实战II基于微信小程序的个人行政复议在线预约系统微信小程序(开发文档+数据库+源码)
  • WordPress 2024主题实例镜像
  • 膜拜!阿里自爆十万字Java面试手抄本,脉脉一周狂转50w/次
  • 自定义类型的超详细讲解ᵎᵎ了解结构体和位段这一篇文章就够了ᵎ
  • 蚁群算法c++
  • 【前端八股文】浏览器系列:性能优化——HTML、CSS、JS、渲染优化
  • 【Java集合】Collection接口中的常用方法
  • RK3588平台开发系列讲解(显示篇)DP显示调试方法
  • 关于STM32用DMA传输UART空闲中断中接收的数据时无法接收数据问题以及解决办法
  • STL库中list的迭代器实现痛点分析
  • 数据清洗是清洗什么?
  • 【Linux】进程的概念--程序地址空间(2)
  • 投稿指南【NO.7】目标检测论文写作模板(初稿)
  • nodejs+vue校园超市小卖部零食在线购物商城系统
  • Postman接口与压力测试实例
  • 计算机网络-DNS和域名关系
  • 运行YOLOv8实现识别
  • 微信小程序根据CODE获取用户open_id
  • TCP三次握手/四次挥手
  • C语言例程:学生成绩管理程序
  • 「Vue面试题」vue要做权限管理该怎么做?如果控制到按钮级别的权限怎么做?
  • define,typedef,inline 的区别