注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
6月6号刚面完uber onsite,趁热写个面经。
大概时间线是:4月28号发简历内推,5月6号Recruiter发邮件约一面,5月16号下午四点一面(一面面经:),5月17号Recruiter发immigration assessment让做,5月24号发二面(onsite)通知, 约到6月6号,6月6号开始二面。
我自己大概leetcode刷了不到一百题,平均下来的话每题两三遍的样子。
Onsite面试前一直纠结是看近期的面经还是直接刷leetcode上的uber题库,后来面试遇到了两三个近期面经的原题,所以感觉还是看面经更靠谱些。
面试一共四轮,每轮1小时,前两轮leetcode算法题,第三轮系统设计,第四轮bq。Uber面试前会给你发面试官的名字,我都提前去查了LinkedIn,觉得安心点。
第一轮是两个面试官,一个亚裔面孔的美国女性,SDE I, 似乎是来旁听的,另一个是主要面试官台湾人,英语一般般但是很友善。
第二轮也是个台湾面试官,英语很好,看了背景是硕士才来的美国。全程感觉很舒服,会给很多提示,总之很nice。
第三轮是三哥,全程冷酷黑脸,面到一半居然还去干自己的活儿去了,感觉我要是fail的话十有八九是这个三哥的功劳。
第四轮是个美国本土白人,一开始看起来很友善,但是问问题很犀利,当然也可能是我bq准备得不行。
Round 1:
题目:# // Question 1:
# // If a matrix is symmetric with respect to the main diagonal, we call it a "Square Matrix". Given a list of strings, return true if it can form a Square Matrix; otherwise, return false.
# // Example 1:
# // Input:
# // [
# // "HEART",
# // "EMBER",
# // "ABUSE",
# // "RESIN",
# // "TREND"
# // ]
# // Output:
# // true
# // Example 2:
# // Input:
# // [
# // "BALL",
# // "AREA",
# // "READ",
# // "LADY"
# // ]
# // Output:
# // false
我的答案:
def fun(nums):
n = len(nums)
if n == 0:
return False
m = len(nums[0]) if nums[0] is not None else 0
if m == 0:
return False
for i in range(n):
for j in range(m):
if nums[i] is None or (i != 0 and len(nums[i]) != m):
return False
if nums[i][j] == nums[j][i]:
continue
else:
return False
return True
先给了question1让做,看起来应该是leetcode easy的难度,很快做出来,然后想优化两层for循环的地方,面试官听完我的思路说你只是减少了循环的次数,并没有改变时间复杂度,所以没必要再花时间去优化,然后开始question2.
Question2是基于Question1的。我连说带写带测试20min就做完了questio1,一开始我以为question1做完就没了,但是面试官又给我抛出来question2,我当时就有不太好的预感。结果看了题目心就有点凉,因为我刷题太少,没见过这个题型,所以第一眼看到题目的时候是很慌的。但是类似的矩阵处理的题刷过一些,所以就狠狠心开始看题。看了半天没有头绪,不知道怎么下手,嘴里偶尔还自言自语怕冷场,当时觉得可能要凉了,然后面试官给提示说,可以枚举所有potential matrices的可能性,然后对每个matrix做判断。我一听感觉自己真t说你有什么建议嘛?他脸色才好了一点,说让我思考这个应用场景会产生什么样的query,然后怎么存储和查询。然后就让我以MySQL为例子,说一下怎么存和怎么查。然后我就给了例子,之后又是一通模糊抽象的对白,反正我也不知道他在说什么。
最后他问我还有什么问题,我说没有听懂一开始他自我介绍时候说的他们组是干啥的,他又巴拉巴拉说了一通,我还是没听懂,就哦哦哦,I get you now……
Round 4:
这轮我觉得最难搞。面试官大概就问了这四个问题:说一个你觉得challenging的project,说一个你的同事或者队友对你的想法有不同feedback的时候(我理解主要是谈别人不认可我想法的时候我的反应),谈一次你犯了错误的经历,以及你做过的对团队内他人帮助/提升这样的贡献或者事情。
为了拿到面试,我的简历是吹了水的,工作内容说得很厉害,结果也吹了点,所以聊自己项目的时候差点圆不回来,一身冷汗。然后面试的时候面试官也很犀利,他会抓住最敏感的点一直问。
更要命的是,我觉得期待的问题答案都是要有戏剧性冲突性的,比如遇到challenge这个问题,按我的理解肯定是要前面渲染困难,后面有一个意想不到的转折然后解决了困难,最后学到了什么。大概是这样的逻辑和结构,但是我觉得自己的工作就很平凡,没有这么多冲突,老老实实说的话就感觉浇灭了他的期待和热情。现编的又容易跑题或者圆不回来,总之很难搞。建议大家面bq之后多上网看看例子,编点小故事,所有问题都能套的那种。
Conclusion:
(1) 代码写完先别急着优化,先写测试用例跑一跑,看逻辑有没有问题,之后再谈优化。
(2) 注意时区的问题。我是面试当天才发现不在一个时候,我以为13:00-17:00其实是16:00-20:00,很难受。
(3) 保存好精力,连续四个小时真的太累了。所以面试当天就不要刷题了,不然做题的时候脑力不够用就很难受了。
(4) 不知道是不是NG的原因,面试题目都不难,都是easy/medium的样子,所以感觉不用很担心这个问题。
(5) 全程多沟通,遇到问题主动问面试官,不会了也问面试官有没有什么建议,感觉能起死回生。
(6) 问interviewer为什么从上一个公司跳到当前的公司貌似对他们来说很不错,起码我的几个面试官都给我反馈说很喜欢这个问题。
最后,祝大家面试顺利,offer多多,记得给我加米哈!
补充内容 (2022-06-10 00:07 +8:00):
已收到拒信,同志们加油,当心三哥! |