Zynga 面试经历 |在校园
Zynga 来到我的校园担任软件工程师职位。首先,他们进行了基于计算机的测试,他们提出了 3 个编码问题和 15 个 Aptitude 问题。我们有 60 分钟的时间来解决编码和能力问题。 3个编码问题是:
- 查找数组中的第一个非重复元素
- 通过改变链接成对交换链表的元素
- 二叉搜索树的锯齿形遍历。
21名学生入围下一轮面试。在一轮面试中,每个人都被问到了不同的问题。我被问到数据结构、Linux、算法、系统设计。但是我的朋友中很少有人被问到所有 3 轮的数据结构和算法。
第1轮:
- 高效实现 git diff(基本实现)
我解释了我首先标记我的文档并为原始文档使用 Tries 数据结构的方法,尽管它在时间复杂度方面是有效的,但在空间方面却不是。所以面试官向我解释了如何借助散列(使用 MD5)来做这件事。我没试过,如果有人知道,请在评论部分回答。
- 跑步时会发生什么
ls
.
面试官要我跟踪系统调用和fork、exec、terminate等的过程。
- 即使你只旅行到 sqrt(n),为什么素数程序也能工作的数学证明
我通过使用一些变量、符号并最终证明了这一点来做到这一点。
第 2 轮:
- 给定一个单词字典作为文本文件,您的输入是一个单词,返回字典中前缀为给定单词输入的所有单词。设计在时间复杂度方面应该是有效的。基本上他希望我开发自动完成。
我使用 Tries 完成了它,并使用 DFS 来遍历和存储所有预测。
- 设计和开发 Web 服务器(例如 apache、nginx)
设计是一个高度主观的话题,而且我在我的工程中从未使用过很多设计和分布式系统。我只知道我在网上和书本上学习的理论部分。所以我猜我的面试官对我的网络服务器设计并不满意。因此,我在这一轮后被拒绝了。
第三轮:
自从我被拒绝后,我从朋友那里得知,他们问他数据结构和算法以及 C 和 C++ 的基础知识。例如,当您使用新命令时会发生什么,跟踪所有系统调用。
供你参考 :
他预计答案是
new->malloc(), mmap(), brk(), sbrk().
面试官非常友好,如果遇到一些小事或愚蠢的事情,他们会帮助我们。
如有更多问题,请在评论部分提出。