面试编程题目(一)细菌总数计算

题目如图
在这里插入图片描述
第一题

import lombok.AllArgsConstructor;
import lombok.Data;import java.util.Arrays;
import java.util.Collections;
import java.util.List;/*** @description: 细菌实体类* @author: zhangmy* @Version: 1.0* @create: 2021-03-30 11:23**/
@Data
@AllArgsConstructor
public class Bacteria {//最大繁殖次数private static final int MAX_BREED_NUMBER = 3;//可繁殖时间private static final int CAN_BREED_TIME = 20;//繁殖间隔private static final int BREED_CD_TIME = 30;//存活时间private int liveMinute;//繁殖次数private int breedNumber;//距离可繁殖的倒计时private int breedCountDown;//当前是否可繁殖private boolean isCanBreed;//细菌是否死亡private boolean isDead;public Bacteria() {this.liveMinute = 0;this.breedNumber = 0;this.isCanBreed = false;this.breedCountDown = 20;this.isDead = false;}//生长public void grow(int minutes) {this.liveMinute = this.liveMinute + minutes;this.breedCountDown = this.breedCountDown - minutes;if (this.liveMinute > 150) {this.isDead = true;return;}if (!this.isDead && this.breedCountDown == 0 && this.breedNumber < MAX_BREED_NUMBER) {this.isCanBreed = true;} else {this.isCanBreed = false;}}//繁殖public List<Bacteria> breed(){if (!this.isCanBreed) {return Collections.emptyList();}//繁殖过后次数加1this.breedNumber++;this.breedCountDown = BREED_CD_TIME;return Arrays.asList(new Bacteria(),new Bacteria());}}

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Set;/*** @description: 测试Main* @author: zhangmy* @Version: 1.0* @create: 2021-03-30 11:59**/
public class Main {public static void main(String[] args) {Bacteria bacteria1 = new Bacteria();System.out.println(List.class.getClassLoader());System.out.println(bacteria1.getClass().getClassLoader().getParent());Scanner in = new Scanner(System.in);while (true) {System.out.println("输入时间:");int minute = in.nextInt();long totalStart = System.currentTimeMillis();List<Bacteria> bacterias = new ArrayList<>();bacterias.add(new Bacteria());for (int i = 10; i <= minute; i+=10) {List<Bacteria> bornBacterias = new ArrayList<>();long start = System.currentTimeMillis();for (int j = 0; j < bacterias.size();j++) {Bacteria bacteria = bacterias.get(j);bacteria.grow(10);if (bacteria.isDead()) {bacterias.remove(bacteria);j--;continue;}bornBacterias.addAll(bacteria.breed());}long end = System.currentTimeMillis();System.out.println("遍历了" + bacterias.size() + "个!耗时:" + (end - start) + "ms");bacterias.addAll(bornBacterias);//System.out.println("观察时间点:" + i + ",细菌有:" + bacterias.size());}long totalEnd = System.currentTimeMillis();System.out.println("总耗时:" + (totalEnd - totalStart) + "ms");System.out.println("细菌总个数:" + bacterias.size());}}}

第一题面试官给的答案是满意。

第二题

import java.util.*;
import java.util.stream.Collectors;/*** @description: 数字区间* @author: zhangmy* @Version: 1.0* @create: 2021-03-30 13:54**/
public class ParseNumber {//解析输入public static Set<Long> parseRule(String rule) {Set<Long> result = new HashSet<>();String[] split = rule.split(",");for (int i = 0; i < split.length; i++) {if (split[i].contains("-")) {String[] numbers = split[i].split("-");if (numbers.length == 2) {Long start = Long.parseLong(numbers[0]);Long end = Long.parseLong(numbers[1]);for (Long index = start; index < end; index++) {result.add(index);}}} else {result.add(Long.parseLong(split[i]));}}return result;}public static String deparseRule(Set<Long> set) {StringBuilder result = new StringBuilder();List<String> members = new ArrayList<>();List<Long> list = new ArrayList<>(set).stream().sorted().collect(Collectors.toList());for (int i = 0; i < list.size(); i++) {StringBuilder sb = new StringBuilder();sb.append(list.get(i));//区间形式if ((i + 1 < list.size()) && (list.get(i + 1) == list.get(i) + 1)) {sb.append("-");while ((i + 1 < list.size()) && (list.get(i + 1) == list.get(i) + 1)) {i++;}//右开,需要+1sb.append(list.get(i) + 1);}members.add(sb.toString());}for (String temp : members) {result.append(temp).append(",");}//去掉最后一个逗号String substring = result.substring(0, result.length() - 1);return substring;}//判断是否是子集public static boolean isFullContains(Set<Long> a,Set<Long> b) {for (Long i : a) {if (!b.contains(i)) {return false;}}return true;}//计算交集public static Set<Long> calIntersection(Set<Long> a,Set<Long> b) {Set<Long> result = new HashSet<>();for (Long i : a) {if (b.contains(i)) {result.add(i);}}return result;}//计算并集public static Set<Long> calSet(Set<Long> a,Set<Long> b) {a.addAll(b);return a;}}
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Set;/*** @description: 测试Main* @author: zhangmy* @Version: 1.0* @create: 2021-03-30 11:59**/
public class Main {public static void main(String[] args) {//默认区间左闭右开String as = "1,5-99999";String bs = "2,4-99999";long start = System.currentTimeMillis();//判断是否包含Set<Long> a = ParseNumber.parseRule(as);Set<Long> b = ParseNumber.parseRule(bs);System.out.println("是否包含:" + ParseNumber.isFullContains(a,b));//求交集Set<Long> intersection = ParseNumber.calIntersection(a, b);System.out.println("交集:" + ParseNumber.deparseRule(intersection));//求并集Set<Long> set = ParseNumber.calSet(a, b);System.out.println("并集:" + ParseNumber.deparseRule(set));long end = System.currentTimeMillis();System.out.println("消耗时间:" + (end - start) + "ms");}}

第二题面试官未作评价,尚未知结果如何。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

css初始化(二十三课)

一、把所有标签的内外边距清零 * {padding: 0;margin: 0;} 二、把斜体的文字不倾斜 i,em {font-style: normal;} 三、去掉li标签前面的小圆点 li {list-style: none;} 四、照顾低版本浏览器&#xff0c;实现兼容性 img {border: 0;vertical-align: middle;} 五、鼠标经过按…

同步接口和异步接口-------每日一问

在软件开发中&#xff0c;同步接口和异步接口是两种不同的编程模型&#xff0c;它们在处理请求和响应的方式上有所不同。了解这两种接口的区别对于编写高效、响应良好的应用程序非常重要。 同步接口 (Synchronous Interface) 定义 同步接口是指在调用某个函数或方法时&#…

如何在uniapp中获取和修改Web项目的Cookie

在uniapp开发Web项目时&#xff0c;操作Cookie是常见的需求。本文将介绍如何在uniapp中获取和修改Web项目的Cookie&#xff0c;且不设置过期时间。 获取Cookie中的数据 首先&#xff0c;我们需要一个函数来获取指定名称的Cookie值。以下是获取Cookie的JavaScript函数&#xf…

[评论] 评论互联网上的一些东西(持续更新)

前言 作为半个程序员&#xff0c;每一天都要接触网络相关的事情&#xff0c;有很多想要吐槽的事情&#xff0c;也许现在的吐槽会成为后面互联网的一个缩影&#xff0c;欢迎大家在评论区留言。

论文阅读《Neural Map Prior for Autonomous Driving》

目录 摘要1 介绍2 相关工作 摘要 高精&#xff08;HD&#xff09;语义地图对于在城市环境中行驶的自动驾驶汽车至关重要。传统的离线高精地图是通过劳动密集型的手动标注创建的&#xff0c;不仅成本高昂&#xff0c;而且无法及时更新。最近&#xff0c;研究人员提出根据在线传…

计算机网络 (5)数据通信的基础知识

前言 数据通信是一种以信息处理技术和计算机技术为基础的通信方式&#xff0c;它通过数据通信系统将数据以某种信号方式从一处传送到另一处&#xff0c;为计算机网络的应用和发展提供了技术支持和可靠的通信环境&#xff0c;是现代通信技术的关键部分。 一、数据通信的基本概念…

【项目开发】分析六种常用软件架构

未经许可,不得转载。 文章目录 软件架构核心内容设计原则分层架构常见层次划分优缺点应用场景事件驱动架构核心组件优缺点应用场景微核架构核心概念优缺点应用场景微服务架构核心组件设计与实施优缺点应用场景云架构云架构模式优缺点应用场景软件架构 软件架构是指一个软件系…

二分搜索的三种方法

首先总的说一下二分搜索。如果区间具有二分性&#xff0c;这个二分性不仅仅是指区间是有序的&#xff0c;而是我们可以通过某一种性质将整个区间分成左区间和右区间。我们通过二分的方法去不断缩小查找的区间&#xff0c;最终让区间内没有元素&#xff0c;这个时候的我们就得到…

C++- 基于多设计模式下的同步异步日志系统

第一个项目:13万字,带源代码和详细步骤 目录 第一个项目:13万字,带源代码和详细步骤 1. 项目介绍 2. 核心技术 3. 日志系统介绍 3.1 为什么需要⽇志系统 3.2 ⽇志系统技术实现 3.2.1 同步写⽇志 3.2.2 异步写⽇志 4.知识点和单词补充 4.1单词补充 4.2知识点补充…

Kubernetes 魔法棒:kubeadm 一键部署的奇妙之旅

《Kubernetes 魔法棒:kubeadm 一键部署的奇妙之旅》 在 Kubernetes 的世界里,kubeadm 就像是一把神奇的钥匙,能够轻松实现 Kubernetes 集群的一键部署。本节我们详细了解下Kubernetes 一键部署利器:kubeadm。 一、什么是 kubeadm? kubeadm 是一个用于快速搭建 Kubernet…

Python习题 250:删除空文件夹

(编码题)编写一段 Python 代码,删除指定目录的空文件夹。 参考答案: 使用 pathlib 库可以更简洁地处理文件路径。下面是一个使用 pathlib 库递归删除空文件夹的 Python 代码:from pathlib import Pathdef remove_empty_dirs(directory):# 遍历目录及其子目录for path in…

element plus的表格内容自动滚动

<el-table:data"tableData"ref"tableRef"borderstyle"width: 100%"height"150"><el-table-column prop"date" label"名称" width"250" /><el-table-column prop"name" label&…

丹摩征文活动 |【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解

前言 &#x1f31f;&#x1f31f;本期讲解关于HTMLCSSJavaScript的基础知识&#xff0c;小编带领大家简单过一遍~~~ &#x1f308;感兴趣的小伙伴看一看小编主页&#xff1a;GGBondlctrl-CSDN博客 &#x1f525; 你的点赞就是小编不断更新的最大动力 …

ComfyUI-image2video模型部署教程

一、介绍 本项目基于ComfyUI进行部署&#xff0c;在上面可以简单实现图片到视频的效果。也就是可以通过给定一张图片&#xff0c;实现的功能是图片动起来。 二、部署 要求显存&#xff1a;VAE解码需要13G以上 1. 部署ComfyUI 本篇的模型部署是在ComfyUI的基础上进行&#x…

html5表单属性的用法

文章目录 HTML5表单详解与代码案例一、表单的基本结构二、表单元素及其属性三、表单的高级应用与验证四、表单布局与样式 HTML5表单详解与代码案例 HTML5表单是网页中用于收集用户输入并提交到服务器的重要元素&#xff0c;广泛应用于登录页面、客户留言、搜索产品等场景。本文…

Ajax获取PHP端csv转的json数据并js前端排序与分页

<?php setlocale(LC_ALL, C); //window:删除行首双斜杠if($_GET["act"]"list"){ $csvFile book.csv; // 文件路径&#xff1a;制表符分隔文件 $data []; if (($handle fopen($csvFile, r)) ! false) {$header fgetcsv($handle,0,"\t"); …

SpringBoot(二十二)SpringBoot集成smart-doc自动生成文档

计划在项目中集成swagger日志框架,经过一顿折腾,发现一个小小的问题。我得springboot框架版本是2.6.13,swagger要匹配这个版本的springboot可能比较麻烦。 这可如何是好…… 经跟社区的大神得讨论,他在用的文档生成工具是smart-doc。我尝试一下集成这个工具。 官网:https:…

基于树莓派的边缘端 AI 目标检测、目标跟踪、姿态估计 视频分析推理 加速方案:Hailo with ultralytics YOLOv8 YOLOv11

文件大纲 加速原理硬件安装软件安装基本设置系统升级docker 方案Demo 测试目标检测姿态估计视频分析参考文献前序树莓派文章hailo加速原理 Hailo 发布的 Raspberry Pi AI kit 加速原理,有几篇文章介绍的不错 https://ubuntu.com/blog/hackers-guide-to-the-raspberry-pi-ai-ki…

PETR/PETRv2/StreamPETR论文阅读

1. PETR PETR网络结构如下&#xff0c;主要包括image-backbone&#xff0c;3D Coordinates Generator&#xff0c;3D Position Encoder&#xff0c;transformer Decoder四个模块。 把N 个视角的图像输入到骨干网络中以提取 2D 多视图特征。在 3D 坐标生成器中&#xff0c;首先…

EHOME视频平台EasyCVR多品牌摄像机视频平台监控视频编码H.265与Smart 265的区别?

在视频监控领域&#xff0c;技术的不断进步推动着行业向更高效、更智能的方向发展。特别是在编码技术方面&#xff0c;Smart 265作为一种新型的视频编码技术&#xff0c;相较于传统的H.265&#xff0c;有明显优势。这种技术的优势在EasyCVR视频监控汇聚管理平台中得到了充分的体…