Uber 高频面试题汇总

1,026 阅读10分钟

专栏 | 九章算法

网址 | http://www.jiuzhang.com

本文汇总了近年来Uber 技术类职位的高频面试题,含括个人背景问题、文化问题、经验问题、技术问题、编程问题等。同时给予了准备和回答的tips。

个人背景问题

1.为什么想来我们公司?

tips:你的回答要从侧面体现出你对这家公司做了功课,很重视这次面试。但是同时你的情绪也不要太过,不要奉承或者过分热情。

你可以找出几点说,比如:公司文化与你的自身价值观的契合,并表达出你想来这家公司工作的真诚希望。

2.你用过我们公司会使用的某个编程语言/技术吗?

tips:诚实回答。如果你对提到的东西没有太多的接触,如实告知。因为如果你谎称自己使用过这一编程语言/技术,在技术面中你就可能会遇见相关问题,到时候如果你不会就糟糕了;在这种情况下你可以说一下自己熟悉的语言并说明自己的学习能力不错。

记住:公司很看重侯选人的学习态度和学习能力。

3.你在过去的工作中曾做过什么项目?

tips:回答要简洁。千万不要漫谈,因为这样很容易让面试官觉得你的叙述冗长无聊,所以你需要简洁地描述你目前工作中所涉及到的较为成功的项目。

如果你之前没有工作经历,还是要如实回答,这时你就可以讲一些你在学校或实习做过的成功的项目。

4.你有管理经验吗?

tips:不要觉得这个问题问的仅限于技术工作的管理。如果你曾带过一个团队,或是你曾在一次志愿活动中担当过领导者的角色,就算这个活动是在学校里参加的,也要讲出来。

而且,你还要说明:即使担当着领导者的角色,你还是参与了成员做的一切活动。因为团队协作不管是对工作效率还是团队凝聚力都是非常重要的。

5.你的团队有多大,你做过什么项目?

tips:这个问题是对以上问题的延伸,回答时你要具体说明你参加过的团队和项目的内容。

6.为什么选择现任雇主?

tips:回答要坦诚,但不要只说钱和福利这两个因素,虽然面试官可能也知道这些是重要因素。

说一些公司文化对你的吸引、新工作可能给你带来的满足感以及顺利完成新工作中的工作任务后可能会获得的成就感等。

image

文化适应问题

1.加入我们的团队,哪些点会让你激动?

tips:告诉面试官公司的哪点最吸引你,以此展现出你对公司的了解以及你想进入公司的诚意。

但是需要注意,情绪不要太过,以免让人觉得不真实。

2.工作之余,你有什么兴趣爱好?

tips:公司希望自己的员工是能做到平衡好生活和工作的人。所以在回答这个问题时,说出几件你在生活中很享受的事,但是千万不要说:除了上班时间我呆在办公室写代码外,回家之后,我就玩游戏。

你可以给出自己几种不同的爱好,比如阅读、工艺或DIY;或者是一些社会活动、团队活动等,比如,假如你是曲棍球俱乐部或者当地徒步旅行的成员,你就可以向面试官展现你兴趣的多样性。因为这从侧面向面试官展现了你的性格、你的创造力、你独立思考的能力以及你的团队合作能力和解决问题的能力

而且面试官会从这道题的答案评测你是否适合他们的团队,所以,千万不要说“我没有爱好”。

3.你喜欢你现在的工作和工作环境的哪些方面?

tips:千万不要回答不喜欢现在这份工作。而是找到现任公司做得好的几点,比如:公司注重促进员工生活和工作的平衡、公司有像家一样的氛围等。再比如,你在公司可以做出一些东西来解决实际问题或是满足客户需求,这让你很有成就感。

如果你没有工作经验,可以谈论你在学习过程中或是实习过程中喜欢的点

4.描述你理想的公司文化

tips:这个问题一定要提前做功课!如果你应聘的这家公司的氛围是轻松有趣的,然后你回答,喜欢安静且有严格的纪律的公司,那就很尴尬了。

所以一定要提前做好功课,确保你说的理想氛围契合这家公司的文化

5.你觉的工作环境的哪个部分对你有很大的影响?

tips:这个问题要根据你应聘的公司的企业文化回答。比如,你可以说轻松的环境、合作的工作氛围等对你影响很大并说明原因。

6.你的工作伙伴认为你在团队中充当什么角色?

tips:坦诚回答,不要过度自谦。这个问题可以展现你的社交意识,也可以看出你是否有足够的洞察力认识到别人对你的看法。

同时这个问题也能展示出你的自我认识,你是否了解自己的优缺点,以及你能给团队带来什么。

7.说一个你基于客户数据做的决定。

tips:回答这个问题一定要清晰、详细。数据现在在工作中扮演着越来越重要的角色,通过这个问题,面试官想了解你是否有一定的分析能力。所以你需要具有分析客户展现给你的数据、得出结论、然后基于分析做出决定的能力。

你可以按以下步骤描述:收到数据、你基于此数据做出了什么决定、这个决定是否得到正面的反馈。

image

经验类问题

1.对于日常工作(任务)的记录,你喜欢用什么工具?

tips:诚实回答,不需要说出一个多么高大上的东西。如果你没有使用Trello boards、Asana或其他一些管理app,你说用纸和笔记录也是完全没问题的。

因为这道题主要是看你是否擅于管理追踪自己的task,以免工作中出错。但是一定不要说:“我不用工具,我用脑子记的。”

2.当检查另一个团队的代码时最重要的是什么?

tips:不要局限自己的想法。这道题是用来测试你的知识面、你是否能清晰的表达自己的想法以及你的视野是否狭隘的。

所以不要只说一点,因为这个问题的答案绝不止一点,你可以从下面几个方面简单回答:

3.描述你从始至终的编程过程

tips:清晰的表达这个过程。面试前提前过一遍这个过程,回想一下,一开始,当你做一个任务时,做的第一件事是什么?拿一支笔和纸,把它划分成多个小task?在日历上列出ddl?

在这道题中,面试官想看到,你是否能对自己的编程过程有一个清晰的思路以及你的组织语言能力。如果说不出来,可能会让面试官认为你在工作工程中是无序的、没有计划的。

4.你写代码的时候,一般会考虑哪些事情来尽量避免错误?

tips:展现一个合理有逻辑的回答。回答这个问题的重点是,不要让面试官觉得你在写代码之前是不经过思考就随意写的。

5.对于复杂的算法,你一般用哪种语言?

tips:如实回答,但是最好给出至少两种语言。这样能展现出你不是仅仅局限在一个领域。

回答示例:xxx是我的第一选择,但是xxx也是一种很好的选择,并说明原因。

6.你是如何设计可拓展应用的?

tips:这道题是用来测试你的知识和逻辑思路的。回答时要说出你会考虑哪些因素来确保避免性能问题。

注意:回答前要清楚面试官是在谈论扩大规模、缩放规模、还是两者兼有?(原文:Is the interviewer talking about scaling up, scaling out, or both?)

7.在你的职业生涯中最让你骄傲的项目是什么?为什么?

tips:这是一个让你展现自己的机会。这个项目不一定要非常高大上,可以是简单的用一种新的编程语言写了个app或者在团队项目中解决了一个困扰很多用户的问题。

记住:不要过于自夸,表达出你对自己获得的成就感到自信和骄傲即可。在回答你骄傲的原因时,说出最后得到的正面成果,比如:因为它满足了一个客户的真实需求,让我感到很有成就感。

8.描述一个失败的项目经历。发生了什么?

tips:这个问题考查自我认知和自我表达能力。从这个问题,面试官希望看到你敢于从错误中吸取教训

所以回答这个问题时要告诉面试官为什么这个项目失败了,以及你是怎么花时间去剖析这个项目的,指出哪里出了错。然后表达出在这之后,每次做项目你都会特别注意那个问题。

image

概念性技术问题

技术问题是用来考查面试者在压力下思考和动手的能力的,所以即使你觉得自己对概念问题很自信,还是要复习。

你在面试前可以做做网上的quiz,找个搭档一起复习,因为面试时会有时间压力和氛围压力,而对于概念问题,越熟悉出错率才会越低

以下是Uber面试常见的技术问题:

1.互斥体和信号量之间的区别是什么?

2.什么是多线程编程?

3.局部变量和全局变量的区别是什么?

4.你有一个单线程C标准应用程序不断的崩,但从来不是在同一个地方,可能的原因是什么?

5.队列和堆栈之间的区别是什么?

6.回归测试是什么?

编程问题

这部分是面试中最难的,因为编程不仅是在高压环境下进行,而且是以一种不熟悉的方式,比如白板手写进行的,而且会有时间限制

所以要想通过编程问题面试,一定要提前多刷几遍lintcode上的算法题。在面试时,遇到的编程问题会是各种各样的,以下是一些可能遇到的典型题:

1.链表(删除重复,反转,确定它是否环形的)

2.Big-O复杂度分析:它是什么?如何使用它?

3.树:基本构造、遍历和操作算法。

要知道如何实现平衡二叉树。

4.栈(实现一个有两个堆栈的队列)

5.数组和字符串(反向字符串,置换)

欢迎关注我的微信公众号:九章算法(ninechapter)。
精英程序员交流社区,定期发布面试题、面试技巧、求职信息等
2d09fefd332a1a68bb1c.jpeg