📜  UHG 面试体验(校内)

📅  最后修改于: 2022-05-13 01:58:40.213000             🧑  作者: Mango

UHG 面试体验(校内)

第一轮:第一轮是在线测试,在cocubes平台上,包括两个部分。

能力(30 分钟内 30 个问题。):同样,它有两个小节。

  • 逻辑推理。 20 个问题,20 分钟。所有的问题都是基于段落的。
  • 定量推理:10 个问题,10 分钟。再次,基于段落的问题。

编码部分:两个问题,很简单,30分钟。每个人都有不同的集合。其中一些问题是:

  • 一个数字的所有数字的总和,直到总和为一位。 (https://www.geeksforgeeks.org/finding-sum-of-digits-of-a-number-until-sum-becomes-single-digit/)
  • 给定一个数字 n,找出制作 n 级卡片金字塔所需的卡片数量。
  • 具有给定约束的简单密码检查器,例如至少一个大写字母、至少两个数字和一个特殊字符等。
  • 以 k 组为单位旋转链表。 (https://www.geeksforgeeks.org/rotate-linked-list-block-wise/)和其他一些简单的问题。

第 2 轮: 35 人入围此笔纸代码轮。人们被分成九人一组,被一组一组地称为。每个小组都被提出了一个完全开放式的问题,我们必须用我们选择的任何语言编写代码。每个人有 45 分钟的时间。这四个问题是:

  • 问题陈述:给定一个图实现,例如 Facebook,找到两个给定人之间的最小分离度。还给出了图是使用链表实现的。可以看到问题要求通过邻接表表示的图中的两个给定节点之间的最小路径的人通过在将任何给定节点作为源之后应用 Djikstra 算法解决了该问题。
  • 问题陈述:在 Twitter 上查找热门词。再一次,一个非常直率、开放式的问题,没有太多定义。他们想测试学生的分析、编码技能以及思维过程。他们期待诸如基于频率的单词排序等功能,优先考虑时间戳(这就是趋势,对!),删除特殊字符,如#,$,@等,不计算常用词,如 is, am, are, the, preositiions 和所有。两个或更多相似的词,例如,#metooo 和 #meeeeeetoooouuuuuu.. 被认为是相同的,还有很多其他的。
  • 问题陈述:在给定 k 次股票的情况下,最大化股票的利润。 https://www.geeksforgeeks.org/maximum-profit-by-buying-and-sales-a-share-at-most-k-times/
  • 问题陈述:Krithika 获得了新的 Prime 订阅并观看了 k 部电影。帮助主要人物向她推荐第 (k+1) 部电影。基本上,设计一个个性化的推荐引擎。 (显然不使用 ML 库!他们想要 C/C++/ Java/ Python代码)。这是我被问到的问题。再次,一个非常开放的问题。他们计划盘问我们并检查我们的思维过程。我是如何解决这个问题的,我同时采用了两个条件来过滤掉剩余的电影:
  • 1.基于项目的过滤:您已经看过这部电影,因此您更有可能观看该类型的电影。为此,我在 C++ 中创建了一个名为 movies 的结构,其中包含不同的组件,例如 Genre、Rating、Studio、一个 Actors 数组、发布日期和一个 struct(Persons) 数组,其中包含观看过电影的人的列表电影。
  • 2.基于用户的过滤:看过这部电影的人也看过这些电影。为了实现这个功能,我创建了一个结构 person,其中包含姓名、年龄、国籍、职业和他看过的一系列结构电影。现在,这个过程是,对于她看过的每一部电影,我首先将它与数据库中存在的每部电影的所有特征进行比较,数据库中只是现在,一系列电影,并根据现在任意分配优先级。对于基于用户的过滤,对于她看过的每一部电影,必须有一个也看过该电影的人的数组,所以再次遍历该数组,然后在该数组内部,必须有一个数组他会看的电影,将其与那些进行比较,然后从所有这些中生成最终的最高分。最后,从生成的所有分数中推荐得分最高的电影。

第三轮(技术面试):写完最后一轮的代码并提交后,每个人都被一个一个叫来解释代码,然后讨论完成的项目和一些SQL查询。就我而言,我必须首先解释我的逻辑,然后他们开始质疑三个人。

  • 您已任意分配优先级以生成分数。如果这个优先级对这个人来说是错误的怎么办?如果推荐是错误的,这个人显然不会看电影或将其留在中间。所以,让我们设置一个时间限制,如果在此之前没有观看该电影,则将优先考虑其他一些功能并推荐其他一些电影,并将不同的功能放入循环队列中。除此之外,所有推荐和未观看的电影都应保存在一个数组选项中,并不时推荐它们。就像现在让他们休息,然后再次比较,与最高分的电影去推荐。
  • 尽管您已经介绍了许多出色的功能,但要这样做,时间复杂度为 O(n^3),对于如此庞大的数据库,动态计算和显示这是不可能的。你将如何改进这一点?好吧,为了比较,我可以将电影分成不同的桶,这样可以减少穷举,并将它们放在不同的集合中,这些集合可以在登录中进行搜索。这就是如何将两级循环转换为logn,从而将时间复杂度降低到n(logn)^2。