📜  SDE-I的OYO客房面试体验| 2020年校内(1)

📅  最后修改于: 2023-12-03 14:47:20.780000             🧑  作者: Mango

SDE-I的OYO客房面试体验

简介

本文是一位SDE-I在OYO客房面试的体验分享,包括面试环境、面试过程中的问题和经验总结。

面试环境

面试官采用Zoom进行视频面试,采用共享屏幕和白板的方式进行编程题实现和问题解答。

面试问题
技术问题
  • 如何设计一个高并发的酒店预订系统?
  • 如何优化酒店搜索的性能?
  • 如何解决跨域访问的问题?
编程问题

1. 实现一个单向链表

要求:实现链表的基本操作,包括添加元素、删除元素和遍历所有元素。

Markdown代码片段:

class ListNode:
    def __init__(self, val=0, next=None):
        self.val = val
        self.next = next

class LinkedList:
    def __init__(self):
        self.head = None
        
    def add(self, val):
        new_node = ListNode(val)
        if not self.head:
            self.head = new_node
        else:
            curr_node = self.head
            while curr_node.next:
                curr_node = curr_node.next
            curr_node.next = new_node
            
    def remove(self, val):
        if not self.head:
            return
        if self.head.val == val:
            self.head = self.head.next
            return
        curr_node = self.head
        while curr_node.next:
            if curr_node.next.val == val:
                curr_node.next = curr_node.next.next
                return
            curr_node = curr_node.next
                
    def traverse(self):
        res = []
        curr_node = self.head
        while curr_node:
            res.append(curr_node.val)
            curr_node = curr_node.next
        return res

2. 寻找两个有序数组的重复数字

要求:给定两个有序数组,找出它们的重复数字,不能使用内置函数。

Markdown代码片段:

def find_duplicates(arr1, arr2):
    i = 0
    j = 0
    res = []
    while i < len(arr1) and j < len(arr2):
        if arr1[i] == arr2[j]:
            res.append(arr1[i])
            i += 1
            j += 1
        elif arr1[i] < arr2[j]:
            i += 1
        else:
            j += 1
    return res
总结

面试过程中,根据面试官的问题,我对自己的技术水平进行了反思,发现自己对于一些系统设计和性能优化的知识还有待提高。在编程问题方面,我认为自己的表现还不错,但是需要加强基础数据结构和算法的学习和应用。

综合来说,这次面试让我获得了一些宝贵的经验,帮助我更好地了解自己的技术实力和不足,有利于我更好地准备未来的面试和职业发展。