📅  最后修改于: 2023-12-03 15:12:13.036000             🧑  作者: Mango
近期我参加了谷歌的电话面试,以下是我的面试经历与心得。
面试分为两轮,每轮时长45分钟,分别由两名程序员进行。面试官非常友好,给予了很多建议和提示。
第一轮主要是关于算法和数据结构的问题。面试官给出了一个问题:给定一个数组,找到其中长度最长的连续递增子序列,并返回它的长度。我首先采用了暴力破解法来解决这个问题,但是面试官指出了其时间复杂度过高。然后我听取了面试官的提示,采用了动态规划的方法来优化算法,最终也得到了正确的答案。
def findLongestIncSubArr(nums):
if not nums:
return 0
n = len(nums)
dp = [1 for i in range(n)]
for i in range(1, n):
if nums[i] > nums[i-1]:
dp[i] = dp[i-1]+1
return max(dp)
第二轮主要是关于编程问题的面试。面试官给出了一个问题:实现一个函数,给定一个整数数组,将其中的元素向左移动k个位置。我的思路是先将k对数组长度取模,然后将数组分为两个部分,并逆序这两部分,最后将整个数组逆序。面试官认为我的方法比较巧妙,最后让我实现代码,验证边界条件是否正确。
def rotate(nums, k):
n = len(nums)
k %= n
nums[:k], nums[k:] = nums[n-k:], nums[:n-k]
nums[:], nums[::-1] = nums[::-1], nums[:]
总的来说,参加谷歌的电话面试是一次非常有价值的经历,虽然时限紧迫,但是面试官们给了我很多建议和指导,也让我对自己的能力有了更准确的评估。