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

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

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,一经查实,立即删除!

相关文章

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

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

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

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

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

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

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…

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"); …

基于树莓派的边缘端 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视频监控汇聚管理平台中得到了充分的体…

《基于深度学习的车辆行驶三维环境双目感知方法研究》

复原论文思路&#xff1a; 《基于深度学习的车辆行驶三维环境双目感知方法研究》 1、双目测距的原理 按照上述公式算的话&#xff0c;求d的话&#xff0c;只和xl-xr有关系&#xff0c;这样一来&#xff0c;是不是只要两张图像上一个测试点的像素位置确定&#xff0c;对应的深…

新手小白学习docker第八弹------实现MySQL主从复制搭建

目录 0 引言1 实操1.1 新建主服务器容器1.2 书写配置文件1.3 重启master实例1.4 进入mysql-master容器master容器实例内创建数据同步用户 1.5 新建从服务器容器1.6 书写配置文件1.7 重启slave实例1.8 查看主从同步状态1.9 进入mysql-slave容器1.9.1 配置主从复制1.9.2 查看主从…

微信小程序之路由跳转传数据及接收

跳转并传id或者对象 1.home/index.wxml <!--点击goto方法 将spu_id传过去--> <view class"item" bind:tap"goto" data-id"{{item.spu_id}}"> 结果: 2.home/index.js goto(event){// 路由跳转页面,并把id传传过去//获取商品idlet i…

前海华海金融创新中心的工地餐点探寻

​前海的工地餐大部分都是13元一份的哈。我在前海华海金融创新中心的工地餐点吃过一份猪杂饭&#xff0c;现做13元一份。我一般打包后回公司吃或直接桂湾公园找个环境优美的地方吃饭。 ​我点的这份猪杂汤粉主要是瘦肉、猪肝、肉饼片、豆芽和生菜&#xff0c;老板依旧贴心问需要…

reduce-scatter:适合分布式计算;Reduce、LayerNorm和Broadcast算子的执行顺序对计算结果的影响,以及它们对资源消耗的影响

目录 Gather Scatter Reduce reduce-scatter:适合分布式计算 Reduce、LayerNorm和Broadcast算子的执行顺序对计算结果的影响,以及它们对资源消耗的影响 计算结果理论正确性 资源消耗方面 Gather 这个也很好理解,就是把多个进程的数据拼凑在一起。 Scatter 不同于Br…

移门缓冲支架:减少噪音,提升生活质量

移门缓冲支架不仅是一个简单的五金配件&#xff0c;更是提升家居生活质量的有效工具。通过减少门关闭时的噪音&#xff0c;移门缓冲支架能够创造一个安静、舒适的生活环境。以下是移门缓冲支架在减少噪音、提升生活质量方面的详细解析&#xff1a; 1. 显著降低关门噪音问题&…

模型运行速度笔记: s/epoch VS s/iter

1 概念介绍 在模型训练中&#xff1a; s/epoch 表示每个epoch所需的秒数&#xff0c;即完成一轮完整数据集训练的时间。s/iter 表示每个iteration&#xff08;迭代&#xff09;所需的秒数&#xff0c;即处理一个batch的时间。 它们的关系是&#xff1a; 2 举例 比如我tra…

JavaWeb笔记整理——Spring Task、WebSocket

目录 SpringTask ​cron表达式 WebSocket SpringTask cron表达式 WebSocket

PET-文件包含-FINISHED

include发生错误报warning&#xff0c;继续执行。require发生错误直接error&#xff0c;不继续执行 无视扩展名&#xff0c;只要能解析&#xff0c;就能当可执行文件执行&#xff0c;哪怕文件后缀或没后缀 1 条件竞争 pass17 只需要知道tmp的路径。把xieshell.jpg上传&…

rust逆向初探

rust 逆向葵花宝典 rust逆向技巧 rust逆向三板斧&#xff1a; [!NOTE] 快速定位关键函数 (真正的main函数)&#xff1a;观察输出、输入&#xff0c;字符串搜索&#xff0c;断点等方法。定位关键 加密区 &#xff1a;根据输入的flag&#xff0c;打硬件断点&#xff0c;快速捕获…