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

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.一个抽象类并不需要其中所有的方法都是抽象的。&#xff08; &#xff09;2.下面有关java hashmap的说法错误的是&#xff1f;A. HashMap 的实例有两个参数影响其性能&#xff1a;“初始容量” 和 “加载因子”。B. HashMap 的实现不是同步的&#xff0c;意味着它不…...

【自动驾驶】ubuntu server安装桌面版

目录 安装桌面版当锁屏界面使用root用户登录错误时 这里环境一开始是ubuntu20.04服务器版本 安装桌面版 sudo apt-get update sudo apt-get upgrade apt-get install -y ubuntu-desktop # 如果你不想安装一些附加的程序&#xff0c;可用以下命令 sudo apt install --no-instal…...

前端模块化-手写mini-vite

前言 本文总结了一些关于 Vite 的工作原理&#xff0c;以及一些实现细节。 本节对应的 demo 可以在这里找到。 什么是 Vite Vite 是一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports&#xff0c;在服务器端按需编译返回&#xff0c;完全跳过了打包这个…...

SpringBoot中fastjson扩展: 自定义序列化和反序列化方法实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…...

【QT】鼠标按键事件 - QMouseEvent QKeyEvent

qt 事件 事件1. 事件概念2. 事件的处理3. 按键事件&#xff08;1&#xff09;单个按键&#xff08;2&#xff09;组合按键 4. 鼠标事件&#xff08;1&#xff09;鼠标单击事件&#xff08;2&#xff09;鼠标释放事件&#xff08;3&#xff09;鼠标双击事件&#xff08;4&#x…...

纯手工在内网部署一个Docker私有仓库

纯手工在内网部署一个Docker私有仓库 下载Docker仓库的镜像上传仓库的镜像导入仓库的镜像启动仓库镜像配置客户端的Docker上传镜像到本地仓库从本地仓库拉取镜像 下载Docker仓库的镜像 这个镜像不太好找&#xff0c;有需要的可以从下面的地址中下载。 通过百度网盘分享的文件…...

农林经济管理学报

《农林经济管理学报》是由江西省教育厅主管、江西农业大学主办、北京大学中国农业政策研究中心和中国人民大学农业与农村发展学院学术支持的农林经管类学术双月刊&#xff0c;以主要刊载农林经济政策与理论&#xff0c;反映农林经济管理前沿动态和研究成果&#xff0c;开展学术…...

【初阶数据结构题目】16.用队列实现栈

用队列实现栈 点击链接答题 思路&#xff1a; 出栈&#xff1a;找不为空的队列&#xff0c;将size-1个数据导入到另一个队列中。 入栈&#xff1a;往不为空队列里面插入数据 取栈顶元素&#xff1a; 例如&#xff1a; 两个队列&#xff1a; Q1&#xff1a;1 2 3Q2&#xff1a;…...

使用 OpenAI Whisper v2 模型进行中英文混合语音识别

https://huggingface.co/openai/whisper-large-v2 使用 OpenAI Whisper 模型进行中英文混合语音识别 在本篇博客中,我们将详细介绍如何使用 OpenAI 的 Whisper 模型进行中英文混合语音识别,并设置 Hugging Face 的缓存路径。 简介 Whisper 是 OpenAI 提供的一个强大的自动…...

代码随想录算法训练营day37|动态规划part05

完全背包问题&#xff1b; 第一题&#xff1a;518. Coin Change II class Solution {public int change(int amount, int[] coins) {//递推表达式int[] dp new int[amount 1];//初始化dp数组&#xff0c;表示金额为0时只有一种情况&#xff0c;也就是什么都不装dp[0] 1;fo…...

Git 如何提交代码

一. 简介 前面几篇文章简单学习了 git常用命令&#xff0c;文章如下&#xff1a; Git使用过程中涉及的几个区域-CSDN博客 Git常用命令的使用-CSDN博客 本文学习一下 如何使用 git命令&#xff0c;将本地代码提交到远程仓库。 二. 使用 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设计模式学习笔记 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;是个冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 一、策略模式 策略模式定义了算法族&#xff0c;分别封装起来&#xff0c;让它们之间可以互相替换&#xff0c;此模式让…...

240806-RHEL 无法通过 ssh username@ip 远程连接,报错:Connection closed by ip port 22

A. 原因排查 遇到这个错误通常意味着 SSH 服务可能在目标主机上没有正常运行&#xff0c;或有防火墙/网络配置问题。以下是一些排查步骤&#xff1a; 检查 SSH 服务状态&#xff1a; 确认 SSH 服务是否正在目标主机上运行。 sudo systemctl status sshd重启 SSH 服务&#xff…...

C语言:复读机2种写法(输入什么就输出什么)

&#xff08;1&#xff09;题目&#xff1a;输入什么内容&#xff0c;输出就是什么内容&#xff0c;遇到"#"为止。输入一个随便的字符 &#xff08;2&#xff09;代码&#xff1a; 【1】getchar()和putchar() #include "stdio.h"int main() {char ch;pr…...

PySide6/PyQT学习笔记(很杂)

QGroupBox样式&#xff1a;科技机甲 QGroupBox { border: 2px solid #333; /* 深色边框&#xff0c;类似金属质感 */ border-radius: 8px; /* 轻微的圆角 */ background-color: #222; /* 暗色背景&#xff0c;模拟机甲内部或科技界面 */ color: #fff; /* 字体颜色为白色&a…...

学习笔记-JWT 保持登录状态

目录 一、解析 token 1. 在 JWT 工具类添加解析 token 的方法 2. 在 Controller 添加获取用户数据的方法 二、获取用户信息 1. 发起 axios 请求用户信息 2. 在路由守卫中调用方法 3. 使用 三、token 时效性 1. 设置 token 过期时间 2. 判断 token 是否过期 3. 在拦截…...

React 性能优化

使用 useMemo 缓存数据 &#xff08;类似 vue 的 computed&#xff09;使用 useCallback 缓存函数异步组件 ( lazy )路由懒加载( lazy )服务器渲染 SSR用 CSS 模拟 v-show 循环渲染添加 key使用 Fragment &#xff08;空标签&#xff09;减少层级 不在JSX 中定义函数&#xff0…...

后端常见问题及深度解决方案

&#x1f41f;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢编程&#x1fab4; &#x1f421;&#x1f419;个人主页&#x1f947;&#xff1a;Aic山鱼 &#x1f420;WeChat&#xff1a;z7010cyy &#x1f988;系列专栏&#xff1a;&#x1f3de;️ 前端-JS基础专栏✨前…...

C:野指针介绍(定义、危害、规避)以及野指针与空指针的区分

目录 1、野指针 1.1 野指针的成因 1.指针未初始化 2.指针越界访问 3.指针指向的空间释放 1.2 野指针的危害 1.3 如何规避野指针 1. 指针初始化 2. 小心指针越界 3.指针变量不使用就及时赋上NULL 4. 指针使用前检查是否是空指针 5. 避免返回局部变量的地址 1.4 区…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Linux --进程控制

本文从以下五个方面来初步认识进程控制&#xff1a; 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程&#xff0c;创建出来的进程就是子进程&#xff0c;原来的进程为父进程。…...

Java毕业设计:WML信息查询与后端信息发布系统开发

JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发&#xff0c;实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构&#xff0c;服务器端使用Java Servlet处理请求&#xff0c;数据库采用MySQL存储信息&#xff0…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...

Bean 作用域有哪些?如何答出技术深度?

导语&#xff1a; Spring 面试绕不开 Bean 的作用域问题&#xff0c;这是面试官考察候选人对 Spring 框架理解深度的常见方式。本文将围绕“Spring 中的 Bean 作用域”展开&#xff0c;结合典型面试题及实战场景&#xff0c;帮你厘清重点&#xff0c;打破模板式回答&#xff0c…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...