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

2024届校招-Java开发笔试题-S4卷

有三种题型:单项选择题(10道)、不定项选择题(10道)、编程题(3道)

下面是一些回忆的题目:

1.哪种设计模式将对象的创建与使用分离,通过工厂类创建对象

答:工厂模式
工厂模式是一种创建型设计模式,它旨在将对象的创建与使用分离。通过引入一个工厂类,客户端代码可以委托工厂类来创建所需的对象,而不必直接实例化对象。这有助于降低耦合度并提高代码的可维护性。

2.运行中的线程,执行Thread.sleep(5000)方法后,,当时间过去5s后,线程状态为

答:可运行(Runnable)状态,等待系统调度来继续执行。

3.new java.math.Big Decimal(0.1)是否会丢失精度
答:不会,BigDecimal类是用来表示精确的任意精度的十进制数,不会引发浮点数的精度问题。然而,如果使用浮点数字面值(例如0.1)来初始化BigDecimal,那么在转换过程可能会引发精度问题,应使用字符串初始化BigDecimal,直接将字符串文本转换为BigDecimal。

4.关于@Import注解的选择题

答:@Import注解是Java Spring 框架中的一个注解,用于在配置类中引入其他配置类,从而将它们的配置合并到当前配置中。它允许开发者在一个配置类中引入其他配置,以便组织和管理Spring应用程序的配置。
@Import注解动态注入方式可通过使用ImportSelector接口的类来实现。但并不是唯一的方式,还可以通过条件化的@Import注解、编程方式的条件化注入、条件化的BeanDefinition注册。

5.创建型设计模式有哪些?

答:创建型设计模式是一种软件设计模式,它们关注如何创建对象,以便在应用程序中更灵活、更高效地管理对象的创建和初始化。以下是一些常见的创建型设计模式:单例模式(Singleton Pattern)、工厂模式(Factory Pattern)、抽象工厂模式(Abstract Factory Pattern)、建造者模式(Builder Pattern)、原型模式(Prototype Pattern)

6.快速排序最坏时间复杂度?
O(n^2),平均时间复杂度为O(n*log(n))

7.匹配“一”“二”“三”……“十”的中文正则表达式是
[一二三四五六七八九十]

8.哪些场景适合使用NIO模型?

Java NIO(New I/O)模型适合处理需要高并发、高吞吐量和低延迟的网络通信和文件I/O场景。以下是一些适合使用NIO模型的常见场景:网络编程、文件I/O、多路复用、实时数据处理、高性能代理和网关

9.哪些集合类是线程安全的?

答:集合类的线程安全意味着多个线程可以同时访问和修改这些集合而不会导致数据不一致或抛出并发异常。以下是一些线程安全的集合类:Vector、HashTable、ConcurrentHashMap、CopyOnWriteArrayList、CopyOnWriteArraySet、ConcurrentLinkedQueue、BlockingQueue。

10.哪些属于进程同步机制?

答:线程同步机制是用于协调和管理多个进程之间的执行顺序以及访问共享资源的一组技术。以下是一些常见的进程同步机制:互斥锁(Mutex)、信号量(Semaphore)、条件变量(Condition Variable)、屏障(Barrier)、读写锁(Read-Write Lock)、管程(Monitor)、自旋锁(Spin Lock)、消息传递

  1. 当浏览器缓存中有缓存版本时,哪个HTTP响应头字段可以用于验证缓存是否仍然有效
    答:ETag(实体标签)、Last-Modified(最后修改时间)

  2. 哪些可以增强Cookie的安全性

答:使用HTTPOnly标志;使用Secure标志、设置Cookie的SameSite属性;限制Cookie的有效期;对Cookie的内容进行加密;在服务器端验证Cookie;实施双重身份验证(2FA);定期更改Cookie值;监控和审计;

编程题:

  1. 有n个城市通过m个航班连接。每个航班都从城市u开始,以价格w抵达v。现在给定所有的城市和航班,以及出发城市src,你的任务是找到从src城市出发到其他所有城市最便宜的机票价格列表。
    如果无法从src到达某个城市,则他们的价格-1表示。
    输入n=3,edges=[[0,1,100],[1,2,100],[0,2,500],src=0
    输出:[0,100,200]
/*** 有n个城市通过m个航班连接。每个航班都从城市u开始,以价格w抵达v。现在给定所有的城市和航班,以及出发城市src,* 你的任务是找到从src城市出发到其他所有城市最便宜的机票价格列表。* 如果无法从src到达某个城市,则他们的价格-1表示。** 输入n=3,edges=[[0,1,100],[1,2,100],[0,2,500],src=0* 输出:[0,100,200]***/import java.util.*;
public class CheapestPrices {public int[] findCheapestPrice(int n, int[][] flights, int src) {//n代表城市个数//flights 是一个包含多个一维数组的二维数组。每个一维数组都表示一条航班的信息,//flights[i][0] 是起始城市的编号,flights[i][1] 是目标城市的编号,flights[i][2] 是航班的价格。//src 代表出发城市,题目的意思就是要找出从src出发到其他所有城市出发最便宜的价格。// 创建一个邻接表来表示城市之间的航班价格List<int[]>[] graph = new List[n];//graph[i] 存储与城市 i 相关的航班信息。for (int i = 0; i < n; i++) {graph[i] = new ArrayList<>();//表示每个索引 i 处的元素都是一个空的整数数组列表。}for (int[] flight : flights) { //这段循环用于将航班信息从二维数组 flights 添加到图数据结构 graph 中int u = flight[0];int v = flight[1];int w = flight[2];graph[u].add(new int[]{v, w});//将一个新的整数数组 {v, w} 添加到列表中}// 初始化距离数组,初始距离为无穷大int[] distances = new int[n];//该数组用来存储从出发城市 src 到其他城市的距离信息Arrays.fill(distances, Integer.MAX_VALUE);distances[src] = 0;//将出发城市 src 到自身的距离设置为0// 使用最小堆来进行Dijkstra算法PriorityQueue<int[]> minHeap = new PriorityQueue<>((a, b) -> a[1] - b[1]);//minHeap用于存储待处理的节点minHeap.offer(new int[]{src, 0});//将出发城市 src 到自身的距离为0的节点添加到优先队列while (!minHeap.isEmpty()) {int[] current = minHeap.poll();//从优先队列 minHeap 中取出队首元素,即距离最短的节点int currentCity = current[0];//current[0] 表示当前节点的城市编号int currentCost = current[1];//current[1] 表示从起始城市到当前城市的距离。//用于检查当前节点的距离是否已经被更新过//如果 currentCost 大于 distances[currentCity],//则表示已经有更短的路径到达当前城市,因此可以忽略当前节点,继续处理下一个节点if (currentCost > distances[currentCity]) {continue;}for (int[] neighbor : graph[currentCity]) {int neighborCity = neighbor[0];//neighbor[0] 表示邻居城市的编号int neighborCost = neighbor[1];//neighbor[1] 表示从当前城市到邻居城市的距离(权重)。int newCost = currentCost + neighborCost;if (newCost < distances[neighborCity]) {distances[neighborCity] = newCost;minHeap.offer(new int[]{neighborCity, newCost});//将该数组添加到优先队列 minHeap 中,以便稍后继续处理该邻居节点。// 这确保了算法在接下来的迭代中考虑到了邻居节点。}}//通过这段循环,算法不断地探索从当前节点到其邻居节点的可能路径,并更新到达邻居节点的最短距离。// 如果找到更短的路径,就会将邻居节点添加到优先队列中,以便后续继续处理。这是Dijkstra算法的关键步骤,// 确保找到从出发城市到其他城市的最短路径。}// 将无法到达的城市的距离设为-1for (int i = 0; i < n; i++) {if (distances[i] == Integer.MAX_VALUE) {distances[i] = -1;}}return distances;}public static void main(String[] args) {CheapestPrices solution = new CheapestPrices();int n = 3;int[][] edges = {{0, 1, 100}, {1, 2, 100}, {0, 2, 500}};int src = 0;int[] output = solution.findCheapestPrice(n, edges, src);// 输出最便宜的机票价格列表for (int price : output) {System.out.print(price + " ");}// 输出: 0 100 200}
}

2.给定一个任意矩阵(用二维数组表示),要求从左上角移动至右下角,每次只能向下或向右移动一格,矩阵中的数字为本次移动的收益,请算出移动值右下角时,所经过路径和的最大收益。

import java.util.*;public class maxPathSum {public  static int maxPathSum(int[][] matrix){if(matrix==null||matrix.length==0||matrix[0].length == 0){return 0;}int m = matrix.length;int n = matrix[0].length;int dp[][] = new int[m][n];dp[0][0] = matrix[0][0];for(int j=1;j<n;j++){dp[0][j] = dp[0][j-1]+matrix[0][j];}for(int i=1;i<n;i++){dp[i][0] = dp[i-1][0] + matrix[i][0];}for(int i=1;i<m;i++){for(int j=1;j<n;j++){dp[i][j] = Math.max(dp[i-1][j],dp[i][j-1])+matrix[i][j];}}return dp[m-1][n-1];}public static void main(String[] args) {int [][] matrix={{1,2,3},{4,7,6},{5,8,9},};int maxSum = maxPathSum(matrix);System.out.println("最大路径和为:"+maxSum);}
}

3.在一个遥远的银河中,有N个星球(编号从1到N),这些星球之间通过星际门进行连接。每个星际门都连接两个星球,并旦可以双向通行。
每个星际门的开启需要消耗一定的能量,这个能量由星际门上的数字表示。每个星际门上的数字都是唯一的。
现在,由于某种原因,所有的星际门都处于 关闭状态。作为一个探索者,你的任务是找出一种方式,开启最少的星际门,使得所有的星球都至少通过一个开启的星际门与其他星球连接。
给你一些可连接的选项 connections,其中connections[i] = [Xi, Yi, Mi] 表示星球 Xi和星球Yi之间可以开启一个星际门工并消耗 Mi 能量。
计算联通所有星球所需的最小能量消耗。如果无法联通所有星球,则输出-1。


import java.util.*;
import java.util.Arrays;
public class Solution1 {public static int minimumEnergyRequired(int N,int[][] connections){Arrays.sort(connections,(a,b)->a[2]-b[2]);int[] parent = new int[N+1];//parent[i] 存储了元素i的父节点的编号,// 如果 parent[i] 的值为-1,表示元素i是自身所在集合的根节点。Arrays.fill(parent,-1);int minEnergy = 0;int numEdges = 0;for(int[] connection:connections){int front = connection[0];int to = connection[1];int energy = connection[2];int rootFrom = findRoot(parent,front);int rootTo = findRoot(parent, to);if(rootFrom!=rootTo){parent[rootFrom] = rootTo;minEnergy += energy;numEdges++;//已经合并的星际门数量if(numEdges==N-1){return minEnergy;}}}return -1;}//它的作用是查找某个节点在并查集中所属的集合的根节点,并在查找过程中进行路径压缩,private static int findRoot(int[] parent,int node){if(parent[node] == -1){return node;}parent[node] = findRoot(parent,parent[node]);//这一步是路径压缩的关键,它将节点 node 的父节点直接设置为根节点,// 从而优化后续的查找操作。return parent[node];}public static void main(String[] args) {int N=4;int[][] connections = {{1,2,5},{1,3,6},{2,3,1},{3,4,2},{2,4,3},};int result = minimumEnergyRequired(N,connections);System.out.println("最小能量消耗为:"+result);}
}

相关文章:

2024届校招-Java开发笔试题-S4卷

有三种题型&#xff1a;单项选择题&#xff08;10道&#xff09;、不定项选择题&#xff08;10道&#xff09;、编程题&#xff08;3道&#xff09; 下面是一些回忆的题目&#xff1a; 1.哪种设计模式将对象的创建与使用分离&#xff0c;通过工厂类创建对象 答&#xff1a;工…...

数据分析面试题(2023.09.08)

数据分析流程 总体分为四层&#xff1a;需求层、数据层、分析层和结论层 一、统计学问题 1、贝叶斯公式复述并解释应用场景 公式&#xff1a;P(A|B) P(B|A)*P(A) / P(B)应用场景&#xff1a;如搜索query纠错&#xff0c;设A为正确的词&#xff0c;B为输入的词&#xff0c;那…...

jenkins 报错fatal:could not read Username for ‘XXX‘:No such device or address

#原因&#xff1a;机器做迁移&#xff0c;或者断电&#xff0c;遇到突发情况 #解决&#xff1a; 一.排查HOME和USER环境变量 可以在项目执行shell脚本的时候echo $HOME和USER 也可以在构建记录位置点击compare environment 对比两次构建的环境变量 二.查看指定节点的git凭证 查…...

LRU算法之我见

文章目录 一、LRU算法是什么&#xff1f;二、使用原理三、代码实现总结 一、LRU算法是什么&#xff1f; LRU算法又称最近最少使用算法&#xff0c;它是是大部分操作系统为最大化页面命中率而广泛采用的一种页面置换算法。是一种缓存淘汰策略&#xff0c;根据使用频率来淘汰无用…...

【第20例】华为 IPD 体系 | IPD 的底层思考逻辑(限制版)

目录 简介 更新情况 IPD体系 CSDN学院 专栏目录 作者简介 简介 最近随着华为 Mate 60 系列的爆火发布。 这家差不多沉寂了 4 年的企业再次映入大众的眼帘。 其实,华为手机业务发展的元年最早可以追溯...

spaCy库的实体链接踩坑,以及spaCy-entity-linker的knowledge_base下载问题

问题1. spacy Can’t find factory for ‘entityLinker’ 1&#xff09;问题 写了一个实体链接类&#xff0c;代码如下&#xff1a; nlp spacy.load("en_core_web_md")class entieyLink:def __init__(self, doc, nlp):self.nlp nlpself.doc self.nlp(doc)# Che…...

【数据结构】红黑树的插入与验证

文章目录 一、基本概念1.时代背景2. 基本概念3.基本性质 二、实现原理1. 插入1.1变色1.2旋转变色①左旋②右旋③右左双旋④左右双旋 2.验证 源码总结 一、基本概念 1.时代背景 1972年鲁道夫拜尔(Rudolf Bayer)发明了一种数据结构&#xff0c;这是一种特殊的B树4阶情况。这些树…...

Pycharm----将Anaconda建立的环境导入

首先打开项目设置&#xff0c;点击添加 随后点击现有环境&#xff0c;点击三个。。。号进行添加 最后找到你Anaconda安装文件夹&#xff0c;envs找到你建立的环境名称&#xff0c;找到python.exe将它导入即可让现在的python环境为你建立的环境&#xff0c;同时还需要更改终端方…...

数字花园的指南针:微信小程序排名的提升之道

微信小程序&#xff0c;是一片数字花园&#xff0c;其中各种各样的小程序竞相绽放&#xff0c;散发出各自独特的芬芳。在这个花园中&#xff0c;排名优化就像是精心照料花朵的园丁&#xff0c;让我们一同走进这个数字花园&#xff0c;探寻如何提升微信小程序的排名优化&#xf…...

LRU与LFU的c++实现

LRU 是时间维度上最少使用 维持一个链表&#xff0c;最近使用的放在表头 淘汰表尾 LFU 是实际使用频率的最少使用 每一个对应的频率维持一个链表&#xff0c; 淘汰最低频率的最后一个 1. LRU LRU&#xff08;Least Recently Used&#xff0c;最近最少使用&#xff09;是一种常…...

什么是Docker和Docker-Compose?

Docker的构成 Docker仓库&#xff1a;https://hub.docker.com Docker自身组件 Docker Client&#xff1a;Docker的客户端 Docker Server&#xff1a;Docker daemon的主要组成部分&#xff0c;接受用户通过Docker Client发出的请求&#xff0c;并按照相应的路由规则实现路由分发…...

三.listview或tableviw显示

一.使用qt creator 转变类型 变形为listview或tableviw 二.导出ui文件为py文件 # from123.py 为导出 py文件 form.ui 为 qt creator创造的 ui 文件 pyuic5 -o x:\xxx\from123.py form.uifrom123.py listview # -*- coding: utf-8 -*-# Form implementation generated fro…...

【算法】一文带你从浅至深入门dp动态规划

文章目录 一、前言二、动态规划理论基础1、基本概念2、动态规划五部曲【✔】3、出错了如何排查&#xff1f; 三、实战演练&#x1f5e1;0x00 斐波那契数0x01 第N个泰波那契数0x02 爬楼梯0x03 三步问题0x04 使用最小花费爬楼梯⭐解法一解法二 0x05 解码方法* 四、总结与提炼 一、…...

超简单免费转换ape到flac

1. 安装最新版的ffmpeg 2. 安装cywin环境 3. 设置path到ffmpeg export PATH$PATH:"PATH/TO/FFMPEG/BIN" 4.到ape所在的目录&#xff0c;执行以下命令 find . -iname "*.ape" | while read line; do fb${line::-4}; fn"$fb.flac";echo ffm…...

JavaScript混淆加密

什么是JS混淆加密&#xff1f; JavaScript混淆加密是一种通过对源代码进行变换&#xff0c;使其变得难以理解和分析的技术。它的目标是增加攻击者破解代码的难度&#xff0c;同时保持代码的功能不受影响。混淆加密的目的是使代码难以逆向工程&#xff0c;从而防止攻击者窃取知…...

Java8特性-Lambda表达式

&#x1f4d5;概述 在Java 8中引入了Lambda表达式作为一项重要的语言特性&#xff0c;可以堪称是一种语法糖。Lambda表达式使得以函数式编程的方式解决问题变得更加简洁和便捷。 Lambda表达式的语法如下&#xff1a; (parameters) -> expression (参数) -> {代码}其中&…...

通过Power Platform自定义D365CE业务需求 - 1. Microsoft Power Apps 简介

Microsoft Power Apps是一个趋势性的、无代码和无代码的商业应用程序开发平台,配有一套应用程序、服务和连接器。其数据平台为构建适合任何业务需求的自定义业务应用程序提供了快速开发环境。随着无代码、少代码应用程序开发的引入,任何人都可以快速构建低代码应用程序,并与…...

简易实现QT中的virtualkeyboard及问题总结

文章目录 前言&#xff1a;一、虚拟键盘的实现综合代码 二、为什么选用QWidget而不适用QDialog实现键盘三、从窗体a拉起窗体b后&#xff0c;窗体b闪退问题的探讨四、关闭主窗口时子窗口未关闭的问题 前言&#xff1a; 本文章主要包含四部分&#xff1a; 虚拟键盘的实现&#…...

景联文科技可为多模态语音翻译模型提供数据采集支持

8月22日Facebook的母公司Meta Platforms发布了一种能够翻译和转录数十种语言的人工智能模型——SeamlessM4T&#xff0c;可以在日常生活中或者商务交流中为用户提供更便捷的翻译和转录服务。 相较于传统的文本翻译&#xff0c;这项技术的最大区别在于它可以实现端到端的语音翻译…...

定时器分批请求数据

<!DOCTYPE html> <html><script>//需要分页的数组let arr [1,2,3,4,5,6,7,8,9,10]//分割数组&#xff0c;每页3条splitArr(arr,4)/*** 分割数组*/function splitArr(idList,size){//当前页数let num 1//共多少页let count Math.ceil(idList.length / siz…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

K8S认证|CKS题库+答案| 11. AppArmor

目录 11. AppArmor 免费获取并激活 CKA_v1.31_模拟系统 题目 开始操作&#xff1a; 1&#xff09;、切换集群 2&#xff09;、切换节点 3&#xff09;、切换到 apparmor 的目录 4&#xff09;、执行 apparmor 策略模块 5&#xff09;、修改 pod 文件 6&#xff09;、…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

蓝桥杯 2024 15届国赛 A组 儿童节快乐

P10576 [蓝桥杯 2024 国 A] 儿童节快乐 题目描述 五彩斑斓的气球在蓝天下悠然飘荡&#xff0c;轻快的音乐在耳边持续回荡&#xff0c;小朋友们手牵着手一同畅快欢笑。在这样一片安乐祥和的氛围下&#xff0c;六一来了。 今天是六一儿童节&#xff0c;小蓝老师为了让大家在节…...

【Go】3、Go语言进阶与依赖管理

前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课&#xff0c;做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程&#xff0c;它的核心机制是 Goroutine 协程、Channel 通道&#xff0c;并基于CSP&#xff08;Communicating Sequential Processes&#xff0…...

前端开发面试题总结-JavaScript篇(一)

文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包&#xff08;Closure&#xff09;&#xff1f;闭包有什么应用场景和潜在问题&#xff1f;2.解释 JavaScript 的作用域链&#xff08;Scope Chain&#xff09; 二、原型与继承3.原型链是什么&#xff1f;如何实现继承&a…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...