【nowcoder】笔试强训Day2

news2024/11/20 12:28:19

目录

一、选择题

二、编程题

2.1排序子序列

2.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行的声明都是正确的

A类当然可以用A类引用创造A类的实例。

根据天然的向上转型,A的子类以及A的子类的子类,都可以用A类引用创造通过子类实例。

所以正确答案是 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 编译错误

“==”进行的是两个变量数值的比较,对于基本数据类型来说比较的就是基本数值是否相等,对于引用数据类型来说比较的是两个引用是否指向同一个对象(即地址是否相同)。

equals方法进行的是两个类对象的属性值比较。

这道题中考察的就是对于==的理解,toLowerCase表示将该字符串全部大写,但是创建的是新的对象,两个对象地址不同。

所以正确答案是 B 

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 stub
        Test test=null;
        test.hello();
    }
}

A 能编译通过,并正确运行

B 因为使用了未初始化的变量,所以不能编译通过

C 以错误的方式访问了静态方法

D 能编译通过,但因变量为null,不能正常运行

因为Test类的hello方法时静态的,所以是属于类的,当实例化该类的时候,静态会被优先加载而且只加载一次,所以不受实例化映像,只要是使用到了Test类,都会加载静态hello方法。

在这道题中hello方法时pubilc修饰符修饰的,所以在MyApplication中也能调用该方法,即使Test test=null,也会加载静态方法。

所以正确答案是

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

super()是子类构造调用父类的构造方法,this()是在同一个类中无参构造调用有参构造的方法,两者都必须写在第一行,所以不能出现在一个构造方法中。并且两者都是构造方法,是对象的产生,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 运行时抛出异常

在继承关系中,子类创建新对象时调用子类构造方法时也会调用父类的构造方法,所以父类构造方法被调用了两次,输出两个Base。

所以正确答案是 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  

7.下列哪一种叙述是正确的()
A abstract修饰符可修饰字段、方法和类
B 抽象方法的body部分必须用一对大括号{ }包住
C 声明抽象方法,大括号可有可无
D 声明抽象方法不可写出大括号

abstract修饰符不能修饰字段,只能修饰类和方法,并且abstract修饰的类为抽象类,修饰的方法是抽象方法,抽象方法不能直接实现,所以不可以有大括号。

所以正确答案是 D  

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

A class中的constructor不可省略

B constructor必须与class同名,但方法不能与class同名

C constructor在一个对象被new 时执行

D 一个class只能定义一个constructor

constructor是构造方法,构造方法是可以省略的。构造方法是在创建新的对象即new时执行。一个类可以有很多个不同形参的构造方法。构造方法和方法都可以和class同名,构造方法是没有返回值的。

所以正确答案是 C  

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正确,C和D都是错误的。并且抽象类中只能定义变量和方法,不能那个有其他语句所以B错。

所以正确答案是

10. 在使用 interface 声明一个外部接口时,只可以使用( )修饰符修饰该接口。
A private
B protected
C private protected
D public

接口必须是public修饰的,所以正确答案是 D 。

二、编程题

2.1排序子序列

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

 在这道题中我们可以先创建一个比规定长度多一个的数组,然后将数存入数组。

大体的思路就是进入循环中,如果num[i]<num[i+1],那么就进入小循环,当不满足这个条件时或者所有数都遍历完了,count就+1,证明有了一个子序列。如果相等就忽略直接遍历下一个数,如果相反就同样的路数,循环终止条件就是i>=n。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] num = new int[n+1];
        for(int i = 0;i<n;i++){
            num[i] = sc.nextInt();
        }
        int i = 0;
        int count = 0;
        while(i<n){
            if(num[i]<num[i+1]){
                while(i<n-1&&num[i]<num[i+1]){
                    i++;
                }
                count++;
                i++;
            }else if(num[i]==num[i+1]){
                i++;
            }else{
                while(i<n-1&&num[i]>num[i+1]){
                    i++;
                }
                count++;
                i++;
            }
        }
        System.out.println(count);
    }
}

2.2倒置字符串

将一句话的单词进行倒置,标点不倒置。比如 "I like beijing.",经过处理后变为:"beijing. like I"。 字符串长度不超过100。

 这道题需要用到String类型中的拆分方法,首先根据空格将字符串拆分为字符串数组,创建StringBuilder类型的sb来连接个字符串,遍历数组从后往前相加,即将整个字符串倒置。

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String[]  s1 = s.split(" ");
        StringBuilder sb  = new StringBuilder();
        for(int i = s1.length-1;i>=0;i--){
            String s2 = s1[i] + " ";
            sb.append(s2);
        }
        System.out.println(sb.toString());
    }

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

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

相关文章

19. 【gRPC系列学习】拦截器Interceptor

无论客户端还是服务端在远程调用前后执行一些通用逻辑,例如Gin框架,实现日志、监控、认证、Recover等通用逻辑,gRPC也提供这样的机制。 拦截器分为:一元拦截器、流拦截器,这两种拦截器在客户端、服务端都可以使用。拦截器的执行流程如图:其中InHandlerx与outHandlerx是同…

1 月 25 日见|Flutter Forward 活动日程表正式发布!

2023 年 1 月 25 日 (正月初四)&#xff0c;我们将在肯尼亚首都内罗毕举办 Flutter Forward 大会&#xff0c;并同时开启线上直播。本次活动将为展示最新的 Flutter 技术更新&#xff0c;包括一个主题演讲以及多个技术演讲和线上问答&#xff0c;全方位展示 Flutter 如何推动 U…

B+树 [数据结构与算法][Java]

B树 B树是B树的一种变形 我们通过一颗四阶B树来理解认识一下B树:(如下:) 我们其实从图上就可以看出B树和B树是有很多不同之处的 比如我们的B树中将叶子结点层的所有结点使用一个链表串联了起来B树中对于非叶子结点都是只是存储的索引(指针), 并没有存储关键字, 所以我们最终查…

离散数学数理逻辑部分

前言 本文创作的起因是&#xff0c;经历了离散数学的学习&#xff0c;深感学习离散之艰辛。所以产生了写一些内容帮助大家期末复习。虽然在csdn发表本文&#xff0c;有些不太合适&#xff0c;但是还是相信本文的质量和内容&#xff0c;可以给正在学习离散数学的大学生提供一些…

vscode使用shift+alt+f格式化html文件时不生效

关于vscode配置相关文章&#xff08;方便作者之后复习&#xff09;: VScode如何在敲代码时自动导入包怎么在VScode中写代码模板【以创建express模板为例】如何根据项目的eslint去配置vscode的setting 1-1 下载Beautify插件 该插件已停止维护&#xff0c;输入下载其他插件 1-2 在…

【Linux】进程概念(上)

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;冯诺依曼体…

1754. 构造字典序最大的合并字符串

摘要 1754. 构造字典序最大的合并字符串 一 贪心算法分析 题目要求合并两个字符串 word1 与 word2&#xff0c;且要求合并后的字符串字典序最大。首先需要观察一下合并的选择规律&#xff0c;假设当前需要从 word1​ 的第 i 个字符和 word2​ 的第 j个字符选择一个字符加入到…

24. 【gRPC系列学习】gRPC安全认证-TLS认证

TLS认证是gRPC比较常见的方式,利用PKI体系,生成客户端证书、服务端证书、以及CA证书,在交互期间进行身份验证,经秘钥协商后,以对称秘钥进行加密通信,保证数据隐私。Basic、Jwt都是要自实现,TLS是官方支持,操作简单。 1. TLS原理 双向认证简单来讲:服务端验证客户端证书…

前端小知识:返回浏览器上一页(back、go、referrer)

官方文档&#xff08;document.referrer&#xff09;&#xff1a; https://developer.mozilla.org/zh-CN/docs/Web/API/Document/referrer   官方文档&#xff08;history.back&#xff09; https://developer.mozilla.org/zh-CN/docs/Web/API/History/back   官方文档&#…

DaVinci:曲线之 HSL 曲线

调色页面&#xff1a;曲线Color&#xff1a;CurvesH 指的是色相 Hue&#xff0c;S 指的是饱和度 Saturation&#xff0c;L 指的是亮度 Luminance。DaVinci Resolve 的曲线调板中&#xff0c;除了自定义曲线&#xff0c;还提供了六种基于色相、饱和度或亮度的调节曲线&#xff0…

Akka 进阶(二)Mailbox 邮箱

目录一 默认邮箱配置二 内置邮箱三 自定义邮箱四 配置邮箱五 RequiresMessageQueue接口Actor中的邮箱是一个队列结构&#xff0c;所有发送过来的消息都会在该队列进行排队&#xff0c;在默认情况下&#xff0c;它遵循先进先出&#xff08;FIFO&#xff09;的模式&#xff0c;假…

如何将ppt图片压缩?统一压缩ppt图片的简单方法

日常生活中经常需要用到ppt&#xff0c;一份PPT少则十几页多则上百页&#xff0c;就很容易造成PPT过大不易传送的情况&#xff0c;其实我们可以先把ppt图片压缩&#xff08;图片压缩到指定大小 图片压缩大小至指定kb以下-压缩图&#xff09;之后再制作成ppt文件&#xff0c;那么…

【推荐收藏】这份图解算法数据结构的材料太良心

5年前发生的一件事&#xff0c;成为了我职业生涯的重要转折点。当时的我在交大读研&#xff0c;对互联网求职一无所知&#xff0c;但仍然硬着头皮申请了 Microsoft 实习生。面试官让我在白板上写出“快速排序”代码&#xff0c;我畏畏缩缩地写了一个“冒泡排序”&#xff0c;并…

Unity 3D Inspector 视图 || Unity 3D Scene View 视图 || Unity 3D Game View 视图

Unity 3D Inspector 视图 Unity 3D 的 Inspector 视图用于显示当前选定的游戏对象的所有附加组件&#xff08;脚本属于组件&#xff09;及其属性的相关详细信息。 视图布局 以摄像机为例&#xff0c;在 Unity 3D 的 Inspector 视图中显示了当前游戏场景中的 MainCamera 对象所…

腾讯云轻量应用服务器使用 Cloudreve 应用镜像搭建个人私有云盘!

Cloudreve 是一款开源的网盘软件&#xff0c;支持服务器本机及腾讯云对象存储 COS 等多种存储方式&#xff0c;提供离线下载、拖拽上传、在线预览等功能&#xff0c;能够帮助您快速搭建个人使用或多人共享的云盘系统。该镜像基于 CentOS 8.2 64位操作系统&#xff0c;已集成宝塔…

OpenAI | GPT-3新模型Davinci,将AI写作提升到新水平!网友惊呼:GPT-4要来了?

文 | 王思若20年&#xff0c;OpenAI推出了1750亿参数量的屠榜‘杀器’GPT-3&#xff0c;但基于大模型至今悬而未决的伦理和社会风险以及商业盈利等因素的考量&#xff0c;OpenAI将GPT-3以付费API的形式向公众开放。通过调用GPT-3的API&#xff0c;问答、语义检索、翻译、数学推…

消息队列RabbitMQ学习笔记(四)死信队列和延迟队列

1. 死信的概念 先从概念解释上搞清楚这个定义&#xff0c;死信&#xff0c;顾名思义就是无法被消费的消息&#xff0c;字面意思可以这样理 解&#xff0c;一般来说&#xff0c;producer 将消息投递到 broker 或者直接到queue 里了&#xff0c;consumer 从 queue 取出消息 进行…

【Linux】调试器gdb的使用

​&#x1f320; 作者&#xff1a;阿亮joy. &#x1f386;专栏&#xff1a;《学会Linux》 &#x1f387; 座右铭&#xff1a;每个优秀的人都有一段沉默的时光&#xff0c;那段时光是付出了很多努力却得不到结果的日子&#xff0c;我们把它叫做扎根 目录&#x1f449;什么是gdb…

2022-忙碌的一年

&#xff08;点击即可听音频&#xff09;前言花有重开日,人无再少年.每当这个时候,回头驻足,不是感慨万千,就是惜时如金,一年悄无声息的从指尖划过,星海横流,岁月如碑.那些被偷走的时光,发生了大大小小的事无论是平淡无奇,还是历久难忘,有惊喜,有遗憾,终将都会隐入尘烟。大到国…

自定义coco数据集

1、环境 anaconda环境安装配置 2、工具 安装labelme工具 3、安装软件 3.1、打开anaconda控制台 3.2、创建虚拟环境 conda create -n labelme python3.73.3、激活环境 conda activate labelme3.4、下载labelme pip install labelme3.5、输入labelme打开软件 以后打开跳…