📅  最后修改于: 2023-12-03 15:20:02.755000             🧑  作者: Mango
最近我经历了一次在 Swiggy 的 SDE-2 面试,今天就来分享一下我的面试体验和一些有用的信息。
整个面试过程分为四个环节:
初试:这个环节主要是了解你是否具备 SDE-2 的能力水平,会问一些基础算法和数据结构的问题。
专业面试:这个环节重点考察你的技术能力,会让你在白板上编写代码。
设计面试:这个环节考察你的系统设计和架构能力。
HR 面试:这个环节比较简单,主要是了解你的一些个人信息和意愿。
之前我在 leetcode 上找了一些类似的题目练习,这也帮助我在面试时更有自信。
根据给定的排列,找出第 k 大的元素。
这个问题可以使用快速排序或堆排序解决。
二叉查找树的 k 大元素。
我的解决方案是使用中序遍历二叉查找树得到一个升序数组,然后返回该数组的 k-1 个下标的元素。
给定两个字符串,找出它们的最长公共子序列。
可以使用动态规划解决。
104. Maximum Depth of Binary Tree
这个问题可以使用递归或 BFS 解决。
def maxDepth(self, root: TreeNode) -> int:
if not root:
return 0
return max(self.maxDepth(root.left), self.maxDepth(root.right)) + 1
15. 3Sum
这个问题可以使用双指针算法解决。
def threeSum(self, nums: List[int]) -> List[List[int]]:
nums.sort()
res = []
n = len(nums)
for i in range(n):
if i > 0 and nums[i] == nums[i-1]:
continue
l, r = i + 1, n - 1
while (l < r):
s = nums[i] + nums[l] + nums[r]
if s < 0:
l += 1
elif s > 0:
r -= 1
else:
res.append([nums[i], nums[l], nums[r]])
while (l < r and nums[l] == nums[l+1]):
l += 1
while (l < r and nums[r] == nums[r-1]):
r -= 1
l += 1
r -= 1
return res
设计一个 API 来管理一个在线购物网站上的产品。
这个问题考察的是你的系统设计能力。需要考虑的因素包括:数据存储、API 路由、请求处理器以及使用的技术栈。
总体上,我认为这是一次非常好的面试体验。虽然问题有一些挑战,但仍然很有趣,而且考官非常友好,给我留下了很好的印象。我也学到了很多并得到了一些有用的建议。