📜  SDE-2 的 Swiggy 面试体验(1)

📅  最后修改于: 2023-12-03 15:20:02.755000             🧑  作者: Mango

SDE-2 的 Swiggy 面试体验

最近我经历了一次在 Swiggy 的 SDE-2 面试,今天就来分享一下我的面试体验和一些有用的信息。

面试环节

整个面试过程分为四个环节:

  1. 初试:这个环节主要是了解你是否具备 SDE-2 的能力水平,会问一些基础算法和数据结构的问题。

  2. 专业面试:这个环节重点考察你的技术能力,会让你在白板上编写代码。

  3. 设计面试:这个环节考察你的系统设计和架构能力。

  4. HR 面试:这个环节比较简单,主要是了解你的一些个人信息和意愿。

面试问题

之前我在 leetcode 上找了一些类似的题目练习,这也帮助我在面试时更有自信。

初试
  1. 根据给定的排列,找出第 k 大的元素。

    这个问题可以使用快速排序或堆排序解决。

  2. 二叉查找树的 k 大元素。

    我的解决方案是使用中序遍历二叉查找树得到一个升序数组,然后返回该数组的 k-1 个下标的元素。

  3. 给定两个字符串,找出它们的最长公共子序列。

    可以使用动态规划解决。

专业面试
  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
    
  2. 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
    
设计面试
  1. 设计一个 API 来管理一个在线购物网站上的产品。

    这个问题考察的是你的系统设计能力。需要考虑的因素包括:数据存储、API 路由、请求处理器以及使用的技术栈。

面试评价

总体上,我认为这是一次非常好的面试体验。虽然问题有一些挑战,但仍然很有趣,而且考官非常友好,给我留下了很好的印象。我也学到了很多并得到了一些有用的建议。