Java经典笔试题—day06

news2024/11/26 14:54:24

Java经典笔试题—day06

  • 🔎选择题
  • 🔎编程题
    • 🥝不要二
    • 🥝把字符串转换成整数
  • 🔎结尾

🔎选择题

(1)关于抽象类与最终类,下列说法错误的是?

A. 抽象类能被继承,最终类只能被实例化。
B. 抽象类和最终类都可以被声明使用
C. 抽象类中可以没有抽象方法,最终类中可以没有最终方法
D. 抽象类和最终类被继承时,方法可以被子类覆盖

D

A, D.
最终类又称为密封类, 是由 final 修饰, 因此最终类只能被实例化
抽象类只能被继承

(2)在Java中下面Class的声明哪些是错误的?

A. public abstract final class Test { abstract void method(); }
B. public abstract class Test { abstract final void method(); }
C. public abstract class Test { abstract void method() { } }
D. public class Test { final void method() { } }

A, B, C

A, B. final 与 abstract 不能同时出现
C. abstract 修饰的方法不能有 { }

(3)已知表达式int m[]={0,1,2,3,4,5,6};下面哪个表达式的值与数组下标量最大值相等?

A. m. length()
B. m. length-1
C. m. length()+1
D. m. length+1

B

(4)下列哪个对访问修饰符作用范围由大到小排列是正确的?

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

D

public > protected > default(默认) > private
在这里插入图片描述
图片来自网络

(5)有六个元素6,5,4,3,2,1顺序入栈,问下列哪一个不是合法的出栈序列?()

A. 5 4 3 6 2 1
B. 4 5 3 1 2 6
C. 3 4 6 5 2 1
D. 2 3 4 1 5 6

C

在这里插入图片描述

(6)阅读下列程序,选择哪一个是正确的输出结果

class HelloA{
	public HelloA() {
 		System.out.println("I’m A class ");
 	}
 	static {
 		System.out.println("static A");
 	}
}
public class HelloB extends HelloA{
 	public HelloB() {
		System.out.println("I’m B class");
 	}
 	static {
 		System.out.println("static B");
 	}
 	public static void main (String[] args){
 		new HelloB();
 	}
}

A. static A I’m A class static B I’m B class
B. I’m A class I’m B class static A static B
C. static A static B I’m A class I’m B class
D. I’m A class static A I’m B class static B

C

执行顺序
静态代码块(static 修饰的代码块) > 构造块(类内部, 构造方法外部的代码块) > 构造方法
其中静态代码块不管 new 多少个对象, 都只会执行一次
由于子类 HelloB 继承父类 HelloA, 所以先去执行父类的静态代码块, 再去执行子类的静态代码块. 先去执行父类的构造方法, 再去执行子类的构造方法

(7)执行下列代码的输出结果是( )

public class Demo{
 	public static void main(String args[]){
   int num = 10;
   System.out.println(test(num));
	}
	public static int test(int b) {
   try {
    b += 10;
    return b;
   } catch(RuntimeException e) {
   
   } catch(Exception e2) {
   
   } finally {
    b += 10;
    return b;
   }
  }
}

A. 10
B. 20
C. 30
D. 40

C

finally 一定会被执行, 所以 b = 30

(8)下列关于构造方法的叙述中,错误的是()

A. java语言规定构造方法名与类名必须相同
B. java语言规定构造方法没有返回值,但不同void声明
C. java语言规定构造方法不可以重载
D. java语言规定构造方法只能通过new自动调用

C, D

C. 构造方法可以重载(一个类中可以有多个构造方法)
D. 子类继承父类时, 也可以通过 super() 调用父类的构造方法

(9)下面哪些赋值语句是正确的()

A. long test=012
B. float f=-412
C. int other =(int)true
D. double d=0x12345678
E. byte b=128

A, B. D

C. 布尔类型无法强转为数值
E. byte 类型的取值范围为 -128 ~ 127
在这里插入图片描述

(10)下列代码的输出结果是 ( )

boolean b = true ? false : true == true ? false : true;
System.out.println(b);

A. true
B. false
C. null
D. 空字符串

B

当表达式1 的结果为 true 时, 执行表达式2
当表达式1 的结果为 false 时, 执行表达式3
在这里插入图片描述

🔎编程题

🥝不要二

题目描述

二货小易有一个W*H的网格盒子,网格的行编号为0 ~ W-1,网格的列编号为0 ~ H-1
每个格子至多可以放一块蛋糕,任意两块蛋糕的欧几里得距离不能等于2。

对于两个格子坐标(x1,y1),(x2,y2)的欧几里得距离为:
( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根
小易想知道最多可以放多少块蛋糕在网格盒子里。

输入描述

每组数组包含网格长宽W,H,用空格分割.(1 ≤ W、H ≤ 1000)

输出描述

输出一个最多可以放的蛋糕数

在这里插入图片描述

解题思路

根据题意得知这是一个 W * H 大小的矩阵

题目要求任意两块蛋糕的欧几里得距离不能等于2
即 ( (x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) ) 的算术平方根不等于2
即 (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2) 不等于4

  • 两数相加的和为4有下列几种可能
    • 1 + 3 = 4
    • 3 + 1 = 4
    • 2 + 2 = 4
    • 0 + 4 = 4
    • 4 + 0 = 4

对于 1 + 3 = 4, 因为矩阵的行编号为 0 ~ W-1, 列编号为 0 ~ H-1, 所以不可能出现(y1 - y2) = 3 \sqrt 3 3

对于 3 + 1 = 4, 因为矩阵的行编号为 0 ~ W-1, 列编号为 0 ~ H-1, 所以不可能出现(x1 - x2) = 3 \sqrt 3 3

对于 2 + 2 = 4, 因为矩阵的行编号为 0 ~ W-1, 列编号为 0 ~ H-1
所以不可能出现(x1 - x2) = 2 \sqrt 2 2 , (y1 - y2) = 2 \sqrt 2 2

对于 0 + 4 = 4, 得出 x1 == x2, y1 - y2 = 2

对于 4 + 0 = 4, 得出 y1 == y2, x1 - x2 = 2

注意, y1 - y2 = -2, 其平方的值也是4
因为遍历矩阵时是从(0, 0) 开始遍历, 所以只需要计算当前的列 + 2的结果即可
x1 - x2 同理

import java.util.Scanner;

//不要二
public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        while (scan.hasNextInt()) {
            int W = scan.nextInt();//列
            int H = scan.nextInt();//行
            int[][] matrix = new int[W][H];

            getCnt(W, H, matrix);
        }
    }

    // 计算蛋糕数
    private static void getCnt(int w, int h, int[][] matrix) {
        int cnt = 0;
        for (int i = 0; i < w; i++) {
            for (int j = 0; j < h; j++) {
            	// 判断当前位置能否防止蛋糕
                if(matrix[i][j] == 0) {
                    cnt++;
                    // 防止越界
                    // 将当前行 + 2 设置为1表示不能该位置不能放置蛋糕
                    if(i + 2 < w) matrix[i + 2][j] = 1;
                    // 将当前列 + 2 设置为1表示不能该位置不能放置蛋糕
                    if(j + 2 < h) matrix[i][j + 2] = 1;
                }
            }
        }
        System.out.println(cnt);
    }
}

📢题目链接
链接: link


🥝把字符串转换成整数

题目描述

将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。
数值为 0 或者字符串不是一个合法的数值则返回 0

注意:
①字符串中可能出现任意符号,出现除 +/- 以外符号时直接输出 0
②字符串中可能出现 +/- 且仅可能出现在字符串首位。

输入描述

输入一个字符串,包括数字字母符号,可以为空

输出描述

如果是合法的数值表达则返回该数字,否则返回0

在这里插入图片描述

解题思路

定义 sum 用于表示返回的结果
定义 judge 判断给定的字符串是否包含负号
定义 idx 判断第 0 位是否为符号位

从字符串的不是符号位开始遍历
如果当前的字符不是数字, 返回0
当前的字符是数字, 将当前的结果保存到 sum 中

public static int StrToInt(String str) {
        if(str == null || str.length() == 0 || str.equals("0")) return 0;
        char[] chs = str.toCharArray();
        int sum = 0, judge = 1, n = chs.length, idx = 0;
        // 判断是否为数字
        if(!Character.isDigit(chs[0])) {
            // 既不是符号, 也不是数字
            if (chs[0] != '+' && chs[0] != '-') {
                return 0;
            } else {
                if(chs[0] == '-') judge = -1;
                idx = 1;
            }
        }
        for (int i = idx; i < n; i++) {
            if(!Character.isDigit(chs[i])) return 0;
            sum = sum * 10 + chs[i] - '0';
        }
        return judge < 0 ? ~sum + 1 : sum;
 }

📢题目链接
链接: link


🔎结尾

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

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

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

相关文章

Python、Pytest、Allure、Selenium和Jenkins实现自动化测试集成实例

下方查看历史精选文章 重磅发布 - 自动化框架基础指南pdfv1.1大数据测试过程、策略及挑战 测试框架原理&#xff0c;构建成功的基石 在自动化测试工作之前&#xff0c;你应该知道的10条建议 在自动化测试中&#xff0c;重要的不是工具 本文将介绍如何使用Python、Pytest、Allur…

燃气巡检系统

燃气管网检查是整个管网可靠运行的重要保证&#xff0c;尤其是加强天然气管道巡检管理更是重中之重。要做好管网维护工作&#xff0c;必须认真把握好每个环节&#xff0c;每个过程&#xff0c;每个细节&#xff0c;认真落实管网巡维制度等&#xff0c;而通过凡尔码管理系统可使…

程序员痛心流涕自述:“因为把自己代码给了别人,我亲手断送了自己的前程”

在求职的过程中&#xff0c;一般都会有投递简历、笔试、面试以及背调的环节&#xff0c;而在这几个环节中折戟沉沙的人也着实不少。 不少人觉得&#xff0c;在求职时简历需要优化&#xff0c;背调不能有瞒报、捏造的情况&#xff0c;而笔试面试则是纯纯的要靠硬实力。 虽然说…

MySQL基础(二十六)索引的创建与设计原则

1. 索引的声明与使用 1. 1 索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 从功能逻辑上说&#xff0c;索引主要有 4 种&#xff0c;分别是普通索引、唯一索引、主键索引、全文索引。 按照物理实现方式&#xff0c;索引可以分…

【Linux】shell编程之循环语句

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、循环语句二、for循环语句1.for 语句的结构2.for语句应用示例 三、while 循环语句1.while 循环语句结构2.while语句应用示例 四、until 循环五、跳出循环六、死循…

【Linux】信号的保存

信号的小细节真的很多~ 文章目录 前言一、信号的保存总结 前言 首先我们先引出一个新的概念&#xff0c;叫核心转储。linux系统提供了一种能力&#xff0c;操作系统可以将一个进程在异常的时候将核心代码部分进行核心转储&#xff0c;将内存中进程的相关数据全部dump到磁盘中&…

新版ripro全站美化子主题美化包使用说明手册

前言: 安装 Ripro 前,首先是需要先安装好 WordPress 主程序,因为 Ripro和美化包只是 WordPress 的一枚主题而已! 如何安装 WordPress 并不在本教程范围内,建议百度 如何安装好 WordPress ,但是还是想建议一下,尽量选择 Linux+php+nginx 的机器来安装 WordPress! 安装…

win部署CAS服务并使用

前提描述&#xff1a;通过本次了解cas是个什么东西&#xff0c;并使用它。 cas为oss(单点登录)的一种实现方案。要实现cas单点登录&#xff0c;首先需要部署cas的server服务。 CAS是Central Authentication Service的缩写&#xff0c;中央认证服务&#xff0c;。 一、安装CAS…

若依管理系统RuoYi-Vue:权限系统设计详解

文章目录 摘要数据库表结构设计菜单管理目录、菜单和按钮的区别菜单权限 api接口权限配置方法PreAuthorize注解介绍数据权限 前端vue权限拦截菜单权限按钮权限 摘要 若依&#xff08;RuoYi&#xff09;是一款基于Spring Boot和Vue.js开发的快速开发平台&#xff0c;它的权限管…

今天面了个阿里拿25k出来的小哥,让我见识到了什么是测试天花板

2022年堪称大学生就业最难的一年&#xff0c;应届毕业生人数是1076万。失业率超50%&#xff01; 但是我观察到一个数据&#xff0c;那就是已经就业的毕业生中&#xff0c;计算机通信等行业最受毕业生欢迎&#xff01; 计算机IT行业薪资高&#xff0c;平均薪资是文科其他岗位的…

优秀CRM系统的四个条件

如今&#xff0c;构建“以客户为中心”的经营模式&#xff0c;是许多企业提升竞争力的核心战略。CRM系统能够管理客户关系&#xff0c;提高销售线索转化率&#xff0c;帮助企业实现业绩增长。那么众多品牌中&#xff0c;CRM系统哪家公司做得更好&#xff1f; CRM做得好有哪几个…

Vue换肤主题

拷贝颜色选择组件 **ThemePicker <template><!-- navabar的换肤组件 --><el-color-pickerv-model="theme":predefine="[#409EFF,

智慧校园水电节能监管系统

现阶段各高校用电设备量多范围广&#xff0c;包含寝室、办公室、教室、会议厅、试验室、公共图书馆、运动场馆、饭堂、路面、园林绿化等地方&#xff0c;能耗极大。而且大多数节能意识薄弱&#xff0c;欠缺科学合理、科学合理的规章制度开展监管&#xff0c;造成电力能源很多消…

达索的全面的三维设计和产品开发工具CATIA V5-6R 2020版本下载与安装配置教程

目录 前言一、CATIA 安装二、CATIA更新包安装三、使用配置四、帮助文档安装&#xff08;非必要&#xff09;总结 前言 Dassault Systemes公司的CATIA软件是一种基于计算机辅助设计&#xff08;CAD&#xff09;和计算机辅助制造&#xff08;CAM&#xff09;的软件&#xff0c;用…

Vue(组件间通信:props、自定义事件、全局事件总线、消息订阅与发布)

一、props props不仅可以实现父给子传递信息&#xff0c;还可以进行子给父传递信息 1.父给子传递信息&#xff1a; 父组件中给子组件实例传递信息 子组件利用props进行接收组件传递信息&#xff08;接收方式有三种&#xff1a;数组、对象、配置对象&#xff09; 2.子给父传递…

【表面缺陷检测】基于yolov5的布匹表面缺陷检测(附代码和数据集)

写在前面: 首先感谢兄弟们的订阅,让我有创作的动力,在创作过程我会尽最大能力,保证作品的质量,如果有问题,可以私信我,让我们携手共进,共创辉煌。 路虽远,行则将至;事虽难,做则必成。只要有愚公移山的志气、滴水穿石的毅力,脚踏实地,埋头苦干,积跬步以至千里,就…

Mybatis Plus 入门 简单的CRUD 使用详解 条件查询 分页查询 DML操作 MP代码生成器

Mybatis Plus入门 MP是 MybatisPlus&#xff0c;简称MP&#xff0c;是一个 Mybatis 的增强工具&#xff0c;在 Mybatis 的基础上只做增强不做改变。MP为简化开发、提高效率而生。 它已经封装好了单表curd方法&#xff0c;我们直接调用这些方法就能实现单表CURD。 注意&#xf…

一分钟图情论文:《AIGC驱动的智慧图书馆转型:框架、路径与挑战》

一分钟图情论文&#xff1a;《AIGC驱动的智慧图书馆转型&#xff1a;框架、路径与挑战》 AIGC&#xff08;Artificial Intelligence Generated Content&#xff09;是一种全新的生产方式&#xff0c;利用人工智能技术自动生成文本、图片、语音、视频甚至虚拟现实等各种形式的数…

5 创建映射

5 映射 上边章节安装了ik分词器&#xff0c;如果在索引和搜索时去使用ik分词器呢&#xff1f;如何指定其它类型的field&#xff0c;比如日期类型、数 值类型等。 本章节学习各种映射类型及映射维护方法。 5.1 映射维护方法 1、查询所有索引的映射&#xff1a; GET&#xf…

【MCAL_UART】-1.2-图文详解RS232,RS485和MODBUS的关系

目录 1 UART&#xff0c;RS232和RS485通信拓扑 2 什么是RS232 2.1 RS232标准的演变 2.2 RS232标准讲了哪些 2.2.1 RS232通信的电平 2.2.2 RS232通信的带宽 2.2.3 RS232通信距离 2.2.4 RS232通信的机械接口 3 什么是RS485 3.1 RS485标准的演变 3.2 RS485标准讲了哪些…