📜  SDE 实习(校外)的 Expedia 小组面试经验(1)

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

SDE 实习(校外)的 Expedia 小组面试经验

简介

Expedia是全球领先的在线旅游服务提供商之一,公司总部位于美国,业务涵盖全球多个国家与地区。作为一个在全球范围内运作的大型公司,Expedia在软件开发方面一直处于领先地位。本文将分享在 Expedia SDE 实习(校外)小组面试中的一些经验。

面试准备
熟悉语言和算法

无论哪家公司,了解并熟练掌握常见的编程语言和广为接受的算法知识都是必要的。建议在面试前熟悉以下技术:

  • 编程语言:Java、Python、C++ 等
  • 数据结构:栈,队列,链表,树,图等
  • 算法:二分查找,贪心算法,动态规划,递归等
  • 网络通信:HTTP,TCP/IP 等
深入了解公司

面试前要了解所应聘公司的文化、业务和产品,这可以帮助你更好地了解公司的期望和职责范围。你可以访问公司网站、查看公司的线上和线下活动,或者和公司的员工联系。

练习编程和设计问题

日常的编程和设计问题练习,可以提高算法和语言知识,同时提高解决问题的能力。可以在 leetcode 和 HackerRank 等网站上找到许多问题,同时可以查看其他程序员的解决方案以学习更多。

面试内容
编程问题

在面试中会让你写代码解决一些具体的问题。如下所示是一个例子,问题、解题思路和代码实现均已给出。

问题

给定一个长度为 n 的非空数组,找到其中出现频率最高的 k 个元素。

注意:

  • 频率以降序顺序排序
  • 如果两个数的出现频率相同,则按数字小的顺序

解题思路

  • 使用字典记录每个元素出现的次数。
  • 计算出每个元素出现的次数,并按出现的次数从大到小排序(如果出现频率相同,则按照数字来排序)。

代码实现

class Solution(object):
    def topKFrequent(self, nums, k):
        """
        :type nums: List[int]
        :type k: int
        :rtype: List[int]
        """
        dict = {}
        for i in range(len(nums)):
            if nums[i] not in dict:
                dict[nums[i]] = 1
            else:
                dict[nums[i]] += 1
 
        items = dict.items()
        backitems = [[v[1], v[0]] for v in items]
        backitems.sort(reverse=True)
 
        res = []
        for i in range(k):
            res.append(backitems[i][1])
        return res
设计问题

设计问题是在面试中长时间讨论问题的机会,旨在检查您的架构设计基础知识。下面是一个例子。

问题

设计一个图像识别系统,这个系统可以识别一个宠物狗的品种。

解题思路

  • 首先,必须确定用于训练和测试算法的数据集。根据最新的宠物狗品种,收集大量宠物狗图片,分类数据集。

  • 然后,需要执行以下步骤:

    • 图片预处理:对每个图片进行预处理,如裁剪、缩放、去噪等
    • 特征提取:使用卷积神经网络(CNN)或其他机器学习算法提取图片的特征
    • 数据建模:使用训练数据集构建模型进行训练
    • 模型评估:将模型运用于新的宠物狗图片测试集
    • 设计输出:输出宠物狗品种识别的相似度、整体图像等
    • 迭代模型:利用模型输出和新的数据集不断迭代和调整模型。

代码实现

由于这类问题着重于设计,可能不需要代码实现。但是,如果适用于特定问题,算法和代码示例是有用的。

总结

SDE 实习(校外)的 Expedia 小组面试必须有充分的编程和设计问题的准备。我们在面试中需要表现出熟练的语言和算法知识。同时,必须能够进行设计问题的思考。最后,我们要记住,在面试中要展现自己的热情和求知欲。