【java】笔试强训Day2【倒置字符串与排序子序列】
目录
⛳选择题
1.A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明:
2.下面代码将输出什么内容:( )
3.阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有( )
4.在使用super和this关键字时,以下描述正确的是( )
5.如下代码的结果是什么 ? ( )
6.如下代码的输出结果是什么?( )
7.下列哪一种叙述是正确的( )
8.下列说法正确的有:( )
9.选项中哪一行代码可以替换 //add code here 而不产生编译错误
10.在使用 interface 声明一个外部接口时,只可以使用( )修饰符修饰该接口。
🔥编程题
1.倒置字符串
2.排序子序列
⛳选择题
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 啦~
🔎思路解析:根据题目可以写出代码
class A {}
class B extends A { //A 派生出子类 B}
class C extends B { //B 派生出子类 C}
public class Test {public static void main(String[] args) {A a0=new A();A a1=new B();//父类引用,引用子类对象A a2=new C();//此时A虽然不是C的直接父类,但是C依然间接继承了A的内容的,此时可以发生向上转型的。}
}
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 啦~
🔎思路解析:上述代码为 调用 admin 函数,传入“Admin” ,此时 userId 拿到的就是 Admin
toLowerCase:将大写变成小写
❗❗注意:toLowerCase 在进行大写变小写的时候会产生一个新的对象,此时再与“admin”比较是拿到这个新的对象与之比较,所以最终结果为 false
例如:
String s1 = "abcd";String s2 = s1.toLowerCase();System.out.println(s1 == s2);//trueSystem.out.println(s1.toLowerCase() == "abcd");//true
✅此时就是因为 s1 在进行大小写转换的时候,它本身就是一个小写,这时候小写转换为小写的时候,就不会 new 一个新的对象,这时候的结果就是TRUE
🔥总结:在使用 toLowerCase 进行比较的时候:
如果是发生了从大写变成小写的时候:toLowerCase 会 new 一个新的对象,这时候比较就是 false
如果原本就是小写,使用 toLowerCase 再变成小写:这时候t oLowerCase 就不会 new 一个新的对象,这时候比较就是 true
3.阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有( )
package NowCoder;
class Test {public static void hello() {System.out.println("hello");}
}
public class MyApplication {public static void main(String[] args) {
// TODO Auto-generated method stubTest test=null;test.hello();}
}
A 能编译通过,并正确运行
B 因为使用了未初始化的变量,所以不能编译通过
C 以错误的方式访问了静态方法
D 能编译通过,但因变量为null,不能正常运行
🙈大家觉得答案是什么呢
🙉答案是 A 啦~
🔎思路解析:
Test test=null;//引用null,不指向任何对象
理论上这个代码应该会发生一个空指针异常, 但是此时的 hello 是一个静态方法 (静态方法的调用不依赖任何对象),因此这个代码可以正常运行
4.在使用super和this关键字时,以下描述正确的是( )
A 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过B super()和this()不一定要放在构造方法内第一行C this()和super()可以同时出现在一个构造函数中D this()和super()可以在static环境中使用,包括static方法和static语句块
🙈大家觉得答案是什么呢
🙉答案是 A 啦~
🔎思路解析:super()和this()一定要放在构造方法内第一行
对于super()和this()的理解,可以看我的博客: 继承的博客链接
✅【相同点】
1. 都是 Java 中的关键字
2. 只能在类的非静态方法中使用,用来访问非静态成员方法和字段
3. 在构造方法中调用时,必须是构造方法中的第一条语句,并且不能同时存在
❎【不同点】1. this 是当前对象的引用,当前对象即调用实例方法的对象, super 相当于是子类对象中从父类继承下来部分成员的引用
2. 在非静态成员方法中, this 用来访问本类的方法和属性, super 用来访问父类继承下来的方法和属性
3. 在构造方法中: this(...) 用于调用本类构造方法, super(...) 用于调用父类构造方法,两种调用不能同时在构造方法中出现
4. 构造方法中一定会存在 super(...) 的调用,用户没有写编译器也会增加,但是 this(...) 用户不写则没有
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 啦~
🔎思路解析:本题主要考察继承关系上的执行顺序。
当子类继承父类之后,在实例化子类对象的时候,先要调用父类的构造方法,来帮助父类初始化。上述代码相当于如下代码:
class Base {Base() {System.out.print("Base"); }
}public class Alpha extends Base {Alpha() {super();}public static void main( String[] args ) {new Alpha();//1//调用父类无参的构造方法new Base();//2}
}
编译器会默认提供如上的子类的构造方法。所以,注释1处输出的结果为Base,注释2处输出的结果为:Base 最终结果是BaseBase。故:选择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 在定义的时候,不能定义局部变量,static 定义的静态变量一定是成员变量
在普通方法的内部,一定不可以出现 static
在静态方法的内部,也不可以出现 static (一个变量被静态变量修饰,这个变量叫做类变量,属于类,是不能放在方法内部)
7.下列哪一种叙述是正确的( )
A abstract修饰符可修饰字段、方法和类
B 抽象方法的body部分必须用一对大括号{ }包住
C 声明抽象方法,大括号可有可无
D 声明抽象方法不可写出大括号
🙈大家觉得答案是什么呢
🙉答案是 D 啦~
🔎思路解析:
A、abstract 不可以修饰符可修饰字段
B、抽象方法的body部分不可以用一对大括号{ }包住,{ }包住就变成了一个具体的实现
public abstract void func();//抽象方法
C、声明抽象方法,大括号必须没有
8.下列说法正确的有:( )
A class中的constructor不可省略
B constructor必须与class同名,但方法不能与class同名
C constructor在一个对象被new 时执行
D 一个class只能定义一个constructor
🙈大家觉得答案是什么呢
🙉答案是 C 啦~
🔎思路解析:
A、class 中的 constructor 可以省略,这时候编译器会默认提供一个不带参数的构造方法
B、方法可以与class同名
D、一个class可以定义多个constructor
9.选项中哪一行代码可以替换 //add code here 而不产生编译错误
public abstract class MyClass {public int constInt = 5;//add code herepublic void method() {}
}
A public abstract void method(int a);
B consInt=constInt+5;
C public int method();
D public abstract void anotherMethod(){}
🙈大家觉得答案是什么呢
🙉答案是 A 啦~
🔎分析代码:这是一个抽象类,定义了一个成员变量=5,并且写了一个方法
A、A的方法与原来的方法构成重载
B、成员变量的运算一定要放在方法里边
C、普通方法应该有大括号,对于C的代码如果加上 abstract,这个代码也是错误的,与原方法同名
D、抽象方法不可以有大括号
10.在使用 interface 声明一个外部接口时,只可以使用( )修饰符修饰该接口。
A private B protected C private protected D public
🙈大家觉得答案是什么呢
🙉答案是 D 啦~
🔎思路解析:接口一定要被实现,默认为 public 修饰
🔥编程题
1.倒置字符串
牛客网链接:倒置字符串
题目:将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
输入描述:每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100
输出描述:依次输出倒置之后的字符串,以空格分割
示例1
输入:I like beijing.
输出:beijing. like I
思路:1.整体逆置 2.每一部分逆置


import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {//逆置public static void reverse(char[] arr, int start, int end) {while (start < end) {char tmp = arr[start];arr[start] = arr[end];arr[end] = tmp;start++;end--;}}public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String str = scanner.nextLine();//转换字符串为数组char[] arr = str.toCharArray();//整体倒置 I like beijing. --> .gnijieb ekil Ireverse(arr, 0, arr.length - 1);int start = 0;//开始的位置while (start < arr.length) {int end = start;//j < arr.length——防止越界while (end < arr.length && arr[end] != ' ') {end++;}//不是最后一个单词if (end < arr.length) {reverse(arr, start, end-1);start = end + 1;//此时下一个开始的位置为空格+1(end+1)} else {//是最后一个单词reverse(arr, start, end-1);start = end;//此时开始=结尾,结束}}//转化为字符串String ret = new String(arr);System.out.println(ret);}
}
2.排序子序列
牛客网链接:排序子序列
牛牛定义排序子序列为一个数组中一段连续的子序列,并且这段子序列是非递增或者非递减排序的。牛牛有一个长度为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
输入
6
1 2 3 2 2 1
输出
2
🔎解题思路:
import java.util.Scanner;// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[] arr = new int[n +1]; //多给数组一个长度,避免遍历不到最后一个元素for (int i = 0; i < n; i++) {arr[i] = scanner.nextInt();}int i = 0;int count = 0;while (i < n) {//三种情况//1.非递减序列if (arr[i] < arr[i + 1]) {while (i < n && arr[i] < arr[i + 1]) {i++;}//此时为一个序列count++;i++;} else if (arr[i] == arr[i + 1]) {{//2.相等既可以是非递增也可以是非递减,所以可以不处理,直接加一i++;}} else {while (i < n && arr[i] >= arr[i + 1]) {i++;}//此时为一个序列count++;i++;}}System.out.println(count);}
}相关文章:
【java】笔试强训Day2【倒置字符串与排序子序列】
目录 ⛳选择题 1.A 派生出子类 B , B 派生出子类 C ,并且在 java 源代码有如下声明: 2.下面代码将输出什么内容:( ) 3.阅读如下代码。 请问,对语句行 test.hello(). 描述正确的有&…...
【Linux】基础IO(一) :文件描述符,文件流指针,重定向
🍎作者:阿润菜菜 📖专栏:Linux系统编程 码字不易,请多多支持😘😘 这是目录重新认识文件系统内部的文件操作我们C语言的文件操作系统内部的文件操作OS一般会如何让用户给自己传递标志位的&#x…...
【C语言】通讯录的实现(静态版)
【C语言】通讯录的实现(静态版一.前言1.前期准备a.菜单实现b.联系人结构体的构建c.菜单选项的功能d.#define 的定义2.功能的实现a.初始化通讯录b.增加联系人c.显示通讯录d.查找联系人e.修改联系人d.删除联系人3. 总代码test.ccontact.ccontact.h一.前言 本文将会用c语言实现一…...
IDEA一键构建Docker镜像
效果 Idea右击Dockerfile文件,直接在服务器构建docker镜像 开整 1、下载docker插件 2、编写Dockerfile文件 # 基础镜像 FROM openjdk:8-jdk-alpine # 工作目录 WORKDIR /opt/apps/gateway/logs/ # 文件拷贝,把target目录下的jar报拷贝到镜像的/APP/目录下 ADD…...
QT的使用3:鼠标事件
鼠标事件0 事件1 需求2 查看控件的事件处理函数3 UI设计4 新建一个类,继承QLabel5 对已有对象进行类型提升6 重写事件处理函数7 项目进一步拓展(1)获取鼠标按键(2)鼠标移动(3)显示多个按键&…...
线程安全之单例模式
文章目录前言一.什么是单例模式二.在java中的单例模式2.1 饿汉式的介绍2.2 懒汉式的介绍三 懒汉式的单例模式,线程不安全的解决方式3.1 造成线程不安全的原因3.2 解决方案3.3 总结前言 这篇文章,我们会介绍一下单例模式,但这里的单例模式,不是我们所说的设计模式,当然听到设计…...
“二分”带来“十分”快感——二分思想的奥秘解析
文章目录无处不在的二分思想二分查找惊人的查找速度二分查找的递归与非递归实现1.循环退出条件2.mid的取值3.low和high的更新最后说一句🐱🐉作者简介:大家好,我是黑洞晓威,一名大二学生,希望和大家一起进…...
一台服务器最大能支持多少条 TCP 连接?问倒一大片。。。
一台服务器最大能打开的文件数 限制参数 我们知道在Linux中一切皆文件,那么一台服务器最大能打开多少个文件呢?Linux上能打开的最大文件数量受三个参数影响,分别是: fs.file-max (系统级别参数)…...
蓝桥杯嵌入式RTC实时时钟
文章目录 前言一、RTC是什么二、cubemx的配置三、函数的使用总结前言 本篇文章将给大家介绍RTC实时时钟。 一、RTC是什么 STM32的实时时钟RTC是一个独立的定时器,RTC时钟内部依靠BCD码计数。RTC实时时钟提高时钟、闹钟、日历功能。RTC功耗较低,可以使用在低功耗设备上。 …...
Centos7 挂载 ISO镜像
切到mnt目录:cd /mnt mkdir iso确保centos镜像在服务上存在,磁盘挂载mount -o loop /home/xx.iso /mnt/iso查看是否挂载成功df -h出现红色的部分表示挂载成功修改源切目录并修改yum源:cd /etc/yum.repos.dllvim Centos-Base.repo修改后yum clean allyum list安装lrz…...
三级数据库备考--数据库应用系统开发方法第一次练习(刷题库知识点记录)
1.数据库的三级模式由外模式、模式、内模式构成。外模式是用户可见的部分数据的存在形式;模式可以等价为全体数据的逻辑结构且用户不可见,是三级模式的中间部分;内模式对应数据库的物理结构和存储方式。当模式改变时,由数据库管理…...
免费空间主机是什么?怎么申请免费空间主机
随着网络的普及,越来越多的人开始使用免费空间。这种新的商业模式也让一些商家得以获利。 1:免费空间的概念 免费空间是指允许您自由使用的网络服务。这意味着它可以被任何人用来创建、编辑和发布网站内容或应用程序,而无需考虑任何付费业务协…...
网络安全文章汇总导航(持续更新)
网络安全文章汇总导航(持续更新)1.基础篇(已完结):2.工具篇(持续更新):3.靶场安装(持续更新,但不确定):4.权限提升(持续更…...
AI-TestOps —— 软件测试工程师的一把利剑
写在前面软件测试的前世今生测试工具开始盛行AI-TestOps 云平台● AI-TestOps 功能模块● AI-TestOps 自动化测试流程写在前面 最近偶然间看到一句话:“软件测试是整个 IT 行业中最差的岗位”。这顿时激起了我对软件测试领域的兴趣,虽然之前未涉及过软件…...
Linux内核进程管理原理详解
前言:Linux内核里大部分都是C语言。建议先看《Linux内核设计与实现(Linux Kernel Development)》,Robert Love,也就是LKD。Linux是一种动态系统,能够适应不断变化的计算需求。Linux计算需求的表现是以进程的通用抽象为中心的。进程可以是短期…...
通过Linux串口实现树莓派与电脑通信
目录 一 串口说明 二 USB—TTL模块 ● usb-ttl模块接口 三 串口通信常用的API 四 修改串口的配置文件 五 串口通信代码验证 ● 发送一个字符/字符串到串口 ● 树莓读取串口数据(字符) ● 代码拓展(双方) 一 串口…...
全球变暖 蓝桥杯 178
题目描述你有一张某海域 NxN 像素的照片,"."表示海洋、"#"表示陆地,如下所示:........##.....##........##...####....###........其中"上下左右"四个方向上连在一起的一片陆地组成一座岛屿。例如上图就有 2 座…...
Java现在好找工作吗?
Java到2023年已经28岁了,可能你会怀疑它是否还一如当年一样的强大,在应用层领域独占鳌头。但是基于Java庞大的市场占有率和需求,它依然在保持着更新迭代,依然是最常用的底层开发语言,基于其安全性、开放性、稳定性和跨…...
Flink 第1章 基础介绍和特性
一 Flink概念 1.1 Flink的概念 Flink是一个框架和分布式处理引擎,用于对无界和有解数据流进行状态计算。如下图所示: 1.2 Flink的应用场景 1.3 Flink的目标 1.高吞吐量 2.低延迟 3,结果的准确性和良好的容错性。 1.4 Flink与spark的区别…...
docker 安装 nginx无坑版
一. 拉取镜像 docker pull nginx二. 创建挂载目录 mkdir -p /usr/local/nginx/conf mkdir -p /usr/local/nginx/log mkdir -p /usr/local/nginx/html三. 从nginx容器里复制nginx的配置文件到主机里 创建个容器 docker run --name nginx -p 80:80 -d nginx将容器内的配置文件…...
Live Avatar素材准备全攻略:选择什么样的图片和音频效果最好
Live Avatar素材准备全攻略:选择什么样的图片和音频效果最好 1. 引言 1.1 数字人生成中的素材重要性 在数字人生成过程中,输入素材的质量直接影响最终输出效果。Live Avatar作为阿里联合高校开源的高质量数字人模型,虽然技术先进ÿ…...
SenseVoice-Small模型在.NET生态中的集成实践
SenseVoice-Small模型在.NET生态中的集成实践 1. 项目背景与价值 语音识别技术正在快速融入各种应用场景,从智能客服到会议转录,从语音助手到内容创作,处处都能看到它的身影。对于.NET开发者来说,如何在熟悉的生态中集成高质量的…...
把股票数据能力接进 AI:stock-sdk-mcp 的实践整理
起因 如果你经常用 Cursor、Claude 这类 AI 工具,应该已经能明显感觉到它们在通用问答和代码任务上越来越强了。但一旦问题变成金融数据查询,比如“看看贵州茅台今天的行情”“把最近 60 个交易日的日 K 线拉出来,再判断一下 MACD 和 RSI”&…...
Windows 10/11防火墙设置:如何快速开启ICMP协议实现Ping功能(详细图文)
Windows系统ICMP协议配置全指南:从基础原理到高阶应用 在IT运维和开发工作中,网络连通性测试是最基础却又最频繁的需求之一。想象一下这样的场景:你正在部署一个关键服务,却发现客户端无法连接到服务器;或是远程协助同…...
KubeSphere Core 离线部署实战:从镜像搬运到私有仓库配置
1. 离线部署KubeSphere Core的核心挑战 在企业内网环境中部署KubeSphere Core时,最大的障碍就是如何解决容器镜像的获取问题。我去年给某金融机构做私有云改造时就遇到过这种情况——他们的生产环境完全隔离,所有服务器都无法直接访问公网。当时为了部署…...
STM32串口环形队列实现与优化
## 1. STM32串口环形队列实现方案### 1.1 环形队列数据结构设计环形队列(Ring Buffer)是嵌入式系统中处理串口数据流的经典方案,其核心数据结构定义如下:c #define RING_BUFF_SIZE 256 // 根据实际需求调整缓冲区大小typedef str…...
WebRtcStreamer避坑指南:解决RTSP视频流延迟高、卡顿的7个优化方案
WebRTCStreamer实战优化:7种方案彻底解决RTSP流媒体高延迟与卡顿问题 当我们在监控系统或视频会议中遇到画面卡成PPT、声音延迟到像看译制片时,那种抓狂感技术人员都懂。最近在部署某智慧园区项目时,我们通过WebRTCStreamer将200路RTSP监控流…...
香橙派Ubuntu镜像烧录与系统迁移实战指南
1. 香橙派与Ubuntu镜像的完美组合 香橙派作为国产开源硬件中的佼佼者,凭借其出色的性价比和丰富的接口,已经成为很多开发者和创客的首选。而Ubuntu作为最受欢迎的Linux发行版之一,以其稳定性和易用性赢得了大量用户的青睐。将这两者结合起来&…...
OpenClaw日志分析:Qwen3-32B每日自动汇总服务器异常事件
OpenClaw日志分析:Qwen3-32B每日自动汇总服务器异常事件 1. 为什么需要自动化日志分析 作为一名运维工程师,我每天早晨的第一项工作就是检查服务器日志。Nginx的错误日志、系统内核日志、应用服务的异常输出……这些文件分散在不同的目录,格…...
EMQX Dashboard 5.1新手指南:从安装到安全配置的完整流程
EMQX Dashboard 5.1新手指南:从安装到安全配置的完整流程 在物联网和实时消息传递领域,EMQX作为一款高性能的MQTT消息服务器,已经成为众多企业构建可靠物联网平台的首选。而EMQX Dashboard作为其内置的Web管理控制台,在5.1版本中迎…...

