Yelp Onsite
3 Longest Substring Without Repeating Characters
273 Integer to English Words
212 Word Search II
105 Construct Binary Tree from Preorder and Inorder Traversal
56 Merge Intervals 10 Regular Expression Matching
Concept:
2017-2-27: 雅文yelp电面
review里面有business name和rating, 找出每个business的rating median和mean. rate是从1-5
不算是写出了最佳解,因为他提醒我那个rate是integer,可以用计数的方式写,但我写出来的是sort 算每个rating出现几次,一共有多少rating,从小的往大的搜一遍找median
database: 如何improve query
query写法的优化 indexing也会影响query
distributed system: 一个single query如果return的结果很大会影响什么
占内存 要把数据放在多个server上,combine result
2016-10-26: Yelp Onsite 聊天
昨天面了Yelp onsite,然后坐red eye回家,累死宝宝了
Yelp是lz面的第一个公司,公司在SF一个看起来很高大上的楼里面。面试之前先参观了办公室15分钟,觉得Yelp工作环境轻松,感觉甚好。Onsite一共四轮,每轮大概45分钟到一个小时,感觉一天纯聊天了,正儿八经的只在白板上写了一道题merge interval。第一个是面我的是Director of engineering,聊天聊了四十分钟,主要讲why yelp, past projects, aws,最后十分钟大哥掏出电脑,给了一个写了一半的regular expression matching,让我walk through解释代码,然后把它改对,我只把思路讲了一下,时间就到了。
第二个是个印度manager,聊projects,让写merge interval,问了dns, tcp, 数据库等基本知识。
第三个是欧洲小哥,特别nice,又聊了四十分钟,然后大概让我描述了下rate limitor怎么写。
最后一个中国大哥萌萌哒,跟我聊了半个小时的天,然后让我design yelp's most recent reviews of your friends的API,然后一些简单的runtime问题,最后大哥还非常贴心地介绍了一下Yelp整个的构架。
Yelp是lz面的第一家公司,感觉onsite跟想象中做一天题不太一样,主要是聊天(说的我口干舌燥=.=,一下午喝了他们5瓶水),不知道其他公司是不是这样。
求offer。求大家给点米 :D
楼主能否介绍下tcp,dns,数据库问的基本问题是啥啊? 明天就要面试了但是不知道这些会问道什么程度,还要去背对应英文
问的是从在浏览器里面敲yelp.com到返回网页中间有哪些环节,然后每蹦一个名词就让你大概讲讲这个是什么,其实不难,就是基础cs知识。 在浏览器地址栏输入一个URL后回车,背后会进行哪些技术步骤?
lz是内推还是在哪里投的?另外rate limitor怎么写?谢谢
是学校career fair投的,rate limitor LC上面有一道题可以参考,另外可以参考这个方法,https://en.wikipedia.org/wiki/Token_bucket
2016-9-20: 四轮YELP onsite累得要死
正好summer intern结束顺便来yelp面了个onsite,还能报销回SD的机票.
第一轮白人大叔还是小哥来着。先让我讲讲我实习的project,然后是coding题目是 leetcode 03
第二轮华裔姐姐,UCSD校友,先问能对yelp进行的改进,然后聊怎么实现这个功能。算法题目是 leetcode 273。最后问遇到的最有意思的bug
第三轮白人大叔,先问学校project,DB课上做的XQuery processor。然后算法题是一个html generater
第四轮白人小哥直接做题,leetcode 212
还有一个:
我的面经其实挺没有参考价值的。。我只有一轮是真正的真刀真枪的coding题,是105,其余三轮都是聊project聊了半天,顺带写了个easy难度都不到的小coding。。。害我准备了半天。
比如check palindrome 还有写一个矩阵乘法这种不需要技巧的
想问一下那个construct binary tree有木有要求非递归的解法呀?
应该有吧 跟backtracking的idea差不多
2016-9-11: Yelp Aug interview
职位:Engineering Manager Phone Interview: LC Group Anagram On-Site Coding:
- Address Similarity: 基本是dictionary, 加Edit distance
- Python Iterator: Input: nested iterator collection, ex, [[2, 4], 3, 4, [2]] Implement a function return iterator, 基本就是flatten the collection. 还有一大堆management 的 behavior question
2016-7-14: yelp onsite interview in July
上周的 yelp on site 第一轮,问项目 a list of movies, 地里出现过几次 第二轮,address similarity 第三轮,问项目 word ladder II 第四轮,design Instagram 问项目
2016-4-19: Yelp onsite 面经,跪了一道题
上周五下午1点半面的yelp。是downtown里的一栋楼,8楼是吃饭休闲的地方,9楼是HR的地方,13楼是engineer的工作区域,yelp的工作环境是一排大桌子,没有隔间,员工还是蛮多的,很多白人,也有些华人。HR说近两年主要招的都是 new grads. . more info on 1point3acres.com
第一轮面,上来就问 why yelp,然后问简历的project。完了之后做题目,leetcode 121 best time to buy and sell stock 原题。我一上来居然想到了trapping water那题。。。用了两个数组来存某个位置其左边最小值,和其右边最大值。在面试官引导优化了空间,最后其实不用额外空间就可以的。。。
第二轮面,还是问 why yelp,然后问简历的project。然后是一道 smallest k elements in an array的题,用个max heap搞定。我感觉挺满意。结果面试官又来一题。简易版的 lc 290 word pattern, 比如 foo 对应 app 就是对的,要是 foo 对应 apg 那就是错啦。很简单吧。结果我上来只用了一个HashMap,写完了后,他让我写test case,我自己写了下,发现不对,赶紧又加了一个HashMap.. 险过。。. 鐗涗汉浜戦泦,涓€浜╀笁鍒嗗湴
第三轮面,还是问 why yelp,然后问简历的project。需要提一下,每轮面试官结束后,他会和下个面试官交流个两三分钟,然后下个面试官再进来。我前两轮介绍的project都是我最熟的那个,结果第三个面试官就直接问我,你咋总是讲那一个project。。。 好吧,换个project开始侃了。侃完了后,出一道题,懵了。
你们帮我看一看。题目是:给一串movie,假定每个movie都是一个小时,并且都在整点播放;给你一个List的movies,让你安排播放时间,如果没有答案throw一个exception。. visit 1point3acres.com for more.
比如 电影A: 14, 15, 16, 17 电影B: 14, 15, 16 电影C: 14, 15 电影D: 14, 15, 17
返回一个解就行,比如 A 14, B 16, C 15, D 17。 如果你要 A 14, B 15, 后面 C就没法看了。
这可是yelp电面出现了两次的面经题。当时我看到面经时,除了backtracking没别的思路。当时心里还想,谁电面碰到这题,也是真够背的。我不会做就不会做吧,我应该不会这么背。。结果还真遇到了23333。。。 当时临场发挥,就是硬生生的 dfs 来把所有情况撸一遍的。那code写的叫一复杂,然后时间到了还没写完。。 我跟面试官讲了后面的思路,然后他说,嗯, it works。然后结束了。
求地里的大神能给这题一个靠谱的解法。我真的很好奇。
第四轮,还是问 why yelp,然后问还有什么feature可以加到yelp里。那好多feature啊,你yelp不能买票吧,你yelp不能叫外卖吧,你yelp不能直接付款吧,你yelp不能团购吧,你yelp没有饭店哭胖吧。。。
然后上题,设计一个Rate limitor。就是一小时内访问第六次时,就返回false。这也没啥算法啊,我没太明白,就是HashMap,存访问的IP和ArrayList<TimeStamp>
,然后同一个IP一小时内访问第六次,那就返回 false呗。面试官说就是这样的,然后我用java把这个函数写出来。然后讨论了些他做的工作啊什么的,结束了。
发现了没,全是地里面yelp出现过的原题。要好好看面经啊,也要多来发面经啊,大家要团结。算法题都是讲完了思路,然后写白板code的,写完后带着对方walk through一下。讲思路的时候可以乱一点,先来个brute force也行。但开始写的时候就不能乱来了,要尽量别出错。哎,我平时题目刷的不不够熟,表现的一般吧。还跪了第三轮。。
面我的大多是做backend的,我正好最近在研究谷歌三剑客,把GFS, MapReduce和他们讲了一通,感觉还好。
面试结束后HR有和我聊了一阵,然后说负责我的HR没来,下周二她回来上班,然后如果positive的话,会问我要reference。不知道跪没跪。。哎,求人品~~~
2016-4-5: 新鲜的Yelp Onsite面经
- 给一个String,全是小写或者数字,输出他的所有大小写组合。例如输入a2c,输出就是a2c, a2C, A2c, A2C.
- Flatten 2D Vector
- Merge two sorted Arrays
- Regular Expression Matching
2016-3-30: Yelp Onsite 挂经
中午吃了饭过去了。去了之后HR先带我参观了一下Yelp,整个公司的氛围感觉蛮不错的。不过也明显发现中国人很少。参观完就进入主题了。四轮面试,每轮45分钟。
第一轮:why yelp,improvement。题是address similarity,follow up很多。
第二轮:Why yelp。java垃圾回收机制。题是给一堆飞机航线,包括出发点和终点,找到这个航线的起始点和终点。
第三轮:这轮的题不记得了。。。好像是有关category matching的一题,反正需要用到的数据结构感觉不常见。答得不好。 这题确实不太记得了,好像是给一个Restaurant,然后它有一个attribute是category,然后给一个list of category,判断Restaurant符合不符合这个list of category
有个 class :
Class bussinessInfo {
int id;
List<String> category;
}
比如
id: 102
category: Japanese, Sushi, Dinner, Restaurant;
id: 103
category: Chinese, Sichuan, Dinner, Bar;
id: 104
category: Japanese, Breakfirst;
给你一串 List<bussinessInfo>
;
找出 category 既是 Japanese 又是 Restaurant 的 那些 id.
比如这里面 只输出 102。
很简单嘛,20分钟足够了。就是一个for循环检查每个 bussinessInfo, 然后看看它 category 是否 contains(Japanese) && contains(restaurant)。
第四轮:问了如果数据库查询很慢,为什么?妥妥地不知道。。题是Top k address
造成SQL Server查询速度慢的原因与优化 Top k address就是根据address出现次数排序吧,用PriorityQueue做
面完就知道自己跪了,果然三四个工作日就告诉我跪了。不得不说Yelp hr的效率还是非常高的。
2016-1-23: Yelp onsite面经
补一下去年的onsite面经,时间稍有点久,具体细节我努力回想给大家补充上,现在我尽力把还记得的部分记录下,还望大家见谅。 一亩三分地里yelp有onsite,结果面试的时候还真没跳出那个范围。我面试的是backend,因为实习和简历偏向infrastructure,最后拿到的应该是infra的software engineer。
一共四轮面试,在中午之前先去公司吃饭。Yelp给定的酒店不错,和我一直联系的HR姐姐人也很好,我是在11点左右进入yelp的大楼去check in,然后是有另一位HR姐姐带着我参观公司(原来一直和我联系的那个HR姐姐有事抽不开身)吃午饭。然后去听了一个tech talk。感觉Yelp氛围很好,这个talk不一定是和互联网技术有关,可以是任何人(不一定是engineer)讲一些自己独到的见解。当时感觉公司文化很喜欢,不过还是心里想着面试有些心不在焉。
然后面试是1点开始。首先是一个印度的engineer,主要问了我hadoop,让我结合简历上一个PageRank的项目详细讲。然后问了我hadoop的一些细节,比如mapper之后为什么要先sort。这部分之后是代码,leetcode的LRU cache,让我主要实现插入的逻辑。我就是hashmap加linked list,然后问了一下优化,说记录链表的尾巴可以加速插入。
然后是一个华人女性,主要问了我缓存机制。然后问了给了好多课表,然后有先修课要求修完先修才能修后面的,就是一个dependency graph,然后考的就是topological sort。用一个hashmap记录每门课的indegree,码完问了一下时间复杂度。说是O(n^2),n是节点个数,这里不同的课程数。
第三个是一个manager,白人小哥。大哥感觉不是很钻技术的,上来主要跟我讲我是一个manager,主要和人打交道,然后问了问偏behavioral的像是平常做过项目里那次最challenging啊,实习里做的项目我没用过你能给我讲明白么,让你再做一次实习项目你会如何改进。说完之后问了一个很简单的anagram的题,就是找一堆单词里哪两个是anagram。sort单词以后作为key然后hash就行了。
第四个是一个英国小哥,在公司十年了,感觉是tech lead,然后前面也是客套几句介绍公司,然后问了我一个网站如果相应速度很慢如何解决。上别的网课讲了如何提高网站性能,然后我就基本照着“当在地址栏里输入网址发生了什么”里面每一个步骤将可能发生的问题和相应的解决方案,说了很多,感觉他还很满意。然后问了我一个Word count的题目,要求求出一个单词stream里面最常出现的前十个,先说一个弱弱的把stream里单词变成键值对(key是单词value是出现次数)然后sort。问更好方法,说了用min heap,变成键值对后再放进堆里,堆深度一定时间变成线性的。
然后HR姐姐进来问了我是否有offer,然后问了细节。最让我开心的是她问了我有没有人可以做reference check,因为之前看到面经里表现不错要发offer的结束后都问了reference所以觉得应该还不错。送走之后等了两周HR打电话恭喜我拿到offer。
2016-1-15: Yelp 新年帖Onsite
上个礼拜Yelp Onsite 结束,这个礼拜收到了拒信,所以发个帖给有interview的同胞。 yelp校园招聘来我们学校,过了很久才联系我。建议全程用python比较好,因为他们大部分都是python
第一轮 OA1, 比较简单,注意stdin input/output。 第二轮 HR phone scanning (就简单问些问题), 然后skype interview, 我面的是data engineer 类,面试官是一个年轻的native三哥, spam组的。问题是 edit distance的变形题。就是给 两个string (e.g. 'query', 'quray'),然后有三个打分 (类似与 edit distance 的 insert, replace, delete),但每个分数不同,然后叫你算出最小值。反正DP类问题,不难。 第三轮,onsite, 给订机票酒店,但是很抠,我分机转机还overnight,酒店设施还不错,在downtown,但非常吵,加上紧张一晚上都没睡好,也影响了面试发挥。onsite, 四轮back-to-back,非常的累。一般问你20分钟问题,25分钟coding.这次coding 题目都不算特别难,但是真的是发挥不好,虽然最后都写出来了,但整个流程都磕磕绊绊。
四道题目分别是:
1)给你1,2,3,4,5个business id, 这里面的business可能是duplicates, 如果是,把它们merge,然后每次只返回最小的那个id. e.g. 1,3,5都是重复的,如果输入3,5 都会返回1。然后他给你三个function 分别是, mark_business(id1,id2), represent(id), compare(id1,id2)。
你可以看下 QuickFind/QuickUnion algorithm。反正就用那个做就对了。 不是的,可以用union find的方法,或者更好的话DFS with strong connectivity,这也是我后来发现的。
2)two sum 变形题,返回所有pairs,可重复 (我居然在这上卡了)
#include <vector>
#include <unordered_map>
#include <iostream>
#include <string>
using namespace std;
class Solution {
public:
vector<vector<int>> twoSum(vector<int>& nums, int target) {
vector<vector<int>> res;
unordered_map<int,int> m;
for (int i = 0; i < nums.size(); ++i) {
if (m.count(target-nums[i])) res.push_back({m[target-nums[i]], i});
m[nums[i]] = i;
}
return res;
}
};
int main() {
vector<int> nums = {1,2,3,4,5,6,7};
Solution s;
vector<vector<int>> res = s.twoSum(nums, 8);
for (auto& a: res) cout << a[0] << " " << a[1] << endl;
return 0;
}
3) 设计一个方法来判断两端文字的相似度,我用的是cosin similarity. 然后有一些follow-up 问题,比如如何来设置threshold,怎么根据现有的来training。比较难。我没答好。
4) 给一组integer数据, 和 target num, 返回这组数据 +,-,x, /能不能得到 target num,每个数用一次。
请问下楼主,第四题中数组中的数可以变换次序么?另外表达式之间可以加括号么? 应该都可以的