CouponDunia 面试经历
最近收到了CouponDunia的offer,下面是我的面试经历:
有四轮。
第 1 轮:HackerRank 编码测试。
90 分钟三个问题。
第二轮:电话面试
- 假设你有 25 匹马,你想从这 25 匹马中选出最快的 3 匹。在每场比赛中,只有 5 匹马可以同时奔跑,因为只有 5 条赛道。在不使用秒表的情况下,找到 3 匹最快的马所需的最少比赛次数是多少? (http://www.programmerinterview.com/index.php / PHP/25-horses-3-fastest-5-races-puzzle)
- 在两个堆栈的帮助下实现队列。
- 给定一个包含名称和标记列的“学生”表。您必须编写一个 SQL 查询才能从表中获得第二高分。还要编写一个查询来查找第 n 个最高分,其中 n 可以是任意数字。
- 剩下的加入。举个例子。
- 什么是PHP中的魔术函数和自动加载?
- 什么是 SQL 注入?
- 给定三个按非降序排序的数组,打印这些数组中的所有公共元素。
例子:
ar1[] = {1, 5, 10, 20, 40, 80}
ar2[] = {6, 7, 20, 80, 100}
ar3[] = {3, 4, 15, 20, 30, 70, 80, 120}
输出:20、80
ar1[] = {1, 5, 5}
ar2[] = {3, 4, 5, 5, 10}
ar3[] = {5, 5, 10, 20}
输出:5、5 - 程序、进程和线程之间的区别。
- 您将如何在 CouponDunia 网站上显示最受欢迎的优惠券?你会遵循什么方法?
第三轮:作业(Java项目)
想象一下,我们的数据库中有一个电子邮件队列表,每一行代表需要发送的电子邮件。表名:EmailQueue 列:id、from_email_address、to_email_address、subject、body(您也可以根据需要添加列,但至少应该有这些列)。编写一个Java程序,该程序将从该表中读取并通过 SMTP 服务器(不是本地 unix 邮件)发送电子邮件。对于 SMTP 发送,如果您愿意,您可以使用您选择的预先存在的库。请考虑以下几点:
- 速度是最关心的问题。想象一下,我们有 100 万封电子邮件要发送。您的代码不应按顺序发送一封接一封的电子邮件。
- 您的解决方案应该可以扩展。换句话说,如果我们确定我们可以从单个服务器发送电子邮件的最快速度是 300 封电子邮件/秒,那么我应该能够在另一台服务器上运行相同的Java程序,并且能够再发送 300 封电子邮件/秒。
- 您的代码应注意确保同一封电子邮件不可能被发送两次(尤其是在运行程序的多个进程时)。
- 不用担心 SMTP 服务器能否处理负载。它可以。
- 发送订单电子邮件不一定重要。换句话说,即使我称其为“队列”,保证电子邮件按照它们排队的顺序发送并不重要。
- 广泛评论您的代码。
- 再一次,速度是首要考虑的问题。因此,请记住考虑电子邮件发送过程中的慢点可能是什么,并努力将这些痛点降到最低。
- 向我发送有关如何编译/运行/测试代码以及代码本身的说明。还有用于创建您正在使用的表的 sql 语句和用于插入一些测试电子邮件的 sql 语句。
第 4 轮:Skype 面试
- 说说你自己。
- 关于我的项目(详细)。
- 什么是 AJAX?详细解释 AJAX 的工作原理。
- 给定一个数组,打印每个元素的下一个更大元素 (NGE)。如果不超过则打印-1。他们让我写完整的代码。
- 有一个字典,每个长度为 3 的单词很少,并且给出了开始和结束词。您只需更改一个数字即可从一个单词到达另一个单词。就像猫一样,你可以伸手去拿帽子、蝙蝠或帽子。从开始字到达结束字应采取的最少步数是多少。
- 有一家拥有100间客房的酒店,并提供一些不同客人的入住和退房服务。您不想使用所有房间。因此,您必须在最少数量的房间中进行安排。那个最小数量是多少?
- 解释自动完成系统(如谷歌搜索建议)。您有一个数据库表和一个搜索框。当您在搜索框中键入时,它应该显示来自该数据库表的建议。你会怎么做?详细解释。