Java经典笔试题—day02

news2024/12/24 9:18:47

Java经典笔试题—day02

  • 🔎选择题
  • 🔎编程题
    • 🥝排序子序列
    • 🥝倒置字符串
  • 🔎结尾

🔎选择题

(1)A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明:

  1. A a0=new A();
  2. A a1=new B();
  3. A a2=new C();

问以下哪个说法是正确的()
A. 只有第一行能通过编译
B. 第1、2行能通过编译,但第3行编译出错
C. 第1、2、3行能通过编译,但第2、3行运行时出错
D. 第1行,第2行和第3行的声明都是正确的

D

在这里插入图片描述

(2)下面代码将输出什么内容:()

public class SystemUtil{
	public static boolean isAdmin(String userId){
		return userId.toLowerCase()=="admin";
     }
    public static void main(String[] args){
        System.out.println(isAdmin("Admin"));
    }       
}

A. true
B. false
C. 1
D. 编译错误

B

当被转换的字符串全是由小写字母组成时, 此时调用 toLowerCase() 方法, 就会 return this
当被转换的字符串不全是由小写字母组成时, 此时调用 toLowerCase() 方法, 就会 return new String
在这里插入图片描述
在这里插入图片描述

(3)阅读如下代码。请问对语句行 test.hello(). 描述正确的有()

class Test {
	public static void hello() {
 		System.out.println("hello");
	}
}
public class MyApplication {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Test test = null;
		test.hello();
	}
}

A. 能编译通过,并正确运行
B. 因为使用了未初始化的变量,所以不能编译通过
C. 以错误的方式访问了静态方法
D. 能编译通过,但因变量为null,不能正常运行

A

Test test = null, 表示 test 不指向任何对象
但是由于 hello() 方法被 static 修饰, 表示是一个静态方法(不需要对象就可以直接调用)

(4)在使用super和this关键字时,以下描述正确的是()

A. 在子类构造方法中使用 super() 显示调用父类的构造方法,super() 必须写在子类构造方法的第一行,否则编译不通过
B. super() 和 this() 不一定要放在构造方法内第一行
C. this() 和 super() 可以同时出现在一个构造函数中
D. this() 和 super() 可以在static环境中使用,包括static方法和static语句块

A

在这里插入图片描述
在这里插入图片描述

(5)如下代码的结果是什么 ?

class Base {
 	Base() {
 		System.out.print("Base");
 	}
}
public class Alpha extends Base {
 	public static void main(String[] args) {
 		new Alpha();
 		//调用父类无参的构造方法
 		new Base();
 	}
}

A. Base
B. BaseBase
C. 编译失败
D. 代码运行但没有输出
E. 运行时抛出异常

B

调用子类构造方法的同时会调用父类构造方法

(6)如下代码的输出结果是什么?

public class Test {
 	public int aMethod(){
 		static int i = 0;
 		i++;
 		return i;
 	}
	public static void main(String args[]){
 		Test test = new Test();
 		test.aMethod();
 		int j = test.aMethod();
 		System.out.println(j);
 	}
}

A. 0
B. 1
C. 2
D. 编译失败

D

static 修饰的变量只能是成员变量, 不能是局部变量

(7)下列哪一种叙述是正确的()

A. abstract修饰符可修饰字段、方法和类
B. 抽象方法的body部分必须用一对大括号{ }包住
C. 声明抽象方法,大括号可有可无
D. 声明抽象方法不可写出大括号

D

A. abstract 修饰符可以修饰方法和类, 不可以修饰字段
B, C, D 抽象方法不能含有{ }

(8)下列说法正确的有:()

A. class中的constructor不可省略
B. constructor必须与class同名,但方法不能与class同名
C. constructor在一个对象被new 时执行
D. 一个class只能定义一个constructor

C

A. 省略 constructor(构造方法)时, 编译器会默认提供一个不带参数的构造方法
B. 构造方法也属于方法, constructor 与 class 同名, 方法也可以与 class 同名
D. 方法可以重载

(9)选项中哪一行代码可以替换 //add code here 而不产生编译错误

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

A. public abstract void method(int a);
B. consInt=constInt+5;
C. public int method();
D. public abstract void anotherMethod(){}

A

B. 成员变量的赋值在需要在方法中完成在这里插入图片描述
C. 如果是抽象方法需要 abstract 修饰. 如果是具体方法, 需要加{ }
D. 抽象方法不能含有{ }

(10)在使用 interface 声明一个外部接口时,只可以使用( )修饰符修饰该接口

A. private
B. protected
C. private protected
D. public

D

interface(接口) 默认是要被实现的, 需要被 public 修饰

🔎编程题

🥝排序子序列

题目描述

牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。
牛牛有一个长度为n的整数数组A,他现在有一个任务是把数组A分为若干段排序子序列,牛牛想知道他最少可以把这个数组分为几段排序子序列.
如样例所示,牛牛可以把数组A划分为[1,2,3]和[2,2,1]两个排序子序列,至少需要划分为2个排序子序列,所以输出2

输入描述

输入的第一行为一个正整数n(1 ≤ n ≤ 10^5)
第二行包括n个整数A_i(1 ≤ A_i ≤ 10^9),表示数组A的每个数字。

输出描述

输出一个整数表示牛牛可以将A最少划分为多少段排序子序列

在这里插入图片描述

解体思路

以 1 2 3 2 2 为例

1 2 3 为非递减序列, 所以划分为1组
由于 2 小于 3, 所以不与 1 2 3 构成非递减序列
2 2 为非递增序列, 所以划分为1组

设计两个方法, 一个为 getBigger(递增), 另一个为 getSmaller(递减)
判断当前元素与它的前一个元素的大小
当前元素 > 前一个, 调用 getBigger(递增)
当前元素 < 前一个, 掉用 getSmaller(递减)
当前元素 == 前一个, i++(让当前元素变为前一个, 当前元素的下一个变为当前元素)

这里代码中数组多开辟了1个空间, 是防止最后一个元素可能没有与前面的元素进行判断的情况
在这里插入图片描述
此时的位置已经到达了数组的末尾, 既不是递增也不是递减, 但是循环结束了

在这里插入图片描述

在这里插入图片描述
根据题目的描述, 输入的值 >= 1, 所以新开辟的空间默认为 0 不会出错

import java.util.Scanner;

//排序子序列
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();// 输入的数字个数
        int[] nums = new int[n + 1];
        int ret = 0;
        for(int i = 0; i < n; i++) nums[i] = sc.nextInt();// 将输入的数字存放到数组中

        for(int i = 1; i < n + 1; i++) {
            if(nums[i] > nums[i - 1]) {// 为递增序列
                i = getBigger(nums, i, n + 1);
                ret++;
            } else if(nums[i] < nums[i - 1]) {// 为递减序列
                i = getSmaller(nums, i, n + 1);
                ret++;
            }
        }
        System.out.println(ret);
    }
    // 递增
    private static int getBigger(int[] nums, int index, int n) {
        for(; index < n; index++) {
            if(nums[index] < nums[index - 1]) {
                break;
            }
        }
        return index;
    }
    // 递减
    private static int getSmaller(int[] nums, int index, int n) {
        for(; index < n; index++) {
            if(nums[index] > nums[index - 1]) {
                break;
            }
        }
        return index;
    }
}

📢题目链接
链接: link


🥝倒置字符串

题目描述

将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I

输入描述

每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100

输出描述

依次输出倒置之后的字符串,以空格分割

在这里插入图片描述

解题思路

去除空格, 逆序输出字符串数组

import java.util.Scanner;

//倒置字符串
public class Main2 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        String str = scan.nextLine();
        String[] strs = str.split(" ");

        int n = strs.length;
        for (int i = n - 1; i >= 0; i--) {
            System.out.print(strs[i] + " ");
        }
    }
}  

📢题目链接

链接: link


🔎结尾

创作不易,如果对您有帮助,希望您能点个免费的赞👍
大家有什么不太理解的,可以私信或者评论区留言,一起加油

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/490958.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTTPS协议介绍

文章目录 一、HTTPS协议的认识二、常见的加密方式1.对称加密2.非对称加密 三、数据摘要四、HTTPS的工作过程探究1.只使用对称加密2.只使用非对称加密3.双方都使用非对称加密4.非对称加密对称加密5.中间人攻击6.引入证书7.非对称加密对称加密证书认证 一、HTTPS协议的认识 HTTP…

【数据库】面试高频问题汇总及详细解答

【C语言部分】面试高频问题汇总及详细解答 【操作系统(Linux)】面试高频问题汇总及详细解答 【计算机网络】面试高频问题汇总及详细解答 本文目录 1. SQL1.1 介绍一下数据库分页1.2 介绍一下SQL中的聚合函数1.3 表跟表是怎么关联的1.4 说一说你对外连接的了解1.5 说说SQL中怎么…

VM虚拟机安装Ubuntu server 22.04网络问题

在使用vm虚拟机安装ubuntu server 22.04的时候会遇到一些网络问题&#xff0c;例如虚拟机内的Ubuntu不能上网&#xff0c;ping www.baidu.com不通&#xff0c;主机使用远程工具不能建立远程连接&#xff0c;Ubuntu ping本地主机不通&#xff0c;本地主机ping虚拟机也不通的问题…

vue3+vite项目优化。

最近开发的一个vue3vitets项目&#xff0c;build后发现体积过大&#xff0c;所以针对于项目体积进行一次优化。 一: 使用rollup-plugin-visualizer 可视化分析包 npm i rollup-plugin-visualizer -S 在vite.config.js中引入 在 plugins里面 然后执行npm run build就自动打开…

最新开源Chatgpt人工智能对话源码系统如何搭建?含详细安装教程分享和源码

人工智能对话系统市场需求正在不断增长。随着人们对智能化、自动化服务的需求不断提高&#xff0c;人工智能对话系统成为越来越多企业和组织的首选解决方案&#xff0c;可以有效提升用户体验、降低成本、提高效率。 一、Chatgpt人工智能对话源码系统定义 ChatGPT是一种基于深…

流量挂机赚钱项目Traffmonetizer

利用闲置电脑/服务器/安卓手机/树莓派来赚点电费 简介 Traffmonetizer是一个来自欧洲的流量挂机平台&#xff0c;类似Peer2profit&#xff0c;满10刀可提现(Paypal、BTC、Payoneer)&#xff0c;注册好像就送5刀&#xff0c;Traffmonetizer不怎么占用CPU和内存以及流量&#x…

初学容器化

1.docker build&#xff0c;ship&#xff0c;run&#xff0c;any app anywhere docker类似运输中的集装箱&#xff0c;可以装任何应用&#xff08;镜像文件&#xff09;&#xff0c;运行到各种服务器上。 docker提供的是进程上的隔离&#xff0c;虚拟机提供的是操作系统资源…

【五一创作】嵌入式Sqlite数据库【基本语法、Sqlite-JDBC、嵌入到Java程序】

目录 前言 基本介绍 Sqlite 对比 MySQL 字段类型 语法 创建表 插入数据 更新数据 查询数据 删除数据 查看建表语句 Sqlite-JDBC 嵌入到Java程序 前言 最近在用JavaFX做一个桌面软件需要用到数据库&#xff0c;但MySQL这种数据库明显只能本地访问&#xff0c;把软…

JVM-0502

垃圾回收 概述 内存的自动分配 垃圾收集&#xff0c;不是J8Va语音的件生产物。早在1968年&#xff0c;第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题&#xff1a; 哪些内存需要回收&#xff1f;什么时候回收&#xff1f;&#xff08;…

双金属复合圆管层间高温接触热阻测试方法的分析和选择

摘要&#xff1a;双金属复合圆管因其优越的特性在越来越多的领域得到广泛应用&#xff0c;而其层间接触热阻是这种圆管作为换热管时的重要性能指标。本文针对这种双金属复合圆管层间接触热阻的测试需求&#xff0c;分析和对比了现有用于接触热阻测试的各种稳态和瞬态方法&#…

网络应用基础 ——(2023新星计划文章一)

一&#xff0c;网络的概念 1.1网络及其带来的好处 &#xff08;1&#xff09;计算机网络是指通过通信设备和通信线路将多台计算机连接起来&#xff0c;以便实现资源共享、信息传递和协同工作的技术和系统。计算机网络是现代信息技术的重要组成部分&#xff0c;已经深入到我们…

代码随想录算法训练营第三十一天 | 贪心1,想不到怎么找局部最优就做不出来

贪心算法理论基础 代码随想录 (programmercarl.com) 贪心算法理论基础&#xff01;_哔哩哔哩_bilibili 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 例如&#xff0c;有一堆钞票&#xff0c;你可以拿走十张&#xff0c;如果想达到最大的金额&#xff…

代码随想录刷题笔记3

文章目录 回溯细节模板题型组合分割子集排列棋盘问题N皇后问题解数独问题 其他 总结 回溯 本质上&#xff1a;穷举 剪枝。回溯法就是解决这种k层for循环嵌套的问题。 for循环横向遍历&#xff0c;递归纵向遍历&#xff0c;回溯不断调整结果集。 注意画出 解空间树-N叉树。 细…

无云服务器,Linux本地快速搭建web网站,并内网穿透发布上线(1)

文章目录 前言1. 本地搭建web站点2. 测试局域网访问3. 公开本地web网站3.1 安装cpolar内网穿透3.2 创建http隧道&#xff0c;指向本地80端口3.3 配置后台服务 4. 配置固定二级子域名5. 测试使用固定二级子域名访问本地web站点 转载自cpolar文章&#xff1a;Linux CentOS本地搭建…

【QT】 Qt高级——Qt自定义标题栏

【QT】 Qt高级——Qt自定义标题栏 一、Qt自定义标题栏简介 QWidget及其子类窗体组件的标题栏受操作系统的控制&#xff0c;即标题栏的界面风格与操作系统的主题风格相同&#xff0c;工程实践中需要开发者自行定义&#xff0c;达到美化应用程序界面的目的。 二、Qt自定义标题…

每日学术速递5.1

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.Putting People in Their Place: Affordance-Aware Human Insertion into Scenes 标题&#xff1a;把人放在他们的位置&#xff1a;可供感知的人类插入场景 作者&#xff1a;Sumit…

项目管理:项目进度跟踪的好处有哪些?

项目进度跟踪主要针对项目计划、任务和项目成员三个方面&#xff0c;即为了了解整个项目计划完成情况、了解项目的实际进展情况、解成员工作完成情况。 项目跟踪可以证明计划是否可执行&#xff0c;可以说明计划是否可以被完成。 在项目执行过程中&#xff0c;我们也可以通过跟…

网络安全合规-Tisax(汽车安全评估讯息交换平台)一

**TISAX&#xff08;汽车安全评估讯息交换平台&#xff08;可信信息安全评估交换平台&#xff09;&#xff09;**是2017年由德国汽车工业联合会(VDA) 联合欧洲网络交换所(ENX) 所推出的资讯交换平台&#xff0c;通过应用欧洲网络交换协会&#xff08;ENX&#xff09;和德国汽车…

rk3568 适配摄像头 (双摄)

rk3568 适配摄像头 (mipi 双摄) rk3568 适配双摄像其实就是逐个适配单摄像头&#xff0c;只是两颗摄像头的数据总线可能不同(cifmipi)&#xff0c;也可能相同(mipi(2lane) x 2)。几乎相同的上电时许&#xff0c;不同的时钟信号和总线协议决定加载过程会略有不同。 提示&#…

CSDN周赛第49期 - 也谈马拉车

前言 C站的周赛已经很久没有新题了&#xff0c;已考过的题目我差不多都写过题解&#xff0c;若再重复写类似的文章&#xff0c;反而会降低博文质量分&#xff0c;而想要换个角度&#xff0c;却又难以找到动笔的欲望。所以虽然比赛发生在五一假期之前&#xff0c;但直到现在五一…