📜  优步实习面试经验 |校外 2022(1)

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

优步实习面试经验 |校外 2022

背景

本人是一名计算机科学专业的大四在校生,拥有一定的编程基础和实习经验。在今年的校外招聘中,我有幸收到了优步的实习面试邀请。

面试流程

优步的实习面试共分为两个环节,第一轮为电话面试,第二轮为线上技术面试。

电话面试

电话面试的主要目的是了解个人背景和基本技能。在电话面试中,我被问到了很多基础的计算机网络、数据结构、算法的问题,也有一些针对我的项目经验和在校项目的问题。总体来说,语言表达和思维逻辑是非常重要的因素。

技术面试

线上技术面试主要考察的是实际编码能力。在面试之前,我收到了一份关于面试流程和面试要求的邮件,其中包括了四个主题,分别为:数据结构和算法、操作系统、计算机网络、面向对象程序设计。面试中,我需要选择其中两个主题,并使用 Java 或 Python 进行编码。

下面是我面试的两道题目,供参考:

题目一:反转链表

题目描述: 给定一个单向链表的头节点 head ,将链表反转,并返回反转后的头节点。

解题思路: 使用三个指针来反转链表,具体做法见代码。

Python 代码:

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

class Solution:
    def reverseList(self, head: ListNode) -> ListNode:
        if head is None or head.next is None:
            return head
        pre, cur, nxt = None, head, head.next
        while cur is not None:
            nxt = cur.next
            cur.next = pre
            pre = cur
            cur = nxt
        return pre

题目二:求最大子序和

题目描述: 给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

解题思路: 使用动态规划,设 dp[i] 表示以第 i 个数结尾的最大子序和。 dp[i] = max(dp[i-1]+nums[i], nums[i])。

Python 代码:

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        dp = [nums[0]]
        for i in range(1, len(nums)):
            dp.append(max(dp[i - 1] + nums[i], nums[i]))
        return max(dp)
总结

优步的实习面试主要考察了个人的计算机底层知识和编码能力。在面试前,我们需要了解公司的技术栈和所需要的技能,提前准备常见的算法题和编程题,并熟练掌握面试语言的语法和使用方法。在面试中,我们要综合运用各种技能和经验,表现出自己的优秀,也要注意开放心态和沟通技巧,与面试官保持积极的互动,展现出自己的职业素质和合作精神。