📌  相关文章
📜  CouponDunia 面试经历 | Set 5 (全职软件工程师)

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

CouponDunia 面试经历 | Set 5 (全职软件工程师)

我从他们的职业页面申请并被要求参加 5 轮,我清除了所有这些并进入了全职软件工程师的工作🙂

第1轮:
这是 5 轮问题筛选,旨在了解我对组织的期望。

第 2 轮:
Hackerrank 上的在线编码回合

3个编码编码问题:
- 稍作修改的字符串的运行长度编码
– 为给定的一组日子寻找买入日和卖出日,以使买方的利润最大化。
– 给定一组关键字和一个长字符串,打破长字符串,使分割的单词仅来自关键字

问题相当简单,但测试用例非常好。

第三轮:
第一次面试

面试进行了大约 1 小时,完全是技术性的。提出的问题是:
– 给定一棵二叉树,你如何识别它是否是二叉搜索树?
我使用中序遍历给出了答案。

– 给定一个 bst,将其转换为二叉树,使得每个元素都替换为所有大于它的元素的总和?

– 给定一个包含员工姓名和薪水的员工表,找到第二高的薪水。
我给出了使用内部查询的模糊答案,然后他问是否不是第 2 高,而是第 n 高,那我该怎么办。过了一段时间,我询问了关键字(即 LIMIT),然后我编写了几乎语法正确的查询。

– 二叉树问题的答案,他问我是否可以不使用任何空间来解决它(我之前的解决方案占用了 O(n) 空间)?
我正在写解决方案,中间他说停下来问我是否有任何问题。

第四轮:
Java应用程序开发

想象一下,我们的数据库中有一个电子邮件队列表,每一行代表需要发送的电子邮件。表名:EmailQueue 列:id、from_email_address、to_email_address、subject、body(您也可以根据需要添加列,但至少应该有这些列)。编写一个Java程序,该程序将从该表中读取并通过 SMTP 服务器(不是本地 unix 邮件)发送电子邮件。对于 SMTP 发送,如果您愿意,您可以使用您选择的预先存在的库。请考虑以下几点:

  1. 速度是最关心的问题。想象一下,我们有 100 万封电子邮件要发送。您的代码不应按顺序发送一封接一封的电子邮件。
  2. 您的解决方案应该可以扩展。换句话说,如果我们确定我们可以从单个服务器发送电子邮件的最快速度是 300 封电子邮件/秒,那么我应该能够在另一台服务器上运行相同的Java程序,并且能够再发送 300 封电子邮件/秒。
  3. 您的代码应注意确保同一封电子邮件不可能被发送两次(尤其是在运行程序的多个进程时)。
  4. 不用担心 SMTP 服务器能否处理负载。它可以。
  5. 发送订单电子邮件不一定重要。换句话说,即使我称其为“队列”,保证电子邮件按照它们排队的顺序发送并不重要。
  6. 广泛评论您的代码。
  7. 再一次,速度是首要考虑的问题。因此,请记住考虑电子邮件发送过程中的慢点可能是什么,并努力将这些痛点降到最低。
  8. 向我发送有关如何编译/运行/测试代码以及代码本身的说明。还有用于创建您正在使用的表的 sql 语句和用于插入一些测试电子邮件的 sql 语句。

第五轮:
最终面试

关于软技能和技术技能的时间约为 1 小时。提出的问题包括:

– 讲述你自己?
– 给定一个数组。找到它遵循的模式?只能有 4 种模式:增加、减少、增加然后减少和减少然后增加。
– 给定一个不同的正数数组,找到元素的最大和,使得在最大和集中出现的没有 2 个元素彼此相邻。
我给了一个错误的答案,然后我意识到了,所以我要求纠正,她允许我这样做。
– 您如何改进对用户的优惠券建议?
这场讨论持续了大约 20 分钟。