第 1 轮:算法轮
- 给定一个已排序的数组,找到两个值 a 和 b,它们总和为 x。我告诉使用二分搜索,他说优化它。我做不到,他提示数组已排序,因此请考虑一下。我想通过预先计算 x 的下限来限制搜索。
- 从单向链表的最后一个中查找第 n 个元素。使用两个指针。
- 给定一个字符串。找到字符串 的所有排列,对它们进行排序并给出排序列表中特定字符串的索引。我不知道如何找到所有排列(见这个),但我解释了问题的其他部分。对于索引,我告诉他我们可以使用一些数学公式来找到否。以特定字母开头的排列组合。
- 给定一个大小为 nx n 的矩阵。如果人 i 与人 j 握手,则单元格 (i, j) 和 (j, i) 为 1。找出所有人群,即如果人 i 与人 j 握手,人 j 与人 k 握手,则 {i, j, k} 是一组。我试图向他解释联合查找算法,但我无法向他解释清楚。所以,他告诉我使用类似 DFS 的方法,我试图告诉他完整的算法,但随后达到了时间限制,他说时间到了。
第 2 轮:F2F(技术)轮
- 关于我的简历的问题——工作和项目。
- 他根据我的项目给出了一个 SQL 查询。在我的项目中,我使用了 XML,所以他让我设计模式是否必须使用 SQL。然后基于该模式,他问了我一个我无法解决的查询。
- 给定字符串和浮点值的结构,查找前 10 个最大元素。使用优先队列。
- www.facebook.com 将如何解决? DNS 解析步骤。然后,他问,会发送多少个 GET 请求?我不确定并说 1 个请求应该做。然后他问服务器如何根据 1 个请求知道要发送什么,我不知道如何。
- 进程和线程的区别。可以从线程调用进程吗?我不确定这一点。