twitter面经

twitter

店面
1. 找前一百个质数. 一个一个check until找到100个, check的时候只需要from 2 to sqrt(n). 然后他说了另外一种方法: 用一个很大的array,每次cross out掉最后一个质数的倍数最后剩下的就是
2. 问median和mean的区别。我说了怎么算但是没有给出use case。。。他说工资啊,ceo的那么高,我们就用median不用mean
3. knapsack问题。 脑子抽了写出一堆bug。 就是一个简单的二维dp嘛。。。
4. 问最proud of的project是啥

最后以为挂了,就问了问如果有下次店面是啥时候,结果他居然说recommend 我直接onsite。。。
烙印+通宵脑子糊+bug not free 各种不利条件加起来居然是这个结果,奶痛。。。。

on site
1. 店面我的印度大爷, 问了一下简历, BF的结构. 然后sql, 然后统计
2. 美国小哥, 一组tweeter上的A与B之间对话, 设计metrics来体现回复快慢. 我设计了mean和median, code比较奥好写
3. 印度小哥,居然是吃饭的时候面的. sql, 简历, LC single number.
4. 隔壁streaming组的老大. 简历., merge intervals. 找good string个数: 给一个字母的dictionary 比如{a,b,c} ,给几个string比如{ab,bc},不包含这几个string的就是good string. 求长度为n的good string 有多少。
我给出的是A(n)=A(n-1)+B(n-1)+C(n-1); B(n)=B(n-1)+C(n-1); C(n)=A(n-1)+C(n-1);
A(n)代表以a结尾的长度为n的good string数量。
这个肯定不是标准答案,他想了好久,然后我们用长度为3的验证了一下,是对的。然后他加了一个条件acba,我表示把A(n)=A(n-1)+B(n-1)+C(n-1)-A(n-3), 讨论了好久他还是觉得不对。
5.美国小哥。设计job scheduler的API. 设计schedule函数,stop函数,run,还有runnable的数据结构。主要考考思维严谨和经验,还有multi threading之类
6。 hiring manager,就一直和我扯犊子

总结下来就是sql不太熟练,面到后面有点体力不支,system design还需要加强,算法还ok


网上其他人的面经
1.
一袋豆子, 有黑白色, 每次拿一个, 拿到黑色立刻就吃, 拿到 白色 则放回然后再挑一个, 这次不管什么颜色都吃, 问最后一个吃的是 黑色的概率
implement string tokenizer
rotate array by k. rotate in distributed system.

design a tweet search system – how to scale with incoming tweets
archive的tweets用lucene, 实时的叫early bird。
WAL写入disk,用WAL内容更新内存索引。最好是cluster index,但是会太大,所以要压缩。
inverted index

2.
找出一个tree中所有pair of nodes with path of d。
其中tree中的node 给的是个array of nodes, node 只知道自己的父亲。 要先写程序
算出tree。
用最近公共祖先?

(1)全是design题。一个用户在brower里打他家会发生什么, 大概是想考应该如何
organize它的用户, 给了陷阱问是不是用database, 我一下子跳了进去, 说是。后
来想应该用big table 和DHT。

dynamo是在cap定理基础上取availability和partition tolerance而牺牲consistence
的distributed key value storage,这个跟问题关系不大,当然他本身是有负载均衡
的技术需要的。
web的负载均衡,我理解这个问题的考点,是个挺复杂的系统问题,可以:
dns均衡 不同地域的ip将域名解析到不同的data center ip
cdn均衡 依靠cdn分发静态网页资源
http均衡 http request在data center内部分发到不同的worker node
http proxy,比如nginx做个异步的proxy专门解析http request,分发到后台的apache
server处理,跟上面的区别是这个是在应用层
明白两个概念:vertical scalability 应用性能随着单个机器性能提高得以提高,
horizontal scalability,应用性能随着机器数目的增加得以提高。后者目前更受关注
,原因显而易见。从这个角度理解这个问题我觉得更容易把握本质,说到底负载均衡就
是希望能够非常简易地通过添加更多的机器改善应用性能。

(2)给你一堆tweet, 如何就算出每个word的count. 其中我当时认为word 可以用
whitespace分开。 但是应该有其他的分界符, 比如#什么的,没想到这里。

(3)其他就是你如何improve twitter, 如何计算trend(词的频率是不够的)
, 等等。
solution: https://greatpowerlaw.wordpress.com/2013/04/14/trend-detection-in-twitter/
至少要答出来 用当前词频和历史词频比较

3.
问题都不难,这里就不透露太多细节了。

  1. 质数问题变种。

  2. 各种sampling的问题,大数据的,分布式的。

  3. LeetCode原题:Clone a linked list with random pointers。

  4. 设计如何分布式存储tweets,包括保持排序性质什么的。
    redis 当做索引
    做个大的索引表(如你所说)
    分别排序,再汇总排序,缺点:慢,复杂

  5. 字符串匹配问题,都还没涉及到什么fancy的方法例如KMP什么的时间就完了。

  6. 设计一个Timer class。

    估计由于我的项目经历,很多问题最后都延伸到了分布式实现和用MapReduce实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值