【nowcoder】笔试强训Day10

news2024/12/23 14:09:08

目录

一、选择题

二、编程题

2.1井字棋

2.2密码强度等级


一、选择题

1.下列运算符合法的是( )

A. &&

B. <>

C. if

D. :=

逻辑与&&语法规则:表达式1&&表达式2,其中两个表达式都是布尔表达式,得到的结果也是布尔值。

所以正确答案是

2.下面代码运行结果是()

public class Test{
    public int add(int a,int b){
        try {
            return a+b;
         }
        catch (Exception e) {
            System.out.println("catch语句块");
        }
        finally{
            System.out.println("finally语句块");
        }
        return 0;
    }
    public static void main(String argv[]){
        Test test =new Test();
        System.out.println("和是:"+test.add(9, 34));
    }
}

A. catch语句块 和是:43

B. 编译异常

C. finally语句块 和是:43

D. 和是:43 finally语句块

在try-catch-finally代码块中,catch代码块只有在捕捉到异常的时候才会执行,而finally代码块一定会执行,所以先执行finally代码块再进行返回。

所以正确答案是

3.下列Java代码中的变量a、b、c分别在内存的____存储区存放。

class A {
    private String a = “aa”;
    public boolean methodB() {
        String b = “bb”;
        final String c = “cc”;
    }
}

A. 堆区、堆区、堆区

B. 堆区、栈区、堆区

C. 堆区、栈区、栈区

D. 堆区、堆区、栈区

E. 静态区、栈区、堆区

F. 静态区、栈区、栈区

a是全局变量存放在堆区,b是局部变量也存放在堆区,c是String类型的变量是引用类型存放在栈区。

所以正确答案是

4.以下声明合法的是

A. default String s

B. public final static native int w( )

C. abstract double d

D. abstract final double hyperbolicCosine( ) 

属性的可访问控制符可以是public、protected、private、默认(即default)default修饰符不能直接写出·,所以A是错的。B中定义的是本地方法,从修饰符native可以看出来,被native修饰的方法,底层是C++。属性的非可访问控制符可以是static和final,没有abstract,所以C是错的。abstract不可以和static以及final连用,abstract是虚拟的动态的,但是static和final都是静态的所以D是错的。

所以正确答案是 B 

5.在使用super 和this关键字时,以下描述正确的是

A. 在子类构造方法中使用super()显示调用父类的构造方法,super()必须写在子类构造方法的第一行,否则编译不通过

B. super()和this()不一定要放在构造方法内第一行

C. this()和super()可以同时出现在一个构造函数中

D. this()和super()可以在static环境中使用,包括static方法和static语句块 

this()和super()都必须写在第一行,所以两者不能那个写在一个构造函数中,并且两者都不能那个在静态环境中使用,是需要对象引用的。

所以正确答案是 A 

6.下面代码的输出结果是什么?

public class ZeroTest {
    public static void main(String[] args) {
        try{
            int i = 100 / 0;
            System.out.print(i);
        }catch(Exception e){
            System.out.print(1);
            throw new RuntimeException();
        }finally{
            System.out.print(2);
        }
        System.out.print(3);
    }
}

A. 3

B. 123

C. 1

D.12

在try-catch-finally代码块中,如果catch捕捉到了异常就会执行,在本题中就捕捉到了异常,除数不能为0的异常所以输出1,然后finally代码一定会执行,并且后面的代码块就不会再执行了,所以输出2。

所以正确答案是 D 

7.有代码片段如下:

byte b1=1,b2=2,b3,b6;
final byte b4=4,b5=6;
b6=b4+b5;
b3=(b1+b2);
System.out.println(b3+b6);

关于上面代码片段叙述正确的是()

A. 输出结果:13

B. 语句:b6=b4+b5编译出错

C. 语句:b3=b1+b2编译出错

D.运行期抛出异常

是第四行语句出现错误,从int转换到byte可能会有损失

所以正确答案是 C 

8.以下java程序代码,执行后的结果是()

public class Test {
    public static void main(String[] args) {
        Object o = new Object() {
            public boolean equals(Object obj) {
                return true;
            }
        };
        System.out.println(o.equals("Fred"));
    }
}

A. Fred

B. true

C. 编译错误

D. 运行时抛出异常

在本题中创建了Object类对象,方法输出了true

所以正确答案是 B 

9.执行以下程序后的输出结果是()

public class Test {
    public static void main(String[] args) {
        StringBuffer a = new StringBuffer("A");
        StringBuffer b = new StringBuffer("B");
        operator(a, b);
        System.out.println(a + "," + b);
    }
    public static void operator(StringBuffer x, StringBuffer y) {
        x.append(y); y = x;
    }
}

A. A,A

B. A,B

C. B,B

D.AB,B

在operator方法中,x是直接改变了引用对象,所以主方法中的a也会改变,y也就是b并没有实质性的改变

所以正确答案是 D 

10.下面所示的java代码,运行时,会产生()类型的异常

int Arry_a[] = new int[10];
System.out.println(Arry_a[10]);

A. ArithmeticException

B. NullPointException

C. IOException

D.ArrayIndexOutOfBoundsException

本题中数组是有十个元素,下标从0-9是合法的,调用10下标即产生数组越界异常

所以正确答案是 D 

二、编程题

2.1井字棋

给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及井字棋规则),返回当前玩家是否胜出。

 在本题中有四种情况。

第一种是行成排,即i不变,j++,然后将每个board[i][j]值相加存储,如果结果==size,那么就成排。

第二种是列成排,即i不变,j++,然后将numboard[ j ][ i ]值相加存储,如果结果==size,那么就成排。

第三种是正的对角线,即i++,然后将numboard[ i ][ i ]值相加存储,如果结果==size,那么就成排。

第四种是反的对角线,即i++,然后将numboard[ i ][ size-i-1 ]值相加存储,如果结果==size,那么就成排。

public class Board {
    public boolean checkWon(int[][] board) {
        int size = board.length;
        int sum = 0;
        for(int i = 0;i<size;i++){
            sum = 0;
            for(int j = 0;j<size;j++){
                sum+=board[i][j];
            }
            if(sum==size){
                return true;
            }
        }
        for(int i = 0;i<size;i++){
            sum = 0;
            for(int j = 0;j<size;j++){
                sum+=board[j][i];
            }
            if(sum==size){
                return true;
            }
        }
        sum = 0;
        for(int i = 0;i<size;i++){
            sum+=board[i][i];
        }
        if(sum==size){
            return true;
        }
        sum = 0;
        for(int i = 0;i<size;i++){
            sum+=board[i][size-i-1];
        }
        if(sum==size){
            return true;
        }
        return false;
    }
}

2.2密码强度等级

密码按如下规则进行计分,并根据不同的得分为密码进行安全等级划分。

一、密码长度:
5 分: 小于等于4 个字符
10 分: 5 到7 字符
25 分: 大于等于8 个字符
二、字母:
0 分: 没有字母
10 分: 密码里的字母全都是小(大)写字母
20 分: 密码里的字母符合”大小写混合“
三、数字:
0 分: 没有数字
10 分: 1 个数字
20 分: 大于1 个数字
四、符号:
0 分: 没有符号
10 分: 1 个符号
25 分: 大于1 个符号
五、奖励(只能选符合最多的那一种奖励):
2 分: 字母和数字
3 分: 字母、数字和符号

5 分: 大小写字母、数字和符号

最后的评分标准:
>= 90: 非常安全
>= 80: 安全(Secure)
>= 70: 非常强
>= 60: 强(Strong)
>= 50: 一般(Average)
>= 25: 弱(Weak)
>= 0:  非常弱(Very_Weak)
对应输出为:
VERY_SECURE
SECURE
VERY_STRONG
STRONG
AVERAGE
WEAK
VERY_WEAK
请根据输入的密码字符串,进行安全评定。
注:
字母:a-z, A-Z
数字:0-9
符号包含如下: (ASCII码表可以在UltraEdit的菜单view->ASCII Table查看)
!"#$%&'()*+,-./     (ASCII码:0x21~0x2F)
:;<=>?@             (ASCII码:0x3A~0x40)
[\]^_`              (ASCII码:0x5B~0x60)
{|}~                (ASCII码:0x7B~0x7E)

 本题代码较长,但是逻辑很简单,就是将每一种规则都分成方法写出密码长度、字母、数字、符号以及奖励。然后在主方法中判断属于哪个等级即可。

public class Main {
     public static int length(String s){
        if(s.length()<5){
            return 5;
        }else if(s.length()<8){
            return 10;
        }else{
            return 25;
        }
    }
    public static int letters(String s){
        int c1 = 0;
        int c2 = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(c<='Z'&&c>='A'){
                c1++;
            }else if(c<='z'&&c>='a'){
                c2++;
            }
        }
        if(c1==0&&c2==0){
            return 0;
        }else if(c1!=0&&c2!=0){
            return 20;
        }else{
            return 10;
        }
    }
    public static int numbers(String s){
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(c>='0'&&c<='9'){
                count++;
            }
        }
        if(count==0){
            return 0;
        }else if(count==1){
            return 10;
        }else{
            return 20;
        }
    }
    public static int symbols(String s){
        int count = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if(c>=0x21&&c<=0x2F||c<=0x40&&c>=0x3A||c<=0x60&&c>=0x5B||c<=0x7E&&c>=0x7B){
                count++;
            }
        }
        if(count==0){
            return 0;
        }else if(count==1){
            return 10;
        }else{
            return 25;
        }
    }
    public static int rewards(String s){
        int letters = letters(s);
        int numbers = numbers(s);
        int symbols = symbols(s);
        if(letters>0&&numbers>0&&symbols==0){
            return 2;
        }else if(letters==10&&numbers>0&&symbols>0){
            return 3;
        }else if(letters==20&&numbers>0&&symbols>0){
            return 5;
        }else return 0;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.next();
        int letters = letters(s);
        int numbers = numbers(s);
        int symbols = symbols(s);
        int length = length(s);
        int rewards = rewards(s);
        int count = letters+numbers+symbols+length+rewards;
        if(count>=90){
            System.out.println("VERY_SECURE");
        } else if (count>=80) {
            System.out.println("SECURE");
        } else if (count>=70) {
            System.out.println("VERY_STRONG");
        } else if (count>=60) {
            System.out.println("STRONG");
        } else if (count>=50) {
            System.out.println("AVERAGE");
        } else if (count>=25) {
            System.out.println("WEAK");
        }else {
            System.out.println("VERY_WEAK");
        }
    }
}

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

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

相关文章

LeetCode453.最小操作次数使数组元素相等

LeetCode刷题记录 文章目录&#x1f4dc;题目描述&#x1f4a1;解题思路&#x1f4dc;题目描述 给你一个长度为 n 的整数数组&#xff0c;每次操作将会使 n - 1 个元素增加 1 。 返回让数组所有元素相等的最小操作次数。 示例1 输入&#xff1a;nums [1,2,3] 输出&#xff1a…

EduIQ Network LookOut Administrator

EduIQ Network LookOut Administrator 网络了望管理员允许您从屏幕的远端实时监视计算机。您可以随时看到他们在做什么。除了计算机控制&#xff0c;您还可以捕获摩西和键盘用户。使用Network LookOut Administrator软件可以完成一些有用的工作&#xff1a; 远程儿童计算机控制…

记录一次Gstreamer运行报错排查

背景 系统&#xff1a;Ubuntu 20.04 显卡型号&#xff1a;RTX 2060 之前正常运行的Gstreamer的编解码代码&#xff08;有用到显卡硬件加速&#xff09;&#xff0c;突然运行报错。经过一番折腾&#xff0c;最终找到原因&#xff0c;是因为NVIDIA驱动近期更新了&#xff0c;与…

Node.js——模块化(一)

1. 模块化的基本概念 1.1 什么是模块化 1. 编程领域中的模块化 1.2 模块化规范 2. Node.js 中的模块化 2.1 Node.js 中模块的分类 2.2 加载模块 加载自定义模块给相对路径 ./是平级&#xff08;同一文件夹下调用&#xff09; //这是07.test.js代码 // 注意&#xff1a;在使用…

Cypress笔记-连接命令

.each() 作用 遍历数组数据结构&#xff08;具有 length 属性的数组或对象&#xff09; cy.get(.connectors-each-ul>li).each(function($el, index, $list){ //遍历每个li元素console.log($el, index, $list)}).its() 作用 获取对象的属性值 示例代码 cy.get(.conne…

MergeTree概述

概述 Clickhouse 中最强大的表引擎当属 MergeTree &#xff08;合并树&#xff09;引擎及该系列&#xff08;MergeTree&#xff09;中的其他引擎。MergeTree 系列的引擎被设计用于插入极大量的数据到一张表当中&#xff0c;数据可以以数据片段的形式一个接着一个的快速写入&am…

DonkeyCar [02] - 软件配置 - 上位机(windows)

前言&#xff1a;在windows下配置Donkey Car的上位机&#xff1a; 1 安装miniconda Python Conda是开源的管理系统&#xff0c;Miniconda是conda的开源最小安装。 Donkey的默认安装版本&#xff0c;3.7&#xff0c;Miniconda已经是 最新的版本&#xff0c;是3.10.8吧&#xf…

IB如何选科更有助于大学申请?

如果你准准备选择就读IB课程体系&#xff0c;IB选科颇为重要的&#xff0c;选课对于提升自己的竞争力是非常重要的&#xff0c;可以说合理的选课&#xff0c;是申请外国大学的奠基石。IB课程不同于其他两种课程体系&#xff0c;它并不以某个国家的课程体系为基础&#xff0c;而…

02、Java 数据结构:时间复杂度与空间复杂度

时间复杂度与空间复杂度1 场景理解1.1 场景11.2 场景21.3 场景31.4 场景41.5 代码实现2 时间复杂度2.1 渐进时间复杂度2.2 从基本操作执行次数推导出时间复杂度2.3 两种方法来计算2.4 四个场景的时间复杂度分析2.5 大 O 表达式的优劣3 空间复杂度4 时间复杂度和空间按复杂度关系…

《计算机网络》——第四章知识点

第四章思维导图如下&#xff1b; 网络层向上只提供灵活的、无连接的、尽最大努力交付的数据报服务&#xff0c;主要任务是把分组&#xff08;IP数据报)从通过路由选择与转发从源端传到目的端&#xff0c;为分组交换网上的不同主机提供通信服务。 互联网可以由多种异构网络互连…

基于Shell编程完成定时备份数据库,看这篇就够了

一. 前言 最近文哥班里有一个学员面试成功上岸&#xff0c;在公司开发时遇到了这么一个需求&#xff1a;领导要求他编写一个shell脚本&#xff0c;完成定时备份数据库的需求。由于他对linux以及shell编程不是很了解&#xff0c;这位学员感到束手无策&#xff0c;于是就求助文哥…

List的介绍

目录 1.什么是List 2.常见接口介绍 3.List 1.什么是List 在集合框架中&#xff0c;List是一个接口&#xff0c;继承自Collection。Collection也是一个接口&#xff0c;该接口规范了后续容器中常用的一些方法&#xff0c;具体如下所示 Iterable也是一个接口&#xff0c;表示实…

ArcGIS基础实验操作100例--实验11以线要素分割面要素(一)

本实验专栏来自于汤国安教授《地理信息系统基础实验操作100例》一书 实验平台&#xff1a;ArcGIS 10.6 实验数据&#xff1a;请访问实验1&#xff08;传送门&#xff09; 基础编辑篇--实验11 以线要素分割面要素&#xff08;一&#xff09; 目录 一、实验背景 二、实验数据 …

今年十八,蓝桥速刷(Python-I)

前言 &#x1f340;作者简介&#xff1a;被吉师散养、喜欢前端、学过后端、练过CTF、玩过DOS、不喜欢java的不知名学生。 &#x1f341;个人主页&#xff1a;红中 &#x1f342;专栏地址&#xff1a;python专栏 抽根烟先 蓝桥杯是个啥 蓝桥杯&#xff0c;又称圈钱杯(不是 是由…

MySQL数据库调优

MySQL数据库调优一、MySQL架构设计1.1、引言1.2、MySQL Server层1.2.1、连接器&#xff08;Connector&#xff09;1.2.2、查询缓存 &#xff08;Query Cache&#xff09;1.2.3、分析器&#xff08;Analyzer&#xff09;1.2.4、优化器&#xff08;optimizer&#xff09;1.2.5、执…

Qt5操作Office及Word读写实例

欢迎小伙伴的点评✨✨&#xff0c;相互学习&#x1f680;&#x1f680;&#x1f680; 博主&#x1f9d1;&#x1f9d1; 本着开源的精神交流Qt开发的经验、将持续更新续章&#xff0c;为社区贡献博主自身的开源精神&#x1f469;‍&#x1f680; 文章目录前言一、Qt操作Office的…

云超融合数据中心 CloudFabric

大家好&#xff0c;我是技福的小咖老师。 随着云计算、大数据、人工智能等新一代信息技术的快速发展&#xff0c;数字技术已经渗透到我们日常生活的方方面面&#xff0c;同时也改变了所有行业。数据中心&#xff0c;将算力源源不断地输送给数字世界&#xff0c;逐渐成为云计算…

Flink学习28:水位线

1.前言 flink有3种时间&#xff0c;主要是事件时间和处理时间。 水位线主要解决&#xff0c;数据乱序到达或者延迟到达的问题 2.水位线原理 即只有当水位线&#xff0c;越过窗口的结束时间&#xff0c;才会触发窗口计算。 窗口计算需要同时满足两个条件&#xff1a; 1.水位线…

spring之IoC注解

文章目录前言一、回顾注解1、注解怎么定义2、注解怎么使用3、通过反射机制怎么读取注解二、Spring IoC注解式开发原理1、扫描程序2、通过反射机制解析注解3、实例化对象三、声明Bean的注解前言 注解的存在主要是为了简化XML的配置 一、回顾注解 1、注解怎么定义 定义一个注解…

c语言操作符(上)

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言初阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>: 讲解c语言中有关操作符的知识. 金句分享: 最慢的步伐…