美东一公司的郁闷面试题

news2024/11/24 19:36:12

说是题目可以用不同的语言,但是貌似 Java 是多线程的,用 Java 写肯定容易不少。

但,觉得这个题目用多线程简直是有点脱了裤子放屁。

完整题目内容

题目的网站内容如下:

Please complete the following challenge in one of the following programming languages: C, C++, C#, Java, Python, Go, or Typescript. Please only use standard or ubiquitous libraries. If you heavily rely on a library, please include a description on how that library call works with as much detail as possible.
Busy Body Bank services many in-person customers every day in their large luxurious lobby at the center of a city. They have N Tellers in stalls at any time to accommodate heavy traffic while optimizing for employee hours whenever possible. N changes from day-to-day as the bank’s management anticipates surges or reductions of Customer count.

When the bank is empty, tellers are asleep. When a Customer enters, they announce themselves and a teller wakes up and conducts a transaction that takes some amount of time. As more customers arrive, they wake Tellers and conduct a transaction or wait in the bank’s queue for a teller to become available (if there are none immediately available). The bank’s queue line has M possible positions where Customers can wait for tellers to become available. If a Customer walks into the bank to find no available tellers and a full queue, they will take their business to Small and Simple, a bank across the street.

If the bank gets more customers than it expects on any day, then it will call more Tellers in to accommodate this surge, but calling Tellers on-demand usually costs the bank more money than the lost business from under-staffing. The bank would only call in additional Tellers after a day starts if there was a very significant number of customers taking their business elsewhere.

Write a program that simulates a work day for the bank that models the behavior of each actor in this scenario: Teller and Customer. It might be necessary to simulate other actors to match the above scenario. Each actor should be a separate thread. The program will not be run, but should be clear enough to follow to ensure it would run without error. You may choose to provide an example output of the program running. If you do, assume the bank has only slightly underestimated the number of customers that would come in.

With the introduction of different forms of banking (online and ATMs) and an upcoming city festival bringing in countless possible customers, the bank’s analysts say that the customer count forecast has been thrown into disarray. For the below questions, feel free to choose values or value ranges for any undefined variables as you see fit. They may be answered in pseudo-code.

Write an algorithm that the bank can use to optimize the Number of Tellers (N) to call in if they expect C customers for any given day.

Write an algorithm that the bank can use to determine if they should call in or send home Tellers to minimize operation costs.

题目大意

如果没有理解错的话,就是希望实现一个类似银行的处理系统。

这个系统有固定的营业员,同时还有一个缓冲池。

当自己银行柜员不够用的时候,我们可以让客户到别的银行去办理业务,我们也可以从其他银行去调柜员来处理业务。

希望用一个程序的方式对上面的情况进行表述,并且还希望判断当用户数量等于多少的时候,我们希望多银行配备多少柜员。

当用户为多少的时候,我们可以把柜员发回家休息。

解读

如果非要实现的话,使用线程和线程池的概念是比较好实现的。

在开始的时候,默认允许创建 3 个线程,如果还创建线程请求的话,就把这个请求放到线程池里面,等待已经创建的线程完成。

如果线程池都已经满了,那么就需要创建其他的银行线程,把请求的线程放到其他银行里面去执行。

程序里面只有 Java 线程概率用得比较多,Python 的线程是假的多线程,通常没有线程使用的创建,等待,这些概念。

TypeScript 是单线程语言,这真不知道怎么去实现多线程了。

其实我最开始考虑的是使用 List,在一个 List 里面定义一个空间,这个表示的是初始化创建的柜员,在另外一个 List 里面定义空间,这个空间就是缓存了。

当数据开始调用的时候,首先先把第一个 List 进行填充,在定义的对象的时候还需要定义一个时间,我们还知道柜员在处理一个业务需要多少时间。

当第一个 List 填充满了以后,再填充换成 List,当柜员的时间完成后,把第一个 List 中的对象设值为空,然后从缓存 List 里面拿数据这样一种方式。

同时计算总共需要的耗时时间,这样才能确定当前的用户量的时候,需要多少时间才能完成,同时有多少柜员是工作的,有多少柜员是休息的。

但是,题目说要用多线程,所以感觉就是纯粹在多此一举。

另,我们认为这个题目设计得其实非常糟糕。

因为是太多的开放条件和可能性了。 这个在程序设计中是非常难设计的,因为每个可能性都有条件。

比如说下面的:

  1. 每个柜员的处理时间是不是一样的,如果不一样我们应该如何定义?
  2. 每个 List 的初始值应该是多少,队列是可以随时调整的还是固定好的。
  3. 当我们要求其他银行进行帮助的时候,是在 Q 满了的时候,还是在 Q 满了再等多长时间在进行调用。
  4. 对其他银行的调用初始值是多少,是一次调用一个还是根据客户情况调用多个?

还有其他的很多条件都没有说明白,所以我们觉得这个题目非常糟糕,不确定的地方太多,完全考察不了人的数据设计能力。

同时又要求使用线程,线程的开销其实也是比较大的,也没有必要去做。

所以这个题目非常不好做,感觉有点乱,他们自己都不知道要设计一个什么东西。

总结

不管怎么样还是 OA 的结果上传下吧。

但在提交的文档中,我也明确的说明了这个题目有很多种做法,其实并不是非常理想。

2023-09-13_12-16-43

然后,还用手给大致画了一个用 List 列表解决的方案。

2023-09-13_12-24-25

不管题目怎么样,但我感觉能基本上提供一个解决方案就好了。

针对程序的实现,我们也提供了程序的实现。

2023-09-13_13-37-24

上面是程序的输出,大致表示了线程的调用情况。

感觉这个面试题实在是有点搞不明白,更是有点奇葩。

美东一公司的郁闷面试题 - 求职路上 - iSharkFly

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

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

相关文章

使用这款免费的洗稿软件究竟是好还是坏

嘿,大家好!今天,我们要聊一聊一个备受争议的话题:洗稿软件(147SEO改写软件)。这些软件声称可以帮助你在写作时省下不少功夫,但究竟是好还是坏呢? 咱们都知道,写作是一门艺术,也是一项…

华策影视AIGC工程师招聘; 百度大模型创业松;主流大语言模型的技术原理细节;AIGC Prompt的七个缺陷 | ShowMeAI日报

👀日报&周刊合集 | 🎡生产力工具与行业应用大全 | 🧡 点赞关注评论拜托啦! 🎯 华策影视AIGC工程师招聘,AIGC在「文娱领域」的真正落地 逛即刻时发现关注的AI博主 杨昌 发布了自己公司的招聘信息&#x…

Postgresql中检测内存越界或use after free的简便方法

1 使用场景 在Postgresql的内存管理模块中,最常用的aset.c提供的内存池实现,该实现提供了两个非常实用的开关来解决常见的内存越界问题: memdebug.c * About CLOBBER_FREED_MEMORY:** If this symbol is defined, all freed memory is over…

git之工作中实际应用篇(非常适合刚到公司上班但是git不太熟又不好意思问同事的友友)

目录 前言当你刚到一个公司写代码,交自己的分支提交并推送了代码,但是有所更改第二天拉取代码切换分支远程分支太多&&本地仓库太多checkout检出失败的情况未完待续 前言 此篇用于记录笔者在工作中用到git遇到的问题及大部分的操作。 区别于理论…

无涯教程-JavaScript - FALSE函数

描述 FALSE函数返回逻辑值FALSE。 语法 FALSE () 争论 FALSE函数没有参数。 Notes 您还可以在工作表或公式中直接键入FALSE单词,Microsoft Excel会将其解释为逻辑值FALSE。 提供FALSE功能主要是为了与其他电子表格程序兼容。 适用性 Excel 2007,Excel 2010,Excel 2013…

【用unity实现100个游戏之11】复刻经典mirror消消乐游戏

文章目录 前言开始项目开始一、方块网格生成二、方块交换三、添加交换的动画效果四、水平消除检测五、垂直消除检测六、完善删除功能七、效果优化(移动方块后再进行消除检测)八、方块下落十、方块填充十一、后续 源码参考完结 前言 欢迎来到经典消消乐游…

数据清洗:数据挖掘的前期准备工作

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ 🐴作者:秋无之地 🐴简介:CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作,主要擅长领域有:爬虫、后端、大数据…

释放潜能!RunnerGo:性能测试的全新视角

在数字化时代,性能测试已成为企业持续发展的关键一环。但面对繁杂的工具和流程,很多企业却陷入了无从选择的困境。现在,一款名为RunnerGo的全新性能测试工具正悄然崭露头角。 RunnerGo,一款由国内开发者自主研发的全栈式性能测试…

最新模块化设计小程序系统源码完整版:开源可二开,支持DIY

随着互联网的快速发展,小程序已成为各行各业开展业务的重要工具。而模块化设计小程序系统源码完整版则是一种高效、灵活、易维护的解决方案。 分享一个最新的模块化设计小程序系统源码完整版,源码开源可二开,支持自由DIY设计,含完…

华为云新用户:定义,优惠券及专享活动

在当今的数字化时代,云计算已成为企业与个人的必备服务。华为云,作为全球领先的云计算服务提供商,吸引了众多新用户的关注。本文将详细介绍华为云新用户的定义、优惠券及专享活动相关内容,帮助大家更好地了解华为云新用户优惠政策…

win10win11截图技巧——不用安装其他截图工具或者运行其他截图工具,就可以截图,win10和win11可用

快捷键shift wins可以调出来windows自带的截图工具。 测试了一下win10和win11都可以用。 可以截图的方式有: 1,全屏截图, 2,窗口截图, 3,任意截图, 4,画矩形截图 以下内容来自…

算法竞赛入门【码蹄集新手村600题】(MT1280-1300)C语言

算法竞赛入门【码蹄集新手村600题】(MT1280-1300)C语言 目录MT1281 N的M次方MT1282 Disarium数MT1283 区间Disarium数MT1284 快乐数MT1285 忠实数MT1286 忠实数序列MT1287 ASCII值MT1288 谁在说谎MT1289 调和级数不等式MT1290 级数MT1291 级数IIMT1292 某级数MT1293…

一百七十七、Hive——海豚调度执行Hive的.sql文件

一、目的 对于Hive数仓,每一层的建库建表SQL语句都各自放在一个.sql文件里,然后用海豚调度执行一下Hive的.sql文件 二、实施步骤 (一)第一步,上传.sql文件到海豚调度器上 (二)第二步&#xf…

分享一个java技术开发的springboot线上问卷调查可视化系统源码 lw 调试

💕💕作者:计算机源码社 💕💕个人简介:本人七年开发经验,擅长Java、Python、PHP、.NET、微信小程序、爬虫、大数据等,大家有这一块的问题可以一起交流! 💕&…

帝国CMS的Sitemap网站地图生成插件下载及教程

具体使用方法: 第一步:解压下载 stitemap 压缩包; 第二步:修改config.php里的网址为自己的网址。 1、如果网站站点是响应式的直接选择pc即可。 2、如果电脑站和手机站不一样则都需要修改。 第三步:将解压出的“sitema…

4.docker容器编排(docker compose 与 docker swarm)

本文目录 1.容器编排2.Docker Compose1.Docker Compose 安装2.Docker Compose 示例1.使用 docker-compose 启动 nginx2.docker compose 常用命令3.校验 docker-compose.yml 是否有错误4.创建服务&#xff0c;启动容器5.弹性伸缩<扩缩容> 3.Docker Swarm1.Swarm 架构图2.S…

华为云云耀云服务器实例管理域名

目录 域名概述 通过域名访问网站流程 域名注册、解析和备案的关系 域名解析 如何修改 域名概述 部署一个网站或Web应用后&#xff0c;若要使该网站能够在Internet上通过域名直接访问&#xff0c;需要为网站注册域名、备案以及配置解析。 通过域名访问网站流程 1、注册域…

虚拟电影 故事板创作 Frameforge Studio 4.0.6 Crack

虚拟电影工作室 故事板创作 Frameforge Storyboard Studio 4.0.6 是一个功能齐全的故事板程序&#xff0c;由著名导演及其要求共同创建。该软件将节省大量的时间&#xff0c;金钱和头痛&#xff0c;如果你是一个导演&#xff0c;在电影行业工作或VFX主管-这就是你要找的&#x…

小程序分销商城功能展示;

很多客户想要搭建自己的小程序商城&#xff0c;各家公司报价也是从几百到几千都不等&#xff0c;那么商城小程序开发到底需要多少钱呢&#xff1f;商城小程序一般要做哪些功能呢&#xff1f; 1、商品展示 一个商城型小程序&#xff0c;商品展示功能是必须要有的&#xff0c;这…

全球与中国BGO晶体市场:增长趋势、竞争格局与前景展望

BGO晶体&#xff0c;全名为Bismuth Germanate Scintillation Crystal&#xff08;铋锗酸盐闪烁晶体&#xff09;&#xff0c;是一种用于探测放射性粒子和射线的闪烁晶体材料。它的主要成分是铋氧化物&#xff08;Bi4Ge3O12&#xff09;&#xff0c;其中铋和锗的特性使得这种晶体…