我从他们的职业页面上申请了此职位, 并被要求参加5个回合, 我清除了所有回合并进入了全职软件工程师职位🙂
第1轮:
这是5个问题筛选回合, 旨在了解我对组织的期望。
第二回合
在Hackerrank上进行在线编码
3个编码的编码问题:
–字符串的运行长度编码, 稍作修改
–查找给定日期的买入日和卖出日, 以使买方的利润最大化。
–给定一组关键字和一个长字符串, 请断开长字符串, 以使拆分词仅来自关键字
问题很简单, 但是测试用例非常好。
第三回合
第一次面试
采访进行了大约1个小时, 完全是技术性的。提出的问题是:
–给定二叉树, 你如何识别它是否为二叉搜索树?
我使用有序遍历给出了答案。
–给定bst, 将其转换为二叉树, 以便用大于它的所有元素之和替换每个元素?
–给出一个带有员工姓名和薪水的员工表, 找到第二高的薪水。
我给出了使用内部查询的模糊答案, 然后他问是否要执行而不是将它的第n个最高值排在第2位。一段时间后, 我要求输入关键字(LIMIT), 然后写出在语法上几乎正确的查询。
–关于二叉树问题的答案, 他问我是否可以不使用任何空间来解决它(我以前的解决方案使用O(n)空间)?
我在写解决方案, 他之间停下来问我是否有任何问题。
第四回合:
Java应用程序开发
假设我们的数据库中有一个电子邮件队列表, 每一行代表需要发送的电子邮件。表名称:EmailQueue列:id, from_email_address, to_email_address, 主题, 正文(你也可以根据需要添加列, 但至少应包含这些列)。编写一个Java程序, 该程序将从该表中读取并通过SMTP服务器(而非本地Unix邮件)发送电子邮件。对于SMTP发送, 你可以根据需要使用预先选择的库。请考虑以下几点:
- 速度是最重要的。假设我们有100万封电子邮件要发送。你的代码不应依次发送一封电子邮件。
- 你的解决方案应该可以扩展。换句话说, 如果我们确定可以从单个服务器发送电子邮件的最快速度是每秒300封电子邮件, 那么我应该能够在另一台服务器上运行相同的Java程序, 并且每秒可以发送300封电子邮件。
- 你的代码应格外小心, 以确保同一封电子邮件无法发送两次(尤其是在运行该程序的多个进程时)。
- 不必担心SMTP服务器是否可以处理负载。它可以。
- 发送订单电子邮件不一定重要。换句话说, 即使我将其称为"队列", 确保电子邮件按排队顺序发送也并不重要。
- 广泛注释你的代码。
- 再一次, 速度是最主要的问题。因此, 请记住要考虑一下电子邮件发送过程中的慢点, 并尽最大努力将这些烦恼最小化。
- 向我发送有关如何编译/运行/测试代码以及代码本身的说明。另外, 我可以使用sql语句创建要使用的表, 并使用sql语句插入一些测试电子邮件。
第五回合:
最终面试
软技能和技术技能大约需要1个小时。提出的问题包括:
–说说自己吗?
–给定一个数组。找到遵循的模式?只能有4种模式:增加, 减少, 增加然后减少以及减少然后增加。
–给定一个由不同的正数组成的数组, 请找到元素的最大和, 以使最大和集中没有2个元素彼此相邻。
我给出了错误的答案, 然后我意识到了, 所以我要求纠正, 而她允许我这样做。
–如何改善优惠券对用户的建议?
讨论进行了大约20分钟。
如果你喜欢lsbin并希望做出贡献, 那么你也可以写一篇文章并将你的文章邮寄到contribution@lsbin.org。查看你的文章出现在lsbin主页上, 并帮助其他Geeks。