技术面试中有趣的难题

我参加了很多采访,而且双方都处于对立状态。 现在是时候与其他人分享最有趣的难题。 因为面试应该有趣而令人难忘,而不是痛苦和令人沮丧。



一些评论


  • 有关逻辑和/或编程的所有任务。 没有心理色彩和圆形阴影。
  • 该决定不是故意做出的。 但是,我向您保证,几乎所有任务都有一个简单而美观的解决方案。 好好享受

任务


他们在这里。


在SQL中镜像字符串


假设我们有一个带有字符串列的表,并且希望根据某种条件查找相似的行(例如,它可以是全文搜索或某些内部函数,该函数在输入处接收两个值并返回true / false)。 因此,我们编写了自联接,当然,我们得到了值之间的重复项。 也就是说,我们得到了镜像对,其总值正好是我们想要的两倍。 问题:如何从结果中删除每个镜像对中的任何元素,并仅保留唯一值直到排列?


提示与技巧
  • 您可以使用字符串和基本SQL语句的一种非显而易见的属性...
  • 或者,您也可以在Google上搜索它,如果请求正确,答案将在第一个链接到stackoverflow的链接中。

用SQL寻找漏洞


对于评估SQL的所有基本功能的知识,这是一项出色的任务。


假设我们有一个包含一个int列的表。 我们对其中的最小/最大值一无所知。 另外,我们对表中的行数一无所知,并且通常情况下,行数是变化的,我们不应该依赖它。 我们也知道,在这些值中,有一些遗漏的长度不超过1。 例如,对于5个(五个)元素的表:1、2、4、6、7。问题:仅使用基本运算符(即没有过程和变量)编写单个SQL查询,这将返回所有“空洞”的值。 对于上面的示例,结果应为3、5。请记住,间隙处没有NULL值。 值3和5不在表中。


小费
  • 如果移动失败,请编写多个查询或使用pl / sql,然后,如果您的想法正确,则可以从逻辑上进行一个查询。

提示
  • 最漂亮的请求是上述输入条件的请求返回的不是“ 3,5”,而是“ 3,5,8”。

在单链列表中循环


这是关于算法和复杂性的问题。


假设我们有一个有限的,简单连接的列表。 我们知道它可能有一个周期。 也就是说,以下元素之一是指先前的元素之一。 有必要描述在有限时间内在这种结构中寻找循环的方法。 此外,您还需要估计执行建议算法所需的时间和内存。


延续性


必须修改结果,以使存储器复杂度为O(1)。 即,因此存储器消耗不取决于列表的大小。


提示
  • 请记住,就像质量可以转换为能量一样,时间复杂度也可以转换为内存消耗,反之亦然。

键值存储


共同编写代码并在编写过程中进行讨论的另一任务。


用所需的任何语言编写键值存储。 添加set_all函数,该函数接受一个值并为所有现有键设置它。 估计最终实现所需的时间和内存成本。


现在使set_all适用于O(1)。


并且您是否可以确保getset方法的复杂性始终保持在一开始,并且set_all继续适用于O(1)? 如果是,则实施。 如果没有,请证明为什么这不可能。


救人


在此任务中,您需要与受访者一起思考和推理。 实现是技术问题,并不是特别有趣。


想象一下,我们有一群人。 数量无关紧要。 整个小组在头后排成一排,每个头上戴黑或白帽子。 没有人知道他戴的帽子的颜色。 但是,每个人都看到在他们前面发生的事情,并听到在他们后面发生的事情。 之后,一个手枪的陌生人走到了最后一组的后面。 他问,“你的帽子是什么颜色?” 答案只能是黑色或白色。 不能有其他消息。 如果一个人猜了,他们就会放开他。 否则,将发生射击,并且在任何情况下,都会以队列中的“新”最后一个成员重复该过程。


一个重要的澄清:在开始这种不人道的经历之前,小组中的所有成员都可以开会并考虑他们的生存策略。


问题:如何最大程度地增加幸存者的数量?是否根据组的大小准确估算了幸存者的数量?


小费
  • 想想每个成员如何收集所有可用信息并将其一次传输?

提示
  • 也许偶/奇或XOR运算符可以帮助您?

仅此而已。 现在轮到您解决任何问题,并谈论您有趣的采访选择。

Source: https://habr.com/ru/post/zh-CN426345/


All Articles