java基础面试10题
1.JVM、JRE 和 JDK 的关系
Jvm:java虚拟机,类似于一个小型的计算机,它能够将java程序编译后的.class 文件解释给相应平台的本地系统执行,从而实现跨平台。
jre:是运行java程序所需要的环境的集合,它包含了jvm的标准实现和java的核心类库。
jdk:是针对java开发的产品,其中包含了java运行环境jre和java的工具以及基础类库。
2.什么是跨平台性?原理是什么?
跨平台性指的是java的一次编译,可以在多个平台运行,即一次编译到处运行。
原理:java程序编译成.class文件后,运行在平台上的java虚拟机会将程序逻辑解释给本地系统,让本地系统底层去执行,说白了就是java程序不会与系统的底层打交道,需要java虚拟机这个中介传话。只要平台上安装有java虚拟机,都能够在该平台运行java程序。
3.&和&&的区别?
&& 操作符具有短路功能, 当前置条件为false 时,将不会判断后置的条件。如 false && xxxx ,程序将不会去判断xxxx是否为true或者false,反之 true && xxxx 时才会去判断。而 & 运算符无论什么时候都会判断两边的条件,当两边的表达式为true时结果为true
4.用最有效率的方法计算 2 乘以 8
使用移位运算 :16 >> 1 为 16 / 2 8 << 1 为 2 * 8
5.在没有使用临时变量的情况如何交换两个整数变量的值?
1.使用加减法:
a = a + b;
b = a - b;
a = a - b;
在执行第一个步骤时,a的值会变为x+y,这时我们可以利用这个和值来通过两次减法来得到b的新值。最后一步同理。
2.使用位运算:
a = a ^ b;
b = a ^ b;
a = a ^ b;
在执行第一个步骤时,a和b的值会进行异或运算,得到一个新的值c。此时,a的值变成了c,而b的值还是原来的y。在第二步中,我们将c和y再次进行异或运算,得到的结果就是原来的x,这个结果就被赋值给了b。最后一步同理。
6.short s1 = 1; s1 = s1 + 1;有错吗? short s1 = 1; s1 += 1;有错吗?
在Java中,short类型的数值是16位的有符号整数,范围是从 -32768 到 32767。对于 short s1 = 1; s1 = s1 + 1; 这行代码来说,s1 + 1的结果是一个int类型的值,需要将其强制转换为short类型才能赋值给s1,因此这行代码会报错。而对于 short s1 = 1; s1 += 1; 这行代码来说,它等价于 s1 = (short)(s1 + 1); 其中加法运算的结果会自动进行类型转换,然后再将结果强制转换为short类型,所有这行代码是合法的,不会报错。
7.float f=3.4;是否正确?
因为3.4是一个双精度浮点数,Java中的浮点数默认为双精度浮点数,而将一个双精度浮点数直接赋值给一个单精度浮点数变量是不安全的,因为单精度浮点数只有23位有效数字,而双精度浮点数有53位有效数字,会造成精度损失。要想正确的赋值,应该在数字后面加上一个f或F,将其显示地声明为单精度浮点数,即可以这样写:float f = 3.4f;
8.手动实现一下冒泡排序(快速排序)
冒泡排序:
public static void bubbleSort(int[] arr) {int n = arr.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 交换 arr[j] 和 arr[j+1] 的位置int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}
}
快速排序:
public static void quickSort(int[] arr, int left, int right) {if (left < right) {// 执行一次 partition 操作,将数组划分为两个子数组int pivotIndex = partition(arr, left, right);// 对左边子数组进行快速排序quickSort(arr, left, pivotIndex - 1);// 对右边子数组进行快速排序quickSort(arr, pivotIndex + 1, right);}
}
// partition 操作:将数组划分为左右两个子数组,并返回分界点的位置
private static int partition(int[] arr, int left, int right) {// 选取最后一个元素作为基准值int pivot = arr[right];// i 指向左子数组的末尾int i = left - 1;for (int j = left; j < right; j++) {if (arr[j] < pivot) {// 将 arr[j] 和左子数组的末尾交换位置i++;int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}// 将基准值放到分界点的位置上int temp = arr[i + 1];arr[i + 1] = arr[right];arr[right] = temp;// 返回分界点的位置return i + 1;
}
9.实现打印指定行数的空心菱形的功能
public static void printHollowDiamond(int n) {if (n % 2 == 0) {// 如果 n 是偶数,则将其加1,使得最中间的行有奇数个星号n++;}// 打印上半部分菱形for (int i = 1; i <= n / 2 + 1; i++) {for (int j = 1; j <= n / 2 + 1 - i; j++) {System.out.print(" ");}System.out.print("*");for (int k = 1; k < 2 * (i - 1); k++) {System.out.print(" ");}if (i != 1) {System.out.print("*");}System.out.println();}// 打印下半部分菱形for (int i = n / 2; i >= 1; i--) {for (int j = 1; j <= n / 2 + 1 - i; j++) {System.out.print(" ");}System.out.print("*");for (int k = 1; k < 2 * (i - 1); k++) {System.out.print(" ");}if (i != 1) {System.out.print("*");}System.out.println();}
}
10.题目:将一个正整数分解质因数。
例如:输入 90,打印出 90=2*3*3*5。
public static void factorize(int n) {System.out.print(n + "=");for (int i = 2; i <= n; i++) {while (n % i == 0) {System.out.print(i);n /= i;if (n != 1) {System.out.print("*");}}}
}
相关文章:
java基础面试10题
1.JVM、JRE 和 JDK 的关系 Jvm:java虚拟机,类似于一个小型的计算机,它能够将java程序编译后的.class 文件解释给相应平台的本地系统执行,从而实现跨平台。 jre:是运行java程序所需要的环境的集合,它包含了…...
Golang闭包问题及并发闭包问题
目录Golang闭包问题及并发闭包问题匿名函数闭包闭包可以不传入外部参数,仍然可以访问外部变量闭包提供数据隔离并发闭包为什么解决方法Golang闭包问题及并发闭包问题 参考原文链接:https://blog.csdn.net/qq_35976351/article/details/81986496 htt…...
基频的后处理
基频归一化 基频为什么要归一化?为了消除人际随机差异,提取恒定参数,在语际变异中找到共性。 引言 声调的主要载体就是基频。但是对声调的感知会因人而异,例如某个听感上的高升调,不同的调查人员可能会分别描写成 […...
vue3 toRefs详解
简介 toRefs函数的作用是将响应式对象中的所有属性转换为单独的响应式数据,对象成为普通对象,并且值是关联的。在这个过程中toRefs会做以下两件事: 把一个响应式对象转换成普通对象对该普通对象的每个属性都做一次ref操作,这样每…...
Spring——AOP是什么?如何使用?
一、什么是AOP?在不修改源代码的情况下 增加功能二、底层是什么?动态代理aop是IOC的一个扩展功能,现有IOC,再有AOP,只是在IOC的整个流程中新增的一个扩展点而已:BeanPostProcessorbean的创建过程中有一个步…...
【微服务】认识微服务
目录 1.1 单体、分布式、集群 单体 分布式 集群 1.2 系统架构演变 1.2.1 单体应⽤架构 1.2.2 垂直应⽤架构 1.2.3 分布式架构 1.2.4 SOA架构 1.2.5 微服务架构 1.3 微服务架构介绍 微服务架构的常⻅问题 1.4 SpringCloud介绍 1.4.1 SpringBoot和SpringCloud有啥关…...
【独家】华为OD机试 C 语言解题 - 最长连续子串
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南)华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明本期…...
【Linux】CentOS7操作系统安装nginx实战(多种方法,超详细)
文章目录前言一. 实验环境二. 使用yum安装nginx2.1 添加yum源2.1.1 使用官网提供的源地址(方法一)2.1.2 使用epel的方式进行安装(方法二)2.2 开始安装nginx2.3 启动并进行测试2.4 其他的一些用法:三. 编译方式安装ngin…...
【FMCW 01】中频IF信号
FMCW信号 调频连续波(frequency modulated continuous wave,FMCW)顾名思义,就是对信号的频率进行线性调制的信号。 从时域上看,对频率的调制,就像一把连续的锯齿波。其中每一个锯齿叫做一个chirp,其持续的时间叫做ch…...
【蓝桥杯试题】暴力枚举题型
💃🏼 本人简介:男 👶🏼 年龄:18 🤞 作者:那就叫我亮亮叭 📕 专栏:蓝桥杯试题 文章目录1. 统计方形(数据加强版)1. 1 题目描述1.2 思路…...
I.MX6ULL_Linux_系统篇(22) kernel移植
原厂 Linux 内核编译 NXP 提供的 Linux 源码肯定是可以在自己的 I.MX6ULL EVK 开发板上运行下去的,所以我们肯定是以 I.MX6ULL EVK 开发板为参考,然后将 Linux 内核移植到 I.MX6U-ALPHA 开发板上的。 配置编译 Linux 内核 和uboot一样,在编…...
UE实现相机聚焦物体功能
文章目录 1.实现目标2.实现过程2.1 实现原理2.2 源码浅析2.3 具体代码2.3.1 蓝图实现2.3.2 C++实现3.参考资料1.实现目标 实现根据输入的Actor,自动计算出其缩放显示到当前屏幕上相机的最终位置,然后相机飞行过去,实现相机对物体的聚集效果,避免每次输入FlyTo坐标参数,GI…...
算法系列之数值积分的目的
PLC算法里的数字积分器详细介绍请参看下面的文章链接: PLC算法系列之数值积分器(Integrator)_RXXW_Dor的博客-CSDN博客数值积分和微分在工程上的重要意义不用多说,闭环控制的PID控制器就是积分和微分信号的应用。流量累加也会用到。有关积分运算在流量累加上的应用,请参看下…...
【2.4 golang中循环语句for】
1. 循环语句for 1.1.1. Golang for支持三种循环方式,包括类似 while 的语法。 for循环是一个循环控制结构,可以执行指定次数的循环。 语法 Go语言的For循环有3中形式,只有其中的一种使用分号。 for init; condition; post { }for conditi…...
代码随想录 动态规划||343 96
Day35343. 整数拆分力扣题目链接给定一个正整数 n,将其拆分为至少两个正整数的和,并使这些整数的乘积最大化。 返回你可以获得的最大乘积。思路动规逻辑确定dp数组(dp table)以及下标的含义dp[i]指的是拆分数字i能得到的最大成绩d…...
Python---正则表达式
专栏:python 个人主页:HaiFan. 专栏简介:Python在学,希望能够得到各位的支持!!! 正则表达式前言概念作用和特点使用场景正则符号re模块re.compile()match()search()span()findall()group()sub()…...
Unity入门精要02---纹理
纹理和材质不可分割 本节知识结构 实践:简单贴一张纹理到模型上 首先在属性处添加相关属性 Properties {_Color ("Color Tint", Color) (1, 1, 1, 1)_MainTex ("Main Tex", 2D) "white" {}//加入纹理_Specular ("Specular&q…...
【Day1】一小时入门 python 基础,从安装到入门
文章目录python安装安装python安装 pycharmpython基础输出注释变量输入类型转换运算符自增字符串相关操作比较运算符逻辑运算符条件控制while循环list 列表for 循环range函数元组python 安装 安装python 官网进行下载:官网下载地址这里下载的一直是最新版本的 点…...
2D图像处理:相机标定
文章目录 效果一、相机标定的是什么?二、四个坐标系2.1 世界坐标系(X,Y,Z)2.2 相机坐标系(x,y,x)2.3 图像坐标系2.4 像素坐标系三、坐标系间的变换关系3.1 世界坐标系-->相机坐标系3.2 相机坐标系-->图像坐标系3.3图像坐标系-->像素坐标系四、相机畸变模型4.1 径向…...
windows 下 python 和repo 下载安装环境变量配置
repo 安装成功,但是下载代码 repo init的时候出错 不知道是不是repo windows版本有问题 python 最好下载2.6-2.7版本的 Python Releases for Windows | Python.org 不然下载代码会有问题,下不了,会提示安装2.6-2.7版本的 Windows下成功安…...
Qt Widget类解析与代码注释
#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
生成 Git SSH 证书
🔑 1. 生成 SSH 密钥对 在终端(Windows 使用 Git Bash,Mac/Linux 使用 Terminal)执行命令: ssh-keygen -t rsa -b 4096 -C "your_emailexample.com" 参数说明: -t rsa&#x…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
MySQL JOIN 表过多的优化思路
当 MySQL 查询涉及大量表 JOIN 时,性能会显著下降。以下是优化思路和简易实现方法: 一、核心优化思路 减少 JOIN 数量 数据冗余:添加必要的冗余字段(如订单表直接存储用户名)合并表:将频繁关联的小表合并成…...
免费数学几何作图web平台
光锐软件免费数学工具,maths,数学制图,数学作图,几何作图,几何,AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...
Web后端基础(基础知识)
BS架构:Browser/Server,浏览器/服务器架构模式。客户端只需要浏览器,应用程序的逻辑和数据都存储在服务端。 优点:维护方便缺点:体验一般 CS架构:Client/Server,客户端/服务器架构模式。需要单独…...
篇章二 论坛系统——系统设计
目录 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 1. 数据库设计 1.1 数据库名: forum db 1.2 表的设计 1.3 编写SQL 2.系统设计 2.1 技术选型 2.2 设计数据库结构 2.2.1 数据库实体 通过需求分析获得概念类并结合业务实现过程中的技术需要&#x…...
Java后端检查空条件查询
通过抛出运行异常:throw new RuntimeException("请输入查询条件!");BranchWarehouseServiceImpl.java // 查询试剂交易(入库/出库)记录Overridepublic List<BranchWarehouseTransactions> queryForReagent(Branch…...
