Indeed 面经

给一个list, 如何把里面的字符分配到尽量少的子list里,并且每个子list没有重复元素。
比如
['a','b','c','a','a','b'], 可以分成['a', 'b', 'c'], ['a', 'b'], ['a']
['a', 'a', 'a', 'b', 'b', 'b'],可以分成['a', 'b'], ['a', 'b'], ['a', 'b']

先给出了O(n*2)的解法,后来发现可以先数一遍字符个数,找到出现最多的,比如a出现3次,就建3个子list,然后把每种字符round robin那样放进各个list就行了, 这样是O(n)

 

半小时电面,面试官叫Prabu,在西雅图office的印度人,是个manager。简要介绍一番,开始做题。题目比较经典,有整形数据流,求过去五分钟来的所有整数的mean。
写了个List,创建了自己的数据类来存val和timeStamp,新的后面加List,过期的在头部删除。
把删除的部分放在了mean()函数里,follow-up说这样太慢,就提出来放到一个cleaner()函数里,同时写了个Thread 没过一段时间跑一次cleaner(),
同时mean()里面也要先调用cleaner。然后被问到多线程需要注意啥,就指出一段code是critical section,要用锁保护。

小贴士:要写注释,把和面试官讨论到但是没写的follow-up,都加到注释里,as good evidence。
. from: 1point3acres.com/bbs 
public Solution {
    static final WINDOW = 5*60*1000;
    long now();
    double mean();
    void put(int value);
}

感觉Indeed的面试官很喜欢把多线程的东西作为follow-up,比如ExpiringMap,比如我这个。

 

面经总结:

http://interviewsource.blogspot.com/

 

转载于:https://www.cnblogs.com/liangmou/p/8413005.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值