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

java面试题第一弹

Java 的基本数据类型有哪些?

Java 的基本数据类型(primitive data types)包括以下八种:

  1. byte

    • 尺寸:1 字节(8 位)。
    • 范围:-128 到 127。
    • 用途:节省内存,适合处理大量数据时的情况,如在文件或网络传输中。
  2. short

    • 尺寸:2 字节(16 位)。
    • 范围:-32,768 到 32,767。
    • 用途:与 byte 类似,用于节省内存,但范围更大。
  3. int

    • 尺寸:4 字节(32 位)。
    • 范围:-2,147,483,648 到 2,147,483,647。
    • 用途:常用的整数类型,适用于大多数计算。
  4. long

    • 尺寸:8 字节(64 位)。
    • 范围:-9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。
    • 用途:当 int 类型范围不够时使用,适合需要处理大整数的场景。
  5. float

    • 尺寸:4 字节(32 位)。
    • 范围:约为 1.4E-45 到 3.4E+38。
    • 用途:用于表示单精度浮点数,适合对精度要求不高的场景。
  6. double

    • 尺寸:8 字节(64 位)。
    • 范围:约为 4.9E-324 到 1.8E+308。
    • 用途:用于表示双精度浮点数,适合对精度要求较高的场景。
  7. char

    • 尺寸:2 字节(16 位)。
    • 范围:0 到 65,535(Unicode 字符)。
    • 用途:用于表示单个字符,支持国际化字符。
  8. boolean

    • 尺寸:不可确定(通常是 1 位,但具体实现依赖于 JVM)。
    • 范围:只有两个值:truefalse
    • 用途:用于表示逻辑值,通常用于条件判断。

这些基本数据类型是 Java 的基础,使用时可以直接定义变量,存储相应类型的值。

什么是 Java 虚拟机(JVM)?

Java 虚拟机(JVM,Java Virtual Machine)是 Java 运行环境的核心部分,其主要功能是执行 Java 字节码。以下是 JVM 的一些关键特点和工作原理:

1. 字节码执行

  • Java 程序在编译后会生成 .class 文件,这些文件包含 Java 字节码。JVM 负责将字节码转换为机器代码并执行。

2. 跨平台性

  • JVM 的一个重要特性是平台独立性。只要有适合特定平台的 JVM,就可以运行编译好的 Java 程序。因此,Java 的 “一次编写,到处运行”(Write Once, Run Anywhere)理念得以实现。

3. 内存管理

  • JVM 管理内存,包括堆、栈、方法区等。堆用于存储对象,栈用于存储方法调用和局部变量。方法区存储类信息、常量、静态变量等。

4. 垃圾回收

  • JVM 负责自动内存管理,包括垃圾回收(Garbage Collection)。它会定期清理不再使用的对象,释放内存,防止内存泄漏。

5. 类加载机制

  • JVM 使用类加载器(Class Loader)动态加载类。它支持多种类加载器,例如引导类加载器、扩展类加载器和应用类加载器,确保类的正确加载和链接。

6. JIT 编译

  • JVM 包含即时编译器(Just-In-Time Compiler),可以将热点代码(频繁执行的代码)编译为机器码,以提高性能。

7. 线程管理

  • JVM 提供对多线程的支持,通过线程调度器管理线程的执行,支持同步和异步操作。

8. 安全性

  • JVM 通过字节码验证器确保代码的安全性,防止恶意代码的执行。它提供沙盒环境来限制程序的访问权限。

9. Java 运行时环境(JRE)

  • JVM 是 JRE 的一部分,JRE 还包括类库和其他组件,使得 Java 程序能够运行。

10. JVM 实现

  • 不同的实现可能会有不同的优化和特性,常见的 JVM 实现包括 Oracle HotSpot、OpenJ9 和 GraalVM。

总结来说,Java 虚拟机是 Java 程序运行的基础,负责将 Java 字节码转换为可执行的机器代码,同时管理内存和线程,提供安全性和跨平台能力。

解释一下 Java 中的面向对象特性。

Java 是一种面向对象的编程语言,主要有四个核心面向对象特性:封装、继承、多态和抽象。以下是对这四个特性的具体说明:

1. 封装(Encapsulation)

  • 定义:封装是将数据(属性)和操作数据的方法(行为)结合在一起,并限制对这些数据的访问。
  • 实现:通过使用访问修饰符(如 privateprotectedpublic)来控制对类成员的访问。通常,将类的字段设为 private,并提供公共的 getter 和 setter 方法来访问和修改这些字段。
  • 优点
    • 提高了数据的安全性。
    • 隐藏实现细节,只暴露必要的接口,使得类的使用更加简单。

2. 继承(Inheritance)

  • 定义:继承是一种机制,允许一个类(子类)继承另一个类(父类)的属性和方法。
  • 实现:使用 extends 关键字。例如,class Dog extends Animal 表示 DogAnimal 的子类。
  • 优点
    • 代码重用:子类可以重用父类的代码,减少重复。
    • 扩展性:可以通过子类扩展父类的功能,实现更具体的行为。

3. 多态(Polymorphism)

  • 定义:多态允许同一方法在不同对象上表现出不同的行为。
  • 实现
    • 方法重载(Overloading):同一类中可以定义多个同名但参数不同的方法。
    • 方法重写(Overriding):子类可以重写父类的方法,提供具体实现。
  • 优点
    • 使得代码更加灵活和可扩展。可以通过接口或父类类型的引用调用子类的方法,而不必知道具体的实现。

4. 抽象(Abstraction)

  • 定义:抽象是指通过抽取事物的共同特征来简化复杂性,隐藏不必要的实现细节。
  • 实现
    • 抽象类:可以包含抽象方法(没有实现)和具体方法(有实现)。使用 abstract 关键字定义。例如:
      abstract class Animal {abstract void makeSound(); // 抽象方法void eat() { /* 具体方法 */ }
      }
      
    • 接口:定义一组方法,但不提供实现。使用 interface 关键字。例如:
      interface Animal {void makeSound(); // 方法没有实现
      }
      
  • 优点
    • 抽象允许开发者专注于高层设计而不是低层实现,提升代码的可维护性和可读性。

总结

Java 的面向对象特性使得程序设计更加符合现实世界的建模,提升了代码的可重用性、可扩展性和可维护性。这些特性是 Java 成为流行编程语言的重要原因之一。

相关文章:

java面试题第一弹

Java 的基本数据类型有哪些? Java 的基本数据类型(primitive data types)包括以下八种: byte: 尺寸:1 字节(8 位)。范围:-128 到 127。用途:节省内存&#x…...

住宅HTTP代理:提升网络隐私与安全的新选择

在互联网时代,我们的在线隐私和安全变得越来越重要。无论是浏览网页、进行在线交易,还是访问受限内容,住宅HTTP代理都能为我们提供一种可靠的解决方案。今天,我们就来深入探讨一下住宅HTTP代理,看看它是如何帮助我们提…...

字符串函数(2)

目录 前言1. strlen1.1 strlen函数的理解和使用1.2 strlen函数的模拟实现 2. strcpy2.1 strcpy函数的理解和使用2.2 strcpy函数的模拟实现 3.strcat3.1 strcat函数的理解和使用3.2 strcat 函数的模拟实现 前言 在上一篇文章中,我们对字符分类函数和字符转换函数进行…...

Linux--守护进程与会话

进程组 概念 进程组就是一个或多个进程的集合。 一个进程组可以包含多个进程。 下面我们通过一句简单的命令行来展示: 为什么会有进程组? 批量操作:进程组允许将多个进程组织在一起,形成一个逻辑上的整体。当需要对多个进程…...

C++ 笔试常用算法模板

C 笔试常用算法模板 一、二叉树遍历DFSBFS 二、回溯模板三、动态规划01背包朴素版本滚动数组优化 完全背包朴素版本滚动数组优化 最长递增子序列朴素版本贪心二分优化 最长公共子序列最长回文子串 四、图建图邻接矩阵邻接表 图的遍历DFSBFS 拓扑排序并查集最小生成树Kruskalpri…...

李宏毅2023机器学习作业HW07解析和代码分享

ML2023Spring - HW7 相关信息: 课程主页 课程视频 Kaggle link 回来了 : ) Sample code HW07 视频 HW07 PDF 个人完整代码分享: GitHub | Gitee | GitCode P.S. HW7 的代码都很易懂,可以和 2024 年的新课:生成式AI导论做一个很好的衔接&#…...

ansible远程自动化运维、常用模块详解

一、ansible是基于python开发的配置管理和应用部署工具;也是自动化运维的重要工具;可以批量配置、部署、管理上千台主机;只需要在一台主机配置ansible就可以完成其它主机的操作。 1.操作模式: 模块化操作,命令行执行…...

【若依框架】按时间查询数据的操作

【若依框架】按时间查询数据的操作 若依框架按起止时间查询数据示例&#xff1a; Date tempDate DateUtil.offsetDay(new Date(), -days);Map<String, Object> map new HashMap<>();map.put("beginRecordTime", DateUtil.beginOfHour(tempDate));map.…...

人工智能将来好就业吗?

人工智能将来好就业吗? 随着科技的不断进步&#xff0c;人工智能&#xff08;AI&#xff09;正逐渐成为推动全球经济发展的核心力量之一。从智能机器人到自动驾驶汽车&#xff0c;从语音识别到图像分析&#xff0c;AI正在改变我们的工作方式以及我们与世界的互动方式。那么&am…...

JAVA SE 11

文章目录 JDK 11 特性介绍语法增强1. String类的增强2. Optional类的增强3. 新的HTTP/2客户端4. var关键字的扩展5. Collection接口的增强 语法改进JDK 11引入的一些语法改进 详细介绍1. 模块化系统&#xff08;Java平台模块系统&#xff0c;JPMS&#xff09;2. HTTP客户端3. 改…...

【MySQ】在MySQL里with 的用法

在MySQL中&#xff0c;WITH语句通常与公用表表达式&#xff08;Common Table Expressions&#xff0c;简称CTE&#xff09;一起使用。CTE是一种临时的结果集&#xff0c;类似于视图或子查询&#xff0c;它们在查询中被定义并且可以在一个或多个SELECT、INSERT、UPDATE或DELETE语…...

多源最短路径

文章目录 1. 01 矩阵&#xff08;542&#xff09;2. 飞地的数量&#xff08;1020&#xff09;3. 地图分析&#xff08;1162&#xff09;4. 地图中的最高点&#xff08;1765&#xff09; 1. 01 矩阵&#xff08;542&#xff09; 题目描述&#xff1a; 算法原理&#xff1a; 这…...

在 Mac 中设置环境变量

目录 什么是环境变量&#xff0c;为什么它们重要&#xff1f;什么是环境变量&#xff1f;举个例子 如何查看环境变量如何设置和修改环境变量1. 临时设置环境变量2. 永久设置环境变量3. 修改现有环境变量 环境变量在开发中的应用在 Node.js 项目中使用环境变量在 Python 项目中使…...

记录一次ubuntu /mysql/redis/nginx等 系统安装

没想到还会做一次系统安装配置类的工作&#xff0c;没办法&#xff0c;碰到问题了&#xff0c;总得解决。 安装 &网络配置 从网上下载了ubuntu 18.04.6的安装包&#xff0c;用UltraISO做安装盘&#xff0c;到服务器上修改了下启动顺序&#xff0c;ubuntu的安装非常简单&a…...

大型语言模型 (LLM) 劫持攻击不断升级,导致每天损失超过 100,000 美元

Sysdig 威胁研究团队 (TRT) 报告称&#xff0c;LLMjacking&#xff08;大型语言模型劫持&#xff09;事件急剧增加&#xff0c;攻击者通过窃取的云凭证非法访问大型语言模型 (LLM)。 这一趋势反映了 LLM 访问黑市的不断增长&#xff0c;攻击者的动机包括个人使用和规避禁令和制…...

Java 入门指南:JVM(Java虚拟机)垃圾回收机制 —— 垃圾收集器

文章目录 垃圾回收机制Stop-the-World垃圾收集器垃圾收集器分类Serial 收集器Serial Old 收集器ParNew 收集器Parallel Scavenge 收集器Parallel Old 收集器CMS 收集器CMS 收集器缺点 G1 收集器G1 收集器特点G1 收集器的分代理念G1 收集器运作过程 垃圾回收机制 垃圾回收&…...

nano 命令:文本编辑器

一、命令简介 ​nano​ 是一个简单易用的文本编辑器&#xff0c;适合初学者和那些不需要复杂功能的用户。 ​​ ‍ 相关命令&#xff08;不同难度的编辑器&#xff09;&#xff1a; 初级难度&#xff1a;nano中级难度&#xff1a;vim终极难度&#xff1a;Emacs ‍ 二、命…...

【2020工业图像异常检测文献】SPADE

Sub-Image Anomaly Detection with Deep Pyramid Correspondences 1、Background 利用深度预训练特征的最近邻&#xff08; kNN &#xff09;方法在应用于整个图像时表现出非常强的异常检测性能。kNN 方法的一个局限性是缺乏描述图像中异常位置的分割图。 为了解决这一问题&a…...

C++QT医院专家门诊预约管理系统

目录 一、项目介绍 二、项目展示 三、源码获取 一、项目介绍 医院专家门诊预约管理系统 [要求] 该系统需创建和管理以下信息&#xff1a;1、门诊专家信息&#xff1a;专家姓名、编号、性别、年龄、职称、门诊科目、服务时间、门诊预约数据集等&#xff1b;2、门诊预约信息…...

在SpringBoot项目中利用Redission实现布隆过滤器(布隆过滤器的应用场景、布隆过滤器误判的情况、与位图相关的操作)

文章目录 1. 布隆过滤器的应用场景2. 在SpringBoot项目利用Redission实现布隆过滤器3. 布隆过滤器误判的情况4. 与位图相关的操作5. 可能遇到的问题&#xff08;Redission是如何记录布隆过滤器的配置参数的&#xff09;5.1 问题产生的原因5.2 解决方案5.2.1 方案一&#xff1a;…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】

1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件&#xff08;System Property Definition File&#xff09;&#xff0c;用于声明和管理 Bluetooth 模块相…...

Python爬虫(一):爬虫伪装

一、网站防爬机制概述 在当今互联网环境中&#xff0c;具有一定规模或盈利性质的网站几乎都实施了各种防爬措施。这些措施主要分为两大类&#xff1a; 身份验证机制&#xff1a;直接将未经授权的爬虫阻挡在外反爬技术体系&#xff1a;通过各种技术手段增加爬虫获取数据的难度…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析

Linux 内存管理实战精讲&#xff1a;核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用&#xff0c;还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

云原生安全实战:API网关Kong的鉴权与限流详解

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 一、基础概念 1. API网关&#xff08;API Gateway&#xff09; API网关是微服务架构中的核心组件&#xff0c;负责统一管理所有API的流量入口。它像一座…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...