📅  最后修改于: 2023-12-03 14:47:12.127000             🧑  作者: Mango
Sabre是一家提供技术解决方案的公司,主营业务包括全球范围内的旅行和财务交易。NIT 巴特那是 Sabre 在印度的研发中心,拥有一支庞大的技术团队。
作为一名SDE,我有幸参加了 Sabre 在 NIT 巴特那的面试,接下来是我的面试经历。
面试的第一轮是在线笔试,主要测试代码语法和数据结构算法基础知识。笔试题目包括以下内容:
编写一个程序,实现在一个给定的字符串中查找特定单词的数量和位置。
解题思路:
def find_word(s, w):
count = 0
positions = []
words = s.split(' ')
for i, word in enumerate(words):
if word == w:
count += 1
positions.append(i)
return count, positions
有一个数组,其中所有元素都是正整数,找出这个数组中最小的正整数。
解题思路:
def find_smallest(a):
a.sort()
for i in range(len(a)):
if a[i] > 0 and a[i] != i+1:
return i+1
return len(a)+1
给定一个字符串 s,求出 s 中所有子串的个数。
解题思路:
def count_substrings(s):
count = 0
for i in range(len(s)):
for j in range(i+1, len(s)+1):
count += 1
return count
第二轮是技术面试,主要测试基础知识和算法实现能力。面试官会提供一些算法题目,让你进行实现和解决。
给定一个二叉树,求出树的最大路径和。
解题思路:
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
class Solution:
def maxPathSum(self, root: TreeNode) -> int:
self.result = float('-inf')
self.helper(root)
return self.result
def helper(self, root):
if not root:
return 0
left_sum = max(0, self.helper(root.left))
right_sum = max(0, self.helper(root.right))
self.result = max(self.result, left_sum+right_sum+root.val)
return max(left_sum, right_sum) + root.val
给定一个有序数组 和一个目标值 target,找出数组中和为 target 的两个数的下标。
解题思路:
def two_sum(nums, target):
left, right = 0, len(nums)-1
while left < right:
if nums[left] + nums[right] == target:
return [left, right]
elif nums[left] + nums[right] < target:
left += 1
else:
right -= 1
return [-1, -1]
第三轮是 HR 面试,主要测试沟通能力和文化匹配度。面试官会问一些有关个人职业规划和公司文化的问题,例如:
参加 Sabre 在 NIT 巴特那的面试是一次很好的经验。面试总体难度中等,主要考察了基础知识和算法实现能力。掌握基础知识和算法,拥有良好的沟通能力,是取得面试成功的关键。