Quora campus + Onsite 面经 + 经验分享

先讲一下最重要的一个经验:
这间公司 准备真的一定会有用‘

Onsite 体验很好 全程有人陪你聊天 都非常nice
食堂也没有很多人说的那么好吃啦

下面说一下具体哪些题
尤其practical这一轮 我觉得这个经验会很有帮助
校园面试 1小时:

就考了
meeting room ii
和 serialize deserialize binary tree
如果不知道这两个是什么请上谷歌上搜一下就出来了

Onsite 4轮+吃饭:
第一轮 algo
亚裔小哥哥 + 亚裔小姐姐(shadow)
考了
longest prefix和meeting room ii
follow up 都只是分析run time

第二轮
面试官是个有口音讲话慢慢的小哥哥
practical interview
我选的是python这一轮对我来说 挺难的
一个folder好几个file (Quora code base)
两个task 不过我只做了一个就没时间了
第一个是debug
error是recursion depth exceeded
当然你也不知道bug在哪一个file 哪一个function 就要一步步figure out
最后问题是类似于把recursive call改成while loop

然后吃饭
这就是纯闲聊 食堂真的没有别人说的那么好吃啦 很小

第三轮
亚裔小姐姐 engineering manager
聊天 不过问project问的很细
还要画project的架构图
然后用各种方法来看你是不是真的懂你的project,你的project是不是真的厉害
(比如 问你的mistake,问你how could have done it better)

第四轮
algo
这题我没做过
题是把
[“abcdefg”,“aa”,“abc”,“aaaaaae”]
以及 width = [4, 3, 2]
print 成
abcd aa ab
efg c
aaaa
aaae

就是给你每一个colum的宽度 让你print
follow up是给你一个总width,问你怎么print最节省总行数,就是要决定一下每个column分别width要多少

经验总结

  1. Lc上一共就18个Quora 的题 很容易撞上原题
  2. onsite时候有practical 这一轮如果提前知道套路(甚至知道题)会有很大帮助
  3. 一年只招十几个fresh grad 但是practical很容易做得不好 大家可以自己判断一下是否worth your time

关于撞到原题:

校园面试的时候
我做了6道 lc quora past 6 month 考了其中两道

onsite时候我做了那18道
第一轮时候考的2个也都是这18个里面的

我为什么fail了:
应该是practical做的真的不好
其实其他几轮都还可以 所以quora应该是要每一轮都ok才可以过

楼主能再详细说说PRACTICAL的面试吗。第一个TASK是DEBUG + 改写
第二个TASK是啥呀?

我没看第二个task就没时间了。

想请问一下楼主第四问 不太清楚里面的逻辑 为什么output是那些…

啊sorry 我讲的不清楚吗
input [“abcdefg”,“aa”,“abc”,“aaaaaae”]
以及 width = [4, 3, 2]
你想要print这个list里面的东西,
一共三个column,第一个column width是4,所以abcdefg,需要print成2行。
第二个column width是3,所以aa一行就够了,
第三个column width是2, 所以abc需要2行。
但是比如虽然aa一行够了,第二行也要空出来和其他column对齐。
output就是print
abcd|aa | ab
efg | | c
aaaa|
aaae|

为什么不能abc用col width是3的来print aa用col width是2的来print呢

因为这个list,必须要按顺序print,所以先print aa, 再print abc。

对于abc这个例子,ab 是因为前面aa被col=3的给用了, 只能用2了,那么下一行的时候,只剩下一个c, col=3还没被用,为什么不能用col=3呢?

比如你有一个list = [A,B, C,D,E,F,G]
然后你的width 是[2,3,3] ,所以我们发现width 是长度为3的一个list。那说明一共三个column
这时候根据已知,我们已经可以确定 [A,B, C,D,E,F,G],这7个string,不论长度为何,A必须在column 0, B必须在column 1,C 必须在column 2,D 必须在column 0, E 必须在column 1,F必须在column 2,G必须在column 0,总之就是,他们必须按照顺序。就是你必须按顺序print, 每个string轮到哪个column就必须是哪个column,不能挑着来

想问下楼主round4的follow up是怎么做的!谢谢谢谢!

我当时没有写。就talk思路来着。我觉得就是先for each BIG row, 找这个big row的总length L_i,在找到所有L_i里面的最大值L_k,然后你的行数肯定不可能比这个 L_k/W 少, 那你就尝试 能不能办到 L_k/W,如果不行再看能不能办到 L_k/W + 1 等等。但是这只是说了思路,没写出来。

想请问下楼主, 假如我能像这样找到各个Big row中的初始长度最大值 L_k,怎么保证这个最长的BIG ROW 最后的输出行数最小就能保证各个big row 的输出行数和最小呢?
然后follow up 的输出每一行有几列是给定的吗? 就比如 给我的width sum 只能分成3列
7 = 2+3+2 还是说可以随便分成几列?

说实话 我已经记不清原题了。
假设原题是,给你总width,w,以及number of columns。那我的做法就至少make 一点sense。不过虽然这个满足了最demanding的big row。其他big row还真的不一定,你说的有道理,所以我做法也不一定对。总之面试官当说我可以口头表达思路,听了听觉得ok,然后时间就到了。