为了账号安全,请及时绑定邮箱和手机立即绑定

我的 Uber 面试经历 [L5A offer — 高级软件工程师]

大家好,

自从我回到Uber以来,很多人都来询问在Uber的面试经历以及如何准备。我已经尝试在这篇文章中整理了面试的经验。希望这能帮助到你。

准备

对于Uber的软件工程师职位,你应该准备好以下两个领域,我已经提到我为准备L5A(高级软件工程师)职位所使用的一些资源。

数据结构与算法

  • Leetcode Blind 75 Questions :首先在广泛使用和被频繁提问的数据结构上巩固你的基础知识,然后开始练习不同的问题。看看你在哪些地方卡住了,哪些领域在规定的时间窗口内难以解决。
  • Grind75 由 TechInterviewHandbook 提供

系统设计与架构

面试

我的面试流程总共分为5轮,这是针对L5A职位的,但L4职位的面试流程也类似。你也应该和你的招聘协调员确认整个面试流程。

第一轮:编码BPS (1小时)

这是淘汰轮,他们给我出了一道编程题,难度大约是LeetCode的中等水平。这道题可以考察我对数据结构和算法的核心知识,同时也考察了我编写良好类的基本知识,包括模块化结构、变量和类的良好命名约定等。

如果你通过这一轮,接下来的4轮将会为你安排,无论你在后续轮次中的表现如何。

第二轮:算法和数据结构 (1小时)

这是一个核心的软件工程轮次,主要关注算法和数据结构。前5分钟将用于介绍评委和候选人,最后5分钟将留作提问时间。你将有50分钟的时间来讨论与编码问题相关的内容。

我总共被问了3个问题。第一个问题是基于动态规划的,难度为LeetCode中等难度,我能够在接下来的15分钟内提供一个可行的解决方案,然后又问了一个后续问题,这个问题也在接下来的15分钟内解决了。到这个时候,我还剩下15分钟,于是评委又问了一个不需要实现工作解决方案的问题。我口头解释了我的方法,然后我们进入了我提问关于团队的部分。

第三轮:深度专精 (1小时)

这是第二轮编码测试,但重点不是算法和数据结构,而是你能否写出符合生产环境的代码。在你的代码中,会考虑以下几个因素:为不同的职责创建不同的类,遵循单一职责原则(SRP),为类创建对象并使用面向对象编程调用相应的方法,变量和方法有良好的命名规范,代码有适当的缩进使其易于阅读等。

我能够实现不同的类和方法,并同时使用合适的数据结构解决了核心问题。最后的10分钟又用来回答问题。

第四轮:设计与架构(新问题)(1小时)

系统设计环节对于L5角色来说非常重要,在这一环节中会测试你作为高级软件工程师的能力。这一环节通常涉及一个全新的问题陈述,你需要首先澄清需求,估算所需资源,然后制定系统的高层次设计。接下来,你需要深入探讨低层次设计,包括API设计和数据库设计。在所有这些准备完成后,你也应该解决潜在的瓶颈和可能的故障点,并提出一些解决方案来扩展你的系统以处理高负载。

第五轮:协作与领导力,设计与架构(之前解决过的问题)(1小时15分钟)

这一轮由一名经理主持,包括行为问题和对之前设计的系统进行讨论。

在我的面试中,前45分钟我们讨论了我之前参与过的项目,我在这些项目中做出的设计决策,我从中学到了什么,哪些地方可以做得更好,以及我现在会如何处理同样的问题陈述。

接下来的30分钟,我们讨论了如何应对领导挑战,如何更好地解决冲突,如何更好地与同事协作,以及团队中应该有哪些标准做法来建立良好的文化。

这些轮面试结束后,招聘协调员向我反馈了面试结果和 offer 的详情 🎊

我于2024年4月1日加入Uber,撰写这篇面试经历时(2024年5月1日),我在Uber工作已经一个月了。

此外,这也不是我第一次在Uber工作了,我之前从2021年7月到2022年11月曾在Uber工作过。这次我加入了不同的一个团队,但新团队和老团队的每个人都非常友好,非常感谢大家 ❤️

随时可以通过 LinkedIn 与我联系。再见 👋
祝你在未来的面试经历中一切顺利 🤞

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
手记
粉丝
15
获赞与收藏
70

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

举报

0/150
提交
取消