Twitter电面面经

先过了个一个online test,然后2轮电面。Online Test挺简单的两个题,这里就不提了。 等待onsite。。。


电面1:

一个国人大哥面的,LeetCode上sudoku的两个题和在一起,API稍微有点变化。国人很nice,就是时间太紧了,迟到5分钟,聊天10多分钟,所以coding时间不到半个小时,DFS的时候没有时间写带pruning的更优解法了,只是简单说了说。

 

电面2:

还是一个国人大哥,LeetCode上的Insert Interval,API稍微有点变化,给的是一个链表节点。

由于还有时间,还考了一个count tweets的设计题。需要实现如下API:

class CountingSvc {
   void tweet(long timestamp, int tweetLength);
   double avgLength(long begin, long end, long threshold);
};

另外给了一个hint,TreeMap<Long, Object>,让自己customize一下object。

可惜我一看是range query就往线段树上想了,于是给出了如下结构,并解释了原理。

class Node {
   long totalLen;
   long count;
   long begin;
   long end;
   Node left;
   Node right;
}

最后追问了下如何去做模糊处理。我还是在线段树上想,就加了一个threshold。

double avgLength(long begin, long end, long threshold);

如果线段树上节点和所给的begin,end组合成的节点很相似,就不需要继续往下进行查询处理了。

随便写了一个计算相似度的公式:abs(begin1 - begin2) + abs(mid1 - end2) <= threshold,还在琢磨怎么弄更好,他就说很满意了。

虽然这题给我的hint是个TreeMap,但对这种封装好的红黑树无感,毕竟insert操作不能灵活修改算法。其实如果给个自定义的BST,就在节点上加两个2个prefix sum的域就可以了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值