Java编程:每日挑战
目录
- 题目
- 1.一个抽象类并不需要其中所有的方法都是抽象的。( )
- 2.下面有关java hashmap的说法错误的是?
- A. HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。
- B. HashMap 的实现不是同步的,意味着它不是线程安全的。
- C. HashMap通过开放地址法解决哈希冲突。
- D. HashMap中的key-value都是存储在Entry数组中的。
- 3.如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( )
- 4.下列哪些方法是针对循环优化进行的
- A. 强度削弱 (Strength Reduction)
- B. 删除归纳变量 (Induction Variable Elimination)
- C. 删除多余运算 (Dead Code Elimination)
- D. 代码外提 (Code Motion)
- 总结
- 5.关于Java内存区域下列说法不正确的有哪些
- A. 程序计数器
- B. Java 虚拟机栈
- C. Java 堆
- D. 方法区
题目
选自牛客网
1.一个抽象类并不需要其中所有的方法都是抽象的。( )
A.正确
B.错误
正确答案:A
在面向对象编程中,抽象类是一种不能被实例化的类,它的主要目的是为了被继承。抽象类可以包含抽象方法和具体方法。抽象方法是没有实现的方法,需要在继承该抽象类的子类中进行具体实现;而具体方法则是已经实现了的方法,可以直接在抽象类中使用,子类可以选择重写也可以直接继承。因此,一个抽象类并不需要其中所有的方法都是抽象的,它可以同时包含抽象方法和具体方法。
2.下面有关java hashmap的说法错误的是?
A.HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。
B.HashMap 的实现不是同步的,意味着它不是线程安全的
C.HashMap通过开放地址法解决哈希冲突
D.HashMap中的key-value都是存储在Entry数组中的
正确答案:C
下面是针对每个选项的详细解释:
A. HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。
- 正确:
HashMap的性能确实受到“初始容量”和“加载因子”的影响。“初始容量”决定了HashMap内部数组的初始大小,“加载因子”是一个 0.0 到 1.0 之间的浮点数,用于确定何时需要对HashMap进行扩容。
默认情况下,HashMap的初始容量是 16,加载因子是 0.75。B. HashMap 的实现不是同步的,意味着它不是线程安全的。
- 正确:
HashMap的实现确实是非同步的,因此在多线程环境中使用HashMap时,需要采取额外的措施来保证线程安全。如果需要线程安全的HashMap,可以考虑使用
Collections.synchronizedMap(new HashMap<...>())或者
ConcurrentHashMap。C. HashMap通过开放地址法解决哈希冲突。
- 错误:
HashMap并不使用开放地址法来解决哈希冲突。相反,它使用链地址法。当发生哈希冲突时,HashMap会将具有相同哈希值的元素放在同一个数组索引位置下的链表或红黑树中(在 Java 8
中,当链表长度超过一定阈值时,链表会转化为红黑树以提高查找效率)。D. HashMap中的key-value都是存储在Entry数组中的。
- 正确:
HashMap使用一个内部数组来存储键值对。在 Java 8 之前,键值对是以Entry对象的形式存储在数组中。在 Java 8 中,HashMap的内部实现有所变化,引入了Node类来代替
Entry。因此,确切地说,键值对存储在Node数组中。综上所述,选项 C 描述的是错误的,因为
HashMap使用链地址法而不是开放地址法来解决哈希冲突。
3.如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是? ( )
A.void use() { …}
B.protected void use() { …}
C.public void use() { …}
D.以上语句都可以用在类SmallCup中
正确答案:C
在Java中,当一个类实现接口时,它必须提供接口中所有抽象方法的具体实现。接口中的方法默认是public和abstract的,因此在实现类中,必须以public访问修饰符实现这些方法。这意味着在类SmallCup中,正确实现接口Cup中的use()方法的方式应该是:
public void use() { … }
选项A和B都是错误的,因为它们使用了void或protected访问修饰符,这与接口中方法的默认访问修饰符public不符。在Java中,实现接口的方法必须是public的,以确保其他类能够调用这些方法。因此,正确答案是C,即在类SmallCup中,应该使用public访问修饰符来实现use()方法。
4.下列哪些方法是针对循环优化进行的
A.强度削弱
B.删除归纳变量
C.删除多余运算
D.代码外提
正确答案:ABD
循环优化是编译器优化技术的一部分,旨在提高程序的执行效率,特别是针对循环中的代码。下面是针对循环优化的一些常见方法:
A. 强度削弱 (Strength Reduction)
- 描述:强度削弱是一种优化技术,用于减少循环中的计算强度。它通常涉及将高成本的操作(如乘法)替换为低成本的操作(如加法或移位操作)。
- 示例:将
i * 2替换为i << 1。B. 删除归纳变量 (Induction Variable Elimination)
- 描述:删除归纳变量是指消除循环中的冗余变量更新,这些变量在循环中仅用于计算其他变量或用于条件判断,但在循环外部并不需要。
- 示例:如果循环中有
int i = 0; while (i < 10) { i++; },可以简化为for (int i = 0; i < 10; i++) {}。C. 删除多余运算 (Dead Code Elimination)
- 描述:删除多余运算是指删除那些在循环中不会影响输出结果的计算或赋值。这些计算可能是由于程序员的疏忽或者是因为某些条件分支导致的结果未被使用。
- 示例:如果循环中有
int x; if (false) { x = 5; },则x = 5;可以被删除,因为它永远不会被执行。D. 代码外提 (Code Motion)
- 描述:代码外提是指将循环体内不依赖于循环迭代的代码移动到循环体之外,以减少循环内的计算负担。
- 示例:如果循环中有
int y = 0; while (condition) { int x = 10; y += x; },
可以改为int x = 10; int y = 0; while (condition) { y += x; }。总结
- A. 强度削弱是循环优化的一种形式。
- B. 删除归纳变量是另一种循环优化方法。
- C. 删除多余运算虽然也是一种优化技术,但它并不是专门针对循环的优化。
- D. 代码外提同样是循环优化的一种形式。
因此,正确答案是 ABD。这些选项都涉及到了循环优化的技术。
5.关于Java内存区域下列说法不正确的有哪些
A.程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的信号指示器,每个线程都需要一个独立的程序计数器.
B.Java虚拟机栈描述的是java方法执行的内存模型,每个方法被执行的时候都会创建一个栈帧,用于存储局部变量表、类信息、动态链接等信息
C.Java堆是java虚拟机所管理的内存中最大的一块,每个线程都拥有一块内存区域,所有的对象实例以及数组都在这里分配内存。
D.方法区是各个线程共享的内存区域,它用于存储已经被虚拟机加载的常量、即时编译器编译后的代码、静态变量等数据。
选项 B 和 C 描述不正确。
下面是针对每个选项的详细解释:
A. 程序计数器
- 描述:程序计数器是一块较小的内存空间,它的作用可以看做是当前线程所执行的字节码的信号指示器,每个线程都需要一个独立的程序计数器。
- 正确性:正确。程序计数器是每个线程私有的内存区域,用于记录当前线程执行的字节码指令的位置。当线程执行的是 native 方法时,程序计数器的值为空(Undefined)。
B. Java 虚拟机栈
- 描述:Java 虚拟机栈描述的是 Java 方法执行的内存模型,每个方法被执行的时候都会创建一个栈帧,用于存储局部变量表、类信息、动态链接等信息。
- 正确性:不正确。类信息不是存储在 Java 虚拟机栈中,而是存储在方法区中。Java 虚拟机栈用于存储方法执行过程中所需的局部变量、操作数栈等信息。每个线程都有一个独立的栈,栈中的每个方法调用对应一个栈帧。
C. Java 堆
- 描述:Java 堆是 Java 虚拟机所管理的内存中最大的一块,每个线程都拥有一块内存区域,所有的对象实例以及数组都在这里分配内存。
- 正确性:不正确。Java 堆是所有线程共享的内存区域,而不是每个线程拥有一块。Java 堆用于存储所有对象实例和数组,它是垃圾收集器管理的主要区域。
D. 方法区
- 描述:方法区是各个线程共享的内存区域,它用于存储已经被虚拟机加载的常量、即时编译器编译后的代码、静态变量等数据。
- 正确性:正确。方法区存储了类的信息、静态变量、常量池等内容,它是所有线程共享的内存区域。
综上所述,选项 B 和 C 的描述不正确。选项 B 错误地指出类信息存储在 Java 虚拟机栈中,而实际上类信息存储在方法区中。选项 C
错误地描述了 Java 堆是由每个线程拥有的,实际上 Java 堆是所有线程共享的。
相关文章:
Java编程:每日挑战
目录 题目1.一个抽象类并不需要其中所有的方法都是抽象的。( )2.下面有关java hashmap的说法错误的是?A. HashMap 的实例有两个参数影响其性能:“初始容量” 和 “加载因子”。B. HashMap 的实现不是同步的,意味着它不…...
【自动驾驶】ubuntu server安装桌面版
目录 安装桌面版当锁屏界面使用root用户登录错误时 这里环境一开始是ubuntu20.04服务器版本 安装桌面版 sudo apt-get update sudo apt-get upgrade apt-get install -y ubuntu-desktop # 如果你不想安装一些附加的程序,可用以下命令 sudo apt install --no-instal…...
前端模块化-手写mini-vite
前言 本文总结了一些关于 Vite 的工作原理,以及一些实现细节。 本节对应的 demo 可以在这里找到。 什么是 Vite Vite 是一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports,在服务器端按需编译返回,完全跳过了打包这个…...
SpringBoot中fastjson扩展: 自定义序列化和反序列化方法实战
❃博主首页 : 「码到三十五」 ,同名公众号 :「码到三十五」,wx号 : 「liwu0213」 ☠博主专栏 : <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 :…...
【QT】鼠标按键事件 - QMouseEvent QKeyEvent
qt 事件 事件1. 事件概念2. 事件的处理3. 按键事件(1)单个按键(2)组合按键 4. 鼠标事件(1)鼠标单击事件(2)鼠标释放事件(3)鼠标双击事件(4&#x…...
纯手工在内网部署一个Docker私有仓库
纯手工在内网部署一个Docker私有仓库 下载Docker仓库的镜像上传仓库的镜像导入仓库的镜像启动仓库镜像配置客户端的Docker上传镜像到本地仓库从本地仓库拉取镜像 下载Docker仓库的镜像 这个镜像不太好找,有需要的可以从下面的地址中下载。 通过百度网盘分享的文件…...
农林经济管理学报
《农林经济管理学报》是由江西省教育厅主管、江西农业大学主办、北京大学中国农业政策研究中心和中国人民大学农业与农村发展学院学术支持的农林经管类学术双月刊,以主要刊载农林经济政策与理论,反映农林经济管理前沿动态和研究成果,开展学术…...
【初阶数据结构题目】16.用队列实现栈
用队列实现栈 点击链接答题 思路: 出栈:找不为空的队列,将size-1个数据导入到另一个队列中。 入栈:往不为空队列里面插入数据 取栈顶元素: 例如: 两个队列: Q1:1 2 3Q2:…...
使用 OpenAI Whisper v2 模型进行中英文混合语音识别
https://huggingface.co/openai/whisper-large-v2 使用 OpenAI Whisper 模型进行中英文混合语音识别 在本篇博客中,我们将详细介绍如何使用 OpenAI 的 Whisper 模型进行中英文混合语音识别,并设置 Hugging Face 的缓存路径。 简介 Whisper 是 OpenAI 提供的一个强大的自动…...
代码随想录算法训练营day37|动态规划part05
完全背包问题; 第一题:518. Coin Change II class Solution {public int change(int amount, int[] coins) {//递推表达式int[] dp new int[amount 1];//初始化dp数组,表示金额为0时只有一种情况,也就是什么都不装dp[0] 1;fo…...
Git 如何提交代码
一. 简介 前面几篇文章简单学习了 git常用命令,文章如下: Git使用过程中涉及的几个区域-CSDN博客 Git常用命令的使用-CSDN博客 本文学习一下 如何使用 git命令,将本地代码提交到远程仓库。 二. 使用 git命令将本地代码提交到远程仓库中 …...
SpringBoot-application.properties为对象赋值
简单对象赋值 第一种方式 首先让该Bean交由Spring管理,然后加上ConfigurationProperties(prefix"前缀") <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId>&l…...
Head First设计模式学习笔记
Head First设计模式学习笔记 大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿! 一、策略模式 策略模式定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让…...
240806-RHEL 无法通过 ssh username@ip 远程连接,报错:Connection closed by ip port 22
A. 原因排查 遇到这个错误通常意味着 SSH 服务可能在目标主机上没有正常运行,或有防火墙/网络配置问题。以下是一些排查步骤: 检查 SSH 服务状态: 确认 SSH 服务是否正在目标主机上运行。 sudo systemctl status sshd重启 SSH 服务ÿ…...
C语言:复读机2种写法(输入什么就输出什么)
(1)题目:输入什么内容,输出就是什么内容,遇到"#"为止。输入一个随便的字符 (2)代码: 【1】getchar()和putchar() #include "stdio.h"int main() {char ch;pr…...
PySide6/PyQT学习笔记(很杂)
QGroupBox样式:科技机甲 QGroupBox { border: 2px solid #333; /* 深色边框,类似金属质感 */ border-radius: 8px; /* 轻微的圆角 */ background-color: #222; /* 暗色背景,模拟机甲内部或科技界面 */ color: #fff; /* 字体颜色为白色&a…...
学习笔记-JWT 保持登录状态
目录 一、解析 token 1. 在 JWT 工具类添加解析 token 的方法 2. 在 Controller 添加获取用户数据的方法 二、获取用户信息 1. 发起 axios 请求用户信息 2. 在路由守卫中调用方法 3. 使用 三、token 时效性 1. 设置 token 过期时间 2. 判断 token 是否过期 3. 在拦截…...
React 性能优化
使用 useMemo 缓存数据 (类似 vue 的 computed)使用 useCallback 缓存函数异步组件 ( lazy )路由懒加载( lazy )服务器渲染 SSR用 CSS 模拟 v-show 循环渲染添加 key使用 Fragment (空标签)减少层级 不在JSX 中定义函数࿰…...
后端常见问题及深度解决方案
🐟作者简介:一名大三在校生,喜欢编程🪴 🐡🐙个人主页🥇:Aic山鱼 🐠WeChat:z7010cyy 🦈系列专栏:🏞️ 前端-JS基础专栏✨前…...
C:野指针介绍(定义、危害、规避)以及野指针与空指针的区分
目录 1、野指针 1.1 野指针的成因 1.指针未初始化 2.指针越界访问 3.指针指向的空间释放 1.2 野指针的危害 1.3 如何规避野指针 1. 指针初始化 2. 小心指针越界 3.指针变量不使用就及时赋上NULL 4. 指针使用前检查是否是空指针 5. 避免返回局部变量的地址 1.4 区…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...
OD 算法题 B卷【正整数到Excel编号之间的转换】
文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的:a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
针对药品仓库的效期管理问题,如何利用WMS系统“破局”
案例: 某医药分销企业,主要经营各类药品的批发与零售。由于药品的特殊性,效期管理至关重要,但该企业一直面临效期问题的困扰。在未使用WMS系统之前,其药品入库、存储、出库等环节的效期管理主要依赖人工记录与检查。库…...
文件上传漏洞防御全攻略
要全面防范文件上传漏洞,需构建多层防御体系,结合技术验证、存储隔离与权限控制: 🔒 一、基础防护层 前端校验(仅辅助) 通过JavaScript限制文件后缀名(白名单)和大小,提…...
计算机系统结构复习-名词解释2
1.定向:在某条指令产生计算结果之前,其他指令并不真正立即需要该计算结果,如果能够将该计算结果从其产生的地方直接送到其他指令中需要它的地方,那么就可以避免停顿。 2.多级存储层次:由若干个采用不同实现技术的存储…...
