📌  相关文章
📜  药易面试经验 |软件工程师 |在校园

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

药易面试经验 |软件工程师 |在校园

第 1 轮 - 简历入围

共向公司投递简历166份,其中29份入围下一轮。

第 2 轮 - 书面技术测试

测试持续时间为 30 分钟。该测试有 5 个问题,3 个客观问题和 2 个编码问题。

问题 1 – 给出了一个Python代码片段,我们必须找出代码中的错误。

问题 2 – 最初关闭的灯泡有 n 个。你首先打开所有的灯泡。那么你

每隔一秒关一次灯泡。在第三轮,您每隔三个灯泡切换一次(如果它是

关闭或关闭,如果它打开)。对于第 i 轮,您切换每个 I 灯泡。对于第 n 轮,

你只切换最后一个灯泡。找出 n 轮后有多少灯泡亮着。

Ans – 如果灯泡的位置编号是一个完美的正方形,那么它就会亮。

问题 3 – 共有 n 名球员参加了一场网球淘汰赛。锦标赛的总比赛场数是多少?假设只有一个赢家。

(淘汰赛意味着如果一名球员输了,他就出局了)。没有比赛以平局告终。

Ans – n-1 匹配

问题 4 – 编写一个程序来打印给定字符串的所有排列。顺序无关紧要。您需要编写完整的代码,而不仅仅是伪代码。

问题中没有给出关于字符串中的重复项的任何内容,因此,我编写了可以为两种类型的字符串运行的代码,无论是否有重复项。

链接 - https://www.geeksforgeeks.org/print-all-permutations-of-a-string-with-duplicates-allowed-in-input-string/

问题 5 – 假设您有一个数组,其中第 i 个元素是给定股票在第 i 天的价格。

设计一个算法来找到最大的利润。您可以完成任意数量的交易(即多次买入并卖出一股股票)。

注意——您不能同时进行多笔交易(即,您必须在再次购买之前卖出股票)。

链接 - https://www.geeksforgeeks.org/stock-buy-sell/

您可能会认为在 30 分钟内完成此测试是不可能的,但如果您有很好的练习,那么这并不难。如您所见,编码问题并不新鲜,问题 2 和 3 也是流行的谜题。实践是关键。

本轮结束后,13名学生入围进一步面试。所有的采访都是通过 Skype 进行的。

第 3 轮 – 技术面试 1(时长:90 分钟)

这是第一轮面试,是 PharmEasy 的 CTO。面试从讨论我的简历开始。他问我关于我的项目。其中一个项目是我的 Google Summer of Code 项目,所以他让我详细解释这个项目。

然后他从编码问题开始。他问了2个问题:

问题 1 -他问我实现搜索栏自动完成功能的算法。例如——如果我在搜索栏中输入了“bar”,那么我的算法应该建议我所有以“bar”开头的有效单词,然后如果我在此之后输入“e”,那么所有以“bare”开头的有效单词都会建议。

在向我解释这个问题时,他使用了“trie”这个词。我知道 Trie 数据结构,但我从未使用过它,所以我告诉他我对 Trie 一无所知。所以,他让我忘记 Trie,只建议一种算法来解决问题。

在与他讨论了 15-20 分钟后,我给了他解决方案,之后他告诉我这实际上是 Trie 的实现,然后他印象深刻的是我提出了基于 Trie 的解决方案,甚至对 Trie 一无所知.

问题 2 -现在他进一步扩展了如果有人输入了不正确的单词拼写怎么办。就像 PharmEasy 是一家基于电子药房的公司,在从其应用程序订购药物时,假设有人在搜索栏中输入了错误的药物拼写。我的算法应该建议药物的正确拼写。当我们输入任何不正确的拼写时,这与 Google 搜索的“您的意思是”功能非常相似。

面试官非常友好,在解决问题的过程中帮助了我很多。我真的很难为这个问题想出一个正确的算法。经过大量讨论后,我想出了一个不完全正确的解决方案。我需要进一步优化它。我们再次讨论了大约 10 分钟,但我无法告诉他最好的解决方案。之后,他告诉我解决方案,并在 Suffix Tree 的帮助下解决了。

在那天之前,我什至从未听说过后缀树的名字。我只是惊讶于任何公司的第一轮怎么会如此困难。

在这两个问题之后,他问我关于哈希的问题。关于散列的一些基本概念,处理冲突的方法,我们如何实现散列和相关的东西。

最后,他问我是否有关于公司的问题。我的面试没有我想象的那么顺利,我不得不给他留下印象,所以我问了他很多关于公司的事情。在接下来的半个小时里,我们讨论了 PharmEasy 以及它的作用和类似的事情,让他知道我对这份工作有多么热情。

第 4 轮 – 技术面试 2(时长:30 分钟)

这一轮开始,面试官说:“你的简历给我留下了深刻的印象。”

他问了我 2 个谜题和 2 个编码问题,然后对我的简历进行了一些讨论。

谜题 1 - 有 25 匹马,您需要找出其中最快的 3 匹马。您最多可以在5个之间进行比赛,以找出它们的相对速度。在任何时候,您都无法知道马匹在比赛中的实际速度。找出需要多少场比赛才能获得前 3 名的马匹。

链接 - https://www.geeksforgeeks.org/puzzle-9-find-the-fastest-3-horses/

谜题 2——我们如何使用两根相同的电线测量 45 分钟,每根电线都需要一个小时才能燃烧。我们有火柴棍。电线燃烧不均匀。因此,例如,一根电线的两半可能分别在 10 分钟和 50 分钟内燃烧

链接 - https://www.geeksforgeeks.org/puzzle-1-how-to-measure-45-minutes-using-two-identical-wires/

编码问题 1 – 给定一个排序数组 arr[] 和一个值 X,在 arr[] 中找到与 X 最接近的 k 个元素。

链接 - https://www.geeksforgeeks.org/find-k-closest-elements-given-value/

编码问题 2 – 单链表上的快速排序

链接 - https://www.geeksforgeeks.org/quicksort-on-singly-linked-list/

我给了他所有上述问题的答案,然后他让我向他解释我的 GSoC 项目,他也喜欢我在那个项目中所做的工作。

我的 GSoC 项目是设计和实现跨平台 API,目标平台是 Android、iOS、Mac OS X、Windows 和 Linux。我的组织是Python Software Foundation (Kivy),项目名为 Plyer。

最后,他问我是否有任何问题要问他或公司。

本轮结束后,5名学生入围,进入下一轮也是最后一轮面试。

第 5 轮- 技术面试 3(时长:30 分钟)

这一轮只有一个问题,面试官要求我实现一个 URL 缩短器,比如 Bitly 或 TinyURL。

我开始给他一个基于散列的解决方案,但随后我向他解释了由于碰撞而将面临的问题,然后我们讨论了如何提出更好的解决方案。由于是电话面试,所以我不得不一直说自己的想法,这样他才能理解我的思考过程。他也给了我一些提示,直到时间结束,我给了他完成 90% 的解决方案,他告诉我我已经找到了一个不错的方法,如果我在接下来的几分钟内继续努力,我会解决它完全地。总的来说,他对我的回答很满意。

链接 - https://www.geeksforgeeks.org/how-to-design-a-tiny-url-or-url-shortener/

最后,他问我有没有关于公司的问题。

最后,他们只给了一个学生,而我就是那个学生。我真的很高兴成功地完成了这个过程,我感谢 geeksforgeeks 帮助我以如此精致的方式练习展示位置。