📅  最后修改于: 2023-12-03 14:47:20.780000             🧑  作者: Mango
本文是一位SDE-I在OYO客房面试的体验分享,包括面试环境、面试过程中的问题和经验总结。
面试官采用Zoom进行视频面试,采用共享屏幕和白板的方式进行编程题实现和问题解答。
要求:实现链表的基本操作,包括添加元素、删除元素和遍历所有元素。
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
要求:给定两个有序数组,找出它们的重复数字,不能使用内置函数。
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
面试过程中,根据面试官的问题,我对自己的技术水平进行了反思,发现自己对于一些系统设计和性能优化的知识还有待提高。在编程问题方面,我认为自己的表现还不错,但是需要加强基础数据结构和算法的学习和应用。
综合来说,这次面试让我获得了一些宝贵的经验,帮助我更好地了解自己的技术实力和不足,有利于我更好地准备未来的面试和职业发展。