技术面试方法与某人玩其他因素相比苍白

2021-03-27 08:57:03

最近有很多手工犯规技术面试。许多人意识到在白板上反转二叉树基本上与某人是否实际上是一个好的软件开发人员相关。最有效的编程测试任何人'仍然是fizzbuzz。这一点的后果一直在强调开源贡献,但事实证明了这一点,也是一个非常好的度量,因为大多数人都没有那种时间。

我们现在拥有的最有效的编程面试通常是某种带家庭项目,其中候选人被要求在几天内修复错误或实施小功能。这是' t伟大的,因为它需要很多时间,他们可以接受外部帮助(或者,如果该功能足够普遍,谷歌它)。另一方面,一些大型公司通过对前瞻性工程师进行多小时的在线编码评估,相反,一些大公司在白板风格的面试中取得了一倍的​​加倍,具有不同程度的侵入性监视。

所有这些面试方法与一个非常简单的指标相比,与某人玩过。经历整个因子的过程几乎是最好的可能迹象表明某人如何处理普通技术问题。您甚至可以根据您的位置的资历来调整游戏,'重新招聘,以获得更好的感觉。在该角色中,LL功能如何。

因子是关于自动化的游戏。最好的介绍可能是这个拖车,但实质上,你的工作是建造一个能够将火箭发射到太空的自动化工厂。

你什么都不开始。你手动挖掘石头可以制作一个可以熔炼铁矿石的冶炼厂,你开采了铁板,然后你用来建造煤炭驱动的自动矿工。你可以从矿工上抓住铁矿石,把它放在冶炼厂自己,但它更有效地使用一个插入者来为您进行插入。然后你可以用铁让你能够制作另一个矿工,这是自动化煤矿。然后,您可以使用带拿煤炭并使用插入者将其放入铁矿工中。然后你使用铁板这个小型工厂生产制作第三次矿工开始收集铜,然后让你乘坐铜线,这让你制作一个电路,这让你打造水泵。然后与锅炉和蒸汽机结合使用,然后您可以构建生产力,并使用此电源运行研究设施以解锁新技术,如装配机。一旦你' Ve Unlocked装配机器,您可以使用电路来制作一个装配机,可以为您制作铜线,并将其插入装配机器,为您提供工艺电路。

最终,您可以解锁火车和机器人和物流系统,帮助您处理游戏所需的历时的物流复杂性,直到您最终设法将火箭发射到太空中。

游戏的开头从没有任何目标,几乎没有任何方向。高级开发人员应该能够探索UI并找出目标,然后建立一个实现这个目标的计划。初级开发人员应该能够执行一项高级开发人员为他们提供的任务。预计实习生需要需要相当多的指导,但初级开发人员应该能够在需要高级开发人员的帮助之前对自己的代码进行故障排除。一旦任务,中间开发人员应该能够独立运行,但预计不会做任何架构设计。

通常预计实习生将能够填充预先放置的蓝图,并使用皮带将其蓝图与其他东西挂钩,如矿石贴片。

初级开发人员应该能够自己建造生产线,虽然它可能会赢得' t非常优惠。他们可能需要高级开发人员的帮助,了解如何将皮带妥善送到所有中间装配机器。

中间显影剂应该能够在给定方向上设计近最佳的生产线(没有信标),具有最小的监督。

高级开发人员无需方向,并且能够确定要发生和设计行动计划的目标,然后将这些任务委派给其他编码器。

软件开发的一个关键方面是能够在团队上工作。这意味着与其他人协调您的努力,加强其他人的需求和与团队合作,而不是您自己的与团队合作,而不是拒绝调整您的设计,以帮助将其与其他人与其他人一起集成。工作。当然,这一切都是在因子中的所有时间,因为基础布局设计受到物理空间的限制。因此,您需要仔细考虑其他人在做什么,有时调整您的设计,以适应尺寸限制或与其他人交易,从预期上占用更多空间的设计。

任何简单地耗尽并开始做事或修复问题的人没有告诉人们会迅速赢得他们的同伴参与者,因为牛仔程序员所做的完全相同。幸运的是,因子包括一个内置的Git Chinough,通过向您展示修改任何实体的最后一个播放器来归咎于责任。因此,当人们临时解决方案和Don' t' t' t'当他们临时解决的问题最终爆发时,人们会发现。如果人们想赢得他们的游戏,他们就会学会与队友一起努力合作。

任何程序员最重要的技能是他们调试问题的能力。这可能是因子和真实软件工程之间最明显的平行。有些东西可以出错,远离问题的实际来源。能够在真正的问题上迅速磨练是一个关键技能,并且思维过程几乎与追查实际程序中的崩溃原因相同。如果装配机已停止工作,首先您必须查看是否有多个备份的输出。然后你必须检查它缺少的成分。然后你必须通过你的工厂追溯成分,找出你的位置'重新制作它,并重复ad nustum。

因子和#39;调试相当迅速复杂。一旦你开始努力加油处理你' ll正在处理破解,你在哪里'重新处理3种不同的产出,如果其中任何一个都以任何原因备份,整个事情都停止了。有些情况下,整个工厂可以努力停止,因为你开始研究一个人不需要黄色科学的东西,这阻止了使用Up机器人框架,这阻止了使用润滑剂停止的电动发动机,这阻止了消耗沉重的备份和停止石油生产的石油,这使得你用完了石油,这破坏了塑料,这打破了红色电路,这突破了工厂的其余部分。经验丰富的玩家将预测这样的场景,并使用电路来构建自平衡的油裂,以确保系统平衡,如果石油备份,则只会备份。一个新的球员是一个很好的程序员,当呈现一个折叠的工厂时,通常能够将问题追溯到源,实现发生了什么'发生了什么,并立即尝试弄清楚解决方案。另一方面,如果有人只是溅出几个储罐,否则他们可以提供一个充分的原因(他们非常自信我们将来不会在将来消耗润滑剂),那么这是他们如何接近解决问题的红旗在他们的计划中。

这样的情况允许因子密切模仿程序员经常处理的复杂的相互依赖性,并且复杂性简单地增加了更多的游戏概念。这密切遵循增加复杂性,即在尝试调试可能在您使用的框架之一内可能发生的崩溃时介绍额外的抽象层。

通常,需要为性能或吞吐量调整初始设计。良好的程序员不仅会接受对他们的设计批评,而是将这一反馈纳入他们未来的工作。如果他们不同意拟议的变化,他们将提供一个具体的理由,为什么他们不同意,以便团队更准确地衡量拟议变革的利弊。

抵制反馈而没有提供充分的理由是一个着名的红旗,但是也有问题是一个程序员,他们吝啬地接受提出的改变,但拒绝相应地调整未来的设计。他们最终需要持续的提醒来坚持解决问题的标准方法,同时没有理由为什么他们不喜欢球队正在做事的方式。这些可以在组织中勾选时间炸弹,因为当左侧无监督时,他们可以迅速积累其他团队成员的技术债务。除非实习,否则这种问题几乎是不可能捕获的传统访谈。

拒绝合并反馈通常只是一个较大的问题,其中某人无法正常集成到正在使用的现有框架中。有很多方法可以在因子中构建工厂,每个方法都需要建筑物的标准方法。未能坚持标准可以非常迅速地堵塞整个工厂,通常以微妙的方式争夺' t必须对一个粗心的开发商显而易见。

在主皮带设计中,一套4-8块皮带,除以2个空格,允许地下带放置在工厂的中心,所有生产都发生在腰带上。这种设计依赖于若干规则,如果没有正确遵循损坏的规则。一个,玩家必须始终使用分离器将物品从皮带上拉,从不重定向整个皮带,否则使用空间用于不同的物品带的空间意味着你甚至永久地失去了整个资源腰带升级带。二,所有工厂必须在垂直于主带的方向上可伸缩。未能做到这一点将迅速导致大规模的空间浪费,或者不能缩放的生产线,因为它被其他生产线包围的'

还有不同的建筑物流网络方式。最简单的方法是具有被动提供者的箱子,但另一种方法使用带有过滤器的存储箱,用于解决垃圾项目问题。这两种方法都需要正确设置正确位置的限制器。被动提供者箱通常受到胸部空间的限制。储存箱需要将插入器连接到物流网络上,确保在插入之前的物品中的少于N.忘记执行这些限制步骤是一种大规模的资源浪费。始终忘记将LIMETS放在输出上是一个关于在现实世界应用中表现的人的红旗。

在其他情况下,该团队可能使用一些预先设计的蓝图,如核反应堆设计,或机器人厂。这些可能是非常复杂的,但只要人们愿意学习如何使用它们,他们就可以是巨大的节省时间。谨防候选人,谁想知道如何在机器人工厂中学习如何在机器人工厂中设置新项目,因为它们可以' t调试驱动它的复杂逻辑,或者沮丧地学习如何使用机器人工厂尽管有明显和明显的好处。

因子中的列车是多线程的直接模拟:一列火车是一个执行线程,每个列车交叉口或火车站都是内存中的一个地方,其中两个线程可能同时写入。火车信号是锁或互斥锁。列车网络中的所有错误都表现在软件比赛条件的完全相同的方式,因为它们'重新实际竞争条件。所有权衡都适用于这里 - 如果您锁定太大,它会减慢吞吐量,因为现在交叉点被阻止了更长的时间。错误地发信号通知轨道常规导致培训死锁与软件死锁完全相同,因为您最终符合循环锁定依赖性。最常见的死锁是当火车太长时,在等待进入一个时意外地阻挡第二个交叉点。然后,第二个交叉点防止另一个火车离开,防止了第一交叉口被畅通无阻。

网络中的轨道的车道数量等于CPU中可用的核心数量。单个轨道线难以扩展超出几个线程,因为整个系统都会非常快速地获得吞吐量,即使使用等待区域也很快。最常见的设计是一个双车道设计,其中每个车道是一个方向,但是当您需要不断卸载的列车时,这最终会遭受吞吐量问题。因此,大碱基倾向于具有至少4个泳道,其两个外部车道作用为绕过以避免尽可能避免交叉口。

这些系统中缺少的信号问题可以披着荒谬的时间来实际出现。一个轨道网络中的单个缺失信号曾经在正常运行后造成僵局两周。这是难以在高度争用下每月左右发生一次竞争的竞争条件。

就像在软件中一样,因子中的缩放生产引入了初始设计的新问题,并且通常需要完全重新设计,可以尽可能快地将资源管制到工厂中,同时采取生产模块和速度模块信标。即使在最快的皮带速度下,皮带限制也变得有问题,强迫玩家找到分裂设计的方法,以便在以后的线路上放置更多的带,或将工厂分成模块。

处理物流网络本身成为后期游戏中的物流问题,因为膨胀机器人网络有效了。您通常需要开始分割物流网络,并使用列车来运输它们之间的物品,或者构建跨边界跨越项目的请求者胸部/提供者胸部。

在后期游戏中管理列车需要从推送架构切换到拉动架构,因为推送架构可以' t功能高吞吐量。这不可避免地需要利用列车限制特征,并学习如何使用电路网络来编码基本逻辑,使得站仅在其实际准备好与资源完全填充列车时请求火车,而不是常见的早期游戏简单地讲述一束火车的策略去找名为“铁拾音器”的站。这最大限度地减少了所需的列车数,同时确保在网络上提供所有停止。

通常,对装配机器和插入器速度的可能输入数量的限制需要重新设计它们的工厂,就像高速计算如何需要了解CPU如何工作的微妙瓶颈。在达到一定的规模之前,这些瓶颈几乎从来都不是一个问题,此时他们开始主导你的效率。

最终,工厂非常巨大,他们必须放弃一个简单的主腰带或意大利面设计,并使用更可扩展的框架。为了达到兆级规模,工厂通常使用火车系统或模块系统,它大致对应于微服务或插件架构。

一列基于火车的兆赛有时被称为“城市块”设计,其中列车包围了工厂块并控制所有输入和输出。因此,每个独立的城市块都是从所有其他城市块隔离的,因为它们的所有输入都是“纯粹的”,因为它来自火车网络。这与微服务架构(通过HTTP)或多流程设计(使用IPC)几乎完全相同,并且具有输入和输出延迟的潜在问题,因为无法不断提供结果,它们必须在“数据包中” “或沿网络列车。

插件架构旨在维护主带的一些序列,而是通过工厂拆除带带的腰带,并使用采用标准输入和标准输出的模块化块。有时这可以完全通过机器人实现,但是通常需要长距离束缚。这与单片应用的插件系统非常相似,并且具有类似的权衡。

这些兆页标记了vanilla figursio服务器的极端上端。但是,有大量的模式使事情更复杂。

太空探索是对基础的整体空间探测,增加了游戏的整个空间段,并使行星具有有限的资源,要求玩家在其他行星中殖民,并使用火箭来转移行星之间的资源。由于行星之间的运输材料所涉及的巨大延迟,协调这些不同的基础在全球分布式数据库系统上具有类似的问题。即使是电路网络也必须与延迟争辩,因为自动请求系统丢失了已经发射但没有哈登的物品曲目.T' T但到达目标星球。没有考虑到这将导致您想要的所有项目的双重请求,这是分布式系统在尝试确保一致性时具有的完全相同的问题。

集体,软件行业根本不知道如何聘请软件开发人员。因子可能是我们现在拥有的最好的技术面试,而且柔化。它也是非常不切实际的,在初始多人游戏中超过20小时,或者如果你有很多人,并且知道你和#39;重新做什么。什么'从此外带?我不知道。我们肯定可以' t切换到使用因子作为面试方法 - 您可以刚刚给出一个家庭分配。