📜  谷歌面试经历 |电话 (SDE)(1)

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

谷歌面试经历 |电话 (SDE)

近期我参加了谷歌的电话面试,以下是我的面试经历与心得。

面试环节

面试分为两轮,每轮时长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[:]

面试心得
  • **多思考不同的解决方案。**在面试中,我们不要固守某种解决方案,而应该尽可能地思考不同的解决方法。这样可以帮助我们更好地理解问题本身,也可以展现出我们的灵活性和思维敏捷度。
  • **注重代码风格。**写出正确的代码不是面试的全部,我们还需要注意代码风格,例如变量命名、代码缩进、注释等。这些细节虽然看似微不足道,但在评价面试者时却扮演着很重要的角色。
  • **多与面试官交流。**在面试过程中,我们可以与面试官交流自己的想法和思路,这不仅可以帮助我们更好地理解问题,还可以让面试官更全面地评价我们的能力和思维方式。

总的来说,参加谷歌的电话面试是一次非常有价值的经历,虽然时限紧迫,但是面试官们给了我很多建议和指导,也让我对自己的能力有了更准确的评估。