当前位置: 首页 > news >正文

2023应届生能力考试含解析(Java后端开发)——(1)

1.以下代码的循环次数是 (   )

public class Test {public static void main(String[] args) {int i = 7;do {System.out.println(--i);--i;} while (i != 0);System.out.println(i);}
}

A 0    B 1   C 7    D 无限次

    这段代码会导致无限循环的原因是在 do-while 循环中,每次迭代都会先执行一次循环体内的代码,然后再进行循环条件的判断。在这个例子中,初始值 i 被设置为 7。循环体内的代码逐步减少 i 的值,并打印出来。但是注意到每次循环体内都有两次 --i 操作,所以每次循环 i 的值会减少2。当 i 的值减少到1时,继续进行下一次循环。此时 i 的值变为 -1,不等于0,循环继续。然后又会进行两次 --i 操作,使 i 的值变为 -3。这个过程会一直继续下去,永远不会达到循环结束的条件 i != 0。因此,这段代码会导致无限循环。

2.下面代码的运行结果为:(  )

package itemtest;import java.io.*;
import java.util.*;public class Test{public static void main (String[] args){String s;System.out.println("s=" + s);}
}

A代码得到编译,并输出“s=”

B代码得到编译,并输出“s=null”

C由于String s没有初始化,代码不能编译通过

D代码得到编译,但捕获到 NullPointException异常

 

3.以下程序的输出是:( ) 

#include <iostream>using namespace std;unsigned int f(unsigned int n) {if (n == 0 || n == 1) {return 1;}return f(n-1) + f(n-2);
}void count(int n) {unsigned int tmp = n - ((n >> 1) & 0x33333333) - ((n >> 2) & 0x11111111);std::cout << ((tmp + (tmp >> 3)) & 0x07070707) % 63 << std::endl;
}int main() {count(f(7));count(f(9));return 0;
}

改写成Java代码后为:

public class Test{public static int f(int n) {if (n == 0 || n == 1) {return 1;}return f(n-1) + f(n-2);}public static void count(int n) {int tmp = n - ((n >> 1) & 0x33333333) - ((n >> 2) & 0x11111111);System.out.println(((tmp + (tmp >> 3)) & 0x07070707) % 63);}public static void main(String[] args) {count(f(7));count(f(9));}
}

 

其中对于这段代码的理解如下:

    public static void count(int n) {int tmp = n - ((n >> 1) & 0x33333333) - ((n >> 2) & 0x11111111);System.out.println(((tmp + (tmp >> 3)) & 0x07070707) % 63);}
这段代码实现了一种高效计算一个整数的二进制表示中有多少个1的方法,即计算整数的“汉明重量”(Hamming Weight)。下面逐步解释这段代码的实现过程:首先,这段代码接受一个整数 n 作为输入。然后,代码通过位运算来分割 n 的二进制表示。具体来说,它使用了一些掩码(mask)来提取不同位置上的比特位。0x33333333 掩码用于提取每两位的比特位。
0x11111111 掩码用于提取每四位的比特位。
通过右移操作 (n >> k) 和按位与操作 &,可以将 n 的比特位分割成更小的块。接下来,通过减法和加法操作,将这些被分割出来的比特位进行累加运算。(n >> 1) & 0x33333333 表示将 n 的每两位的比特位相加,并将结果存储在 tmp 中。
(n >> 2) & 0x11111111 表示将 n 的每四位的比特位相加,并将结果与 tmp 相减。
这样,tmp 的值就是 n 的二进制表示中每两位和每四位的比特位相加的结果。最后,通过右移操作 (tmp >> 3) 和按位与操作 &,提取每八位的比特位。(tmp + (tmp >> 3)) & 0x07070707 表示将 tmp 的每八位的比特位相加,并将结果存储在 tmp 中。
最终结果是 tmp 对 63 取模的值,即 tmp % 63。0x07070707 掩码用于保留 tmp 的每八位的比特位。
通过以上步骤,这段代码实现了高效计算一个整数二进制表示中1的个数的功能。请注意,这段代码假设整数为32位。如果你要处理不同位数的整数,需要相应调整掩码的值和最终取模的除数。
在 count 函数中,将传入的数 n 进行一系列位运算操作后得到了一个数字 tmp。此外,在最后输出之前,将 tmp 与 0x07070707 进行按位与操作,并再次取模 63,最终得到的是 tmp 的一个压缩版本。实际上,这个压缩版本已经足够表征 tmp 的大部分信息了。由于斐波那契数列的增长速度非常快,当 n 较大时,tmp 的值也会变得非常大。因此,通过将 tmp 与 0x07070707 进行按位与操作,可以将其压缩为一个更小的数字。然后,通过对 63 取模,可以确保输出值始终落在 0 到 62 之间,以便更好地控制输出结果的范围。需要注意的是,0x07070707 所对应的二进制数是 00000111000001110000011100000111,它实际上就是用四个重复的 00000111 来组成,而 00000111 对应的十进制数为 7。因此,0x07070707 等价于十进制数 119304647。根据这个数字,我们可以使用 & 和取模操作来实现 tmp 的压缩和范围限制。

4.执行下列程序的输出结果为()

public class Test {public static void main(String[] args) {String s1 = "HelloWorld";String s2 = new String("HelloWorld");if (s1 == s2) {System.out.println("s1 == s2");} else {System.out.println("s1 != s2");}if (s1.equals(s2)) {System.out.println("s1 equals s2");} else {System.out.println("s1 not equals s2");}}
}

    在 Java 中,== 运算符用于比较两个对象的引用是否相等,即它们是否指向同一个内存地址。而 equals() 方法则用于比较两个对象的内容是否相等。在这个例子中,s1 是一个字符串常量(String literal),在编译时已经被赋值,并且在 JVM 内部建立了对应的 String 对象。而 s2 是通过 new 关键字创建的一个新的 String 对象,它的值也是 "HelloWorld"。虽然这两个 String 对象的内容相同,但是它们的引用并不相同,因此 s1 == s2 的结果为 false。另一方面,equals() 方法比较的是两个对象的内容,它会调用 String 类的 equals() 方法来比较两个字符串的字符序列是否相等。由于 s1 和 s2 的字符序列都是 "HelloWorld",因此 s1.equals(s2) 的结果为 true。

5.下列类定义代码,当用来声明对象car,并用Car car=new Car();实例化后,可以通过car对象直接赋值的字段是()

public class Car {public String type;String No;private int heavy;double speed;protected String owner;public String price;private String color;
}

A type,No   B type,price   C heavy,owner    D type,owner,price

通过 new Car() 实例化后,可以通过 car 对象直接赋值的字段是:type、owner 和 price。这是因为这三个字段都是定义为 public 访问修饰符,可以通过对象的引用直接访问和修改。而其他字段的访问修饰符是 private 或 protected,无法直接通过对象的引用访问和修改,需要通过类提供的公共方法或者反射等方式才能访问。  具体举例说明如下:
public class Car {public String type;String No;private int heavy;double speed;protected String owner;public String price;private String color;public void setHeavy(int heavy) {this.heavy = heavy;}public void setSpeed(double speed) {this.speed = speed;}public void setColor(String color) {this.color = color;}
}
    通过以上的 Car 类定义,我们可以实例化一个 Car 对象并进行字段赋值。假设我们创建了一个 Car 对象 car:   Car car = new Car();我们可以直接使用 car 对象来赋值 type、owner 和 price 字段:car.type = "Sedan";car.owner = "John";car.price = "$20000";这些字段都是 public 访问修饰符的,因此可以直接通过对象的引用 car 进行赋值操作。但是对于其他字段,由于它们的访问修饰符是 private 或 protected,我们无法直接通过对象的引用进行赋值。例如,无法直接通过 car.heavy、car.speed 或 car.color 来赋值。如果我们想要修改这些 private 或 protected 字段的值,我们可以为类提供公共的方法(setter 方法)来间接修改它们。例如,为 heavy、speed 和 color 字段添加相应的 setter 方法:
public void setHeavy(int heavy) {this.heavy = heavy;
}public void setSpeed(double speed) {this.speed = speed;
}public void setColor(String color) {this.color = color;
}
然后,我们可以使用这些 setter 方法来修改字段的值:
car.setHeavy(2000);
car.setSpeed(120.5);
car.setColor("Blue");
通过这样的方式,我们可以间接修改 private 或 protected 字段的值。

6.以下程序的执行结果是:( )

package itemtest;public class Test {static boolean foo(char c) {System.out.print(c);return true;}public static void main(String[] args) {int i = 0;for (foo('A'); foo('B') && (i < 2); foo('C')) {i++;foo('D');}}
}

A、ABDCBDCB   B、ABCDABCD

C、编译时出错     D、运行时抛出异常

在这个代码中,主要有三部分组成:foo(char c): 这是一个静态方法,它接受一个字符参数 c,并打印该字符并返回 true。main 方法:这是程序的入口点。它声明了一个整数变量 i,初始值为 0。循环:使用 for 循环进行迭代。循环的初始化部分调用 foo('A') 方法,并打印字符 'A'。然后,在循环条件部分,调用 foo('B') 方法并打印字符 'B',并检查 i 是否小于 2。如果条件为真,则进入循环体部分。在循环体内, i 的值增加 1,并调用 foo('D') 方法并打印字符 'D'。然后返回到循环条件部分。在循环条件部分调用 foo('C') 方法并打印字符 'C'。如果条件为真,则继续下一次循环。否则,退出循环。因此,循环将执行两次,输出结果为 "ABDCBDCB"。

相关文章:

2023应届生能力考试含解析(Java后端开发)——(1)

1.以下代码的循环次数是 ( ) public class Test {public static void main(String[] args) {int i 7;do {System.out.println(--i);--i;} while (i ! 0);System.out.println(i);} } A 0 B 1 C 7 D 无限次 这段代码会导致无限循环的原因是在 do-while 循环中&#…...

Ansible中的任务执行控制

循环 简单循环 {{item}} 迭代变量名称 loop: - value1 - value2 - ... //赋值列表{{item}} //迭代变量名称循环散列或字典列表 - name: create filehosts: host1tasks:- name: file moudleservice:name: "{{ item.name }}"state: "{{…...

利用maven的dependency插件分析工程的依赖

dependency:analyze https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html 分析项目的依赖&#xff0c;确定哪些&#xff1a;用了并且声明了、用了但没有声明、没有使用但声明了。 dependency:analyze可以单独使用&#xff0c;所以它总是会执行test-…...

【广州华锐互动】VR野外求生技能学习,让你感受真实的冒险之旅!

随着科技的迅速发展&#xff0c;虚拟现实(VR)技术为人们提供了一个全新的、身临其境的探险体验。通过将用户带入一个仿真的、沉浸式的虚拟环境&#xff0c;VR互动体验让人们在安全的氛围中感受到野外探险的乐趣。本文将从视觉呈现、沉浸式体验、交互性和应用范围四个方面&#…...

k8s、调度约束

Kubernetes 是通过 List-Watch **** 的机制进行每个组件的协作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦 用户是通过 kubectl 根据配置文件&#xff0c;向 APIServer 发送命令&#xff0c;在 Node 节点上面建立 Pod 和 Container。 APIS…...

Redis的介绍,以及Redis的安装(本机windows版,虚拟机Linux版)和Redis常用命令的介绍

目录 一. Redis简介 二. Redis的安装 2.1 Linux版安装 2.2 windows版安装 三. Redis的常用命令 一. Redis简介 Redis是一个开源&#xff08;BSD许可&#xff09;&#xff0c;内存存储的数据结构服务器&#xff0c;可用作数据库&#xff0c;高速缓存和消息队列代理。 它…...

电子器件 MOS管的参数、选型与使用技巧

一、电路符号 MOS管分为 G&#xff08;栅极&#xff09;、S&#xff08;源极&#xff09;、D&#xff08;漏极&#xff09; 三极&#xff0c;在图中 S 极有两条线&#xff0c;D 极只有一条线。 1.1 NMOS 和 PMOS 下图中&#xff0c;左侧是 PMOS&#xff0c;右侧是 NMOS。箭头…...

EtherCAT主站SOEM -- 2 -- SOEM之ethercatbase.h/c文件解析

EtherCAT主站SOEM -- 2 -- SOEM之ethercatbase.h/c文件解析 一 ethercatbase.h/c文件功能预览&#xff1a;二 ethercatbase.h/c 文件的主要函数的作用&#xff1a;2.1 ecx_writedatagramdata&#xff1a;2.2 ecx_setupdatagram&#xff1a;2.3 ecx_adddatagram&#xff1a;2.4 …...

Spring集成高性能队列Disruptor

Disruptor简介 Disruptor&#xff08;中文翻译为“破坏者”或“颠覆者”&#xff09;是一种高性能、低延迟的并发编程框架&#xff0c;最初由LMAX Exchange开发。它的主要目标是解决在金融交易系统等需要高吞吐量和低延迟的应用中的并发问题。 Disruptor特点 无锁并发&#x…...

C++——类和对象(中)完结

赋值运算符重载 运算符重载 C 为了增强代码的可读性引入了运算符重载 &#xff0c; 运算符重载是具有特殊函数名的函数 &#xff0c;也具有其 返回值类型&#xff0c;函数名字以及参数列表&#xff0c;其返回值类型与参数列表与普通的函数类似。 函数名字为&#xff1a;关键…...

Sqoop的安装和使用

目录 一.安装 二.导入 1.全量导入 一.MySQL导入HDFS 二.MySQL导入Hive 2.增量导入 一.过滤导入hdfs/hive 二.导出 一.安装 1.下载地址&#xff1a;sqoop下载地址 2.解压 tar -zxvf ./sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C ../module/ 3.改名和配置归属权限 #改名…...

java毕业设计基于springboot+vue的村委会管理系统

项目介绍 采用JAVA语言&#xff0c;结合SpringBoot框架与Vue框架以及MYSQL数据库设计并实现的。本村委会管理系统主要包括个人中心、村民管理、村委会管理、村民信息管理、土地变更管理、农业补贴管理、党员信息管理等多个模块。它帮助村委会管理实现了信息化、网络化&#xf…...

【C++】多态 ⑪ ( 纯虚函数和抽象类 | 纯虚函数语法 | 抽象类和实现 | 代码示例 )

文章目录 一、纯虚函数和抽象类1、纯虚函数2、纯虚函数语法3、抽象类和实现 二、完整代码示例 一、纯虚函数和抽象类 1、纯虚函数 纯虚函数 : 在 C 语言中 , " 纯虚函数 " 是 特殊类型的 虚函数 , " 纯虚函数 " 在 父类 中 声明 , 但是没有实现 ; 抽象类 …...

node 第十四天 基于express的第三方中间件multer node后端处理用户上传文件

Multer 是一个 node.js 中间件&#xff0c;用于处理multipart/form-data 类型的表单数据&#xff0c;它主要用于上传文件。它是写在 busboy 之上的所以非常高效。前面我们已经知道了怎样利用express提供的静态资源处理中间件express.static()处理用户请求静态资源文件(图片, js…...

KnowledgeGPT:利用检索和存储访问知识库上增强大型语言模型10.30

利用检索和存储访问知识库上增强大型语言模型 摘要引言2 相关研究3方法3.1 任务定义3.2 知识检索3.2.1 代码实现3.2.2 实体链接3.2.3 获取实体信息3.2.4 查找实体或值3.2.5 查找关系 3.3 知识存储 4 实验4.1 实验设置4.2 流行知识库上的查询4.3 基于知识的问题回答 摘要 大型语…...

Angular material Chips Autocomplete

Chips Autocomplete 官网的例子我没法正常使用&#xff0c;无法实现搜索 我的select是个通用组件&#xff0c;现在贴代码&#xff1a; component.ts import {Component,ElementRef,forwardRef,Input,OnChanges,OnDestroy,OnInit,SimpleChanges,ViewChild, } from angular/co…...

『亚马逊云科技产品测评』活动征文|搭建基础运维环境

授权声明&#xff1a;本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 Developer Centre, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 目录 1、什么是容器化部署 2、连接到控制台 3、安装docker 3.1 更新…...

双指针扫描

import os import sys# 请在此输入您的代码 sinput() Alist(s) nlen(A) t1 for i in range(n//2):if A[i]!A[n-1-i]:t0break if t1:print(Y) else:print(N)n,smap(int,input().split()) alist(map(int,input().split())) #尺取法&#xff0c;变O(n*n)为O(n) #维护一个最短的区间…...

uniapp小程序九宫格抽奖

定义好奖品下标&#xff0c;计时器开始抽奖&#xff0c;请求接口&#xff0c;出现中奖奖品之后&#xff0c;获取中奖商品对应的奖品下标&#xff0c;再次计时器判断当前移动的小标是否为中奖商品的下标&#xff0c;并且是否转到3圈&#xff08;防止转1圈就停止&#xff09;&…...

mysql树状结构查询及注意事项

一、说明 由于Mysql不像oracle一样支持树状查询&#xff0c;需要用户自行处理&#xff0c;本文记录了一种常见的通过自定义函数的方式进行mysql树状查询的方法&#xff0c;以及使用的注意事项。 二、函数 CREATE DEFINERrootlocalhost FUNCTION get_child_menus(in_pid varc…...

TimeGPT-1——第一个时间序列数据领域的大模型他来了

一直有一个问题:时间序列的基础模型能像自然语言处理那样存在吗?一个预先训练了大量时间序列数据的大型模型&#xff0c;是否有可能在未见过的数据上产生准确的预测?最近刚刚发表的一篇论文&#xff0c;Azul Garza和Max Mergenthaler-Canseco提出的TimeGPT-1&#xff0c;将ll…...

通过Google搜索广告传送的携带木马的PyCharm软件版本

导语 最近&#xff0c;一起新的恶意广告活动被发现&#xff0c;利用被入侵的网站通过Google搜索结果推广虚假版本的PyCharm软件。这个活动利用了动态搜索广告&#xff0c;将广告链接指向被黑客篡改的网页&#xff0c;用户点击链接后下载的并不是PyCharm软件&#xff0c;而是多种…...

网站文章收录因素,别人复制文章排名比你原创的好?

我经常看到有站长抱怨“网站不收录”&#xff0c;“排名不好”&#xff0c;“复制的文章为什么秒收”之类的问题。对于SEO从业者来说&#xff0c;这确实是一个打击&#xff0c;认为搜索引擎不公平。凭什么自己原创不收录&#xff0c;别人复制去了&#xff0c;秒收他的&#xff…...

C#开源的一个能利用Windows通知栏背单词的软件 - ToastFish

前言 今天给大家推荐一个C#开源且免费的能利用Windows通知栏背单词的软件&#xff0c;可以让你在上班、上课等恶劣环境下安全隐蔽地背单词&#xff08;利用摸鱼时间背单词的软件&#xff09;&#xff1a;ToastFish。 操作系统要求 目前该软件只支持Windows10及以上系统&…...

速拿offer,超全自动化测试面试题+答案汇总,背完还怕拿不到offer?

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、你会封装自动化…...

LeetCode----1415. 长度为 n 的开心字符串中字典序第 k 小的字符串

题目 一个 「开心字符串」定义为: 仅包含小写字母 [‘a’, ‘b’, ‘c’].对所有在 1 到 s.length - 1 之间的 i ,满足 s[i] != s[i + 1] (字符串的下标从 1 开始)。比方说,字符串 “abc”,“ac”,“b” 和 “abcbabcbcb” 都是开心字符串,但是 “aa”,“baa” 和 “a…...

2310C++协程超传服务器

原文 告别异步回调模型,写代码更简单.同样也是跨平台,仅头文件的,包含头文件即可用,来看看它的用法. 基本用法 提供getpost服务 coro_http_server server(1, 9001);server.set_http_handler<GET, POST>("/", [](coro_http_request &req, coro_http_respo…...

【排序算法】 计数排序(非比较排序)详解!了解哈希思想!

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; 算法—排序篇 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言&#x1f324;️计数排序的概念☁️什么是计数排序&#xff1f;☁️计数排序思想⭐绝对…...

20231103配置cv180zb的编译环境【填坑篇】

20231103配置cv180zb的编译环境【填坑篇】 2023/11/3 11:36 感谢您选择了晶视科技的cv180zb&#xff0c;让我们一起来填坑。 在你根据文档找不到答案的时候&#xff0c;是不是想把他们家那个写文档的家伙打一顿&#xff0c;我顶你。 当你在在网上找一圈&#xff0c;BAIDU/BING/…...

足底筋膜炎如何治疗

足底筋膜炎主要表现为下床站立后或休息后再次走路时&#xff0c;出现足跟部的疼痛与不适症状&#xff0c;活动后可自行缓解&#xff0c;但走路时间长或较剧烈活动后&#xff0c;疼痛会再次加重&#xff0c;甚至有针扎样疼痛感向脚前部发散&#xff0c;影响患者的日常生活。 足…...