芒果那家的电面# JobHunting - 待字闺中
l*b
1 楼
斗胆上来发个MJ,希望在那里的兄弟姐妹高抬贵手。
一老米面试的。貌似一直以来还没真的被3哥哥3姐姐面试过。
1)如果多个thread要share一个Map的话,怎么实现。这个可以直接用Java的
synchronizedMap,在Collections里面有一个,在concurrent package里面也有一个,
他问是否用过concurrent里面那个,我只知道Collections里面那个,所以说不知道。
然后还谈了一下2个的区别,也后续了一个问如果read很多,write很少的话,会怎么实
现。
2)问的是在multithread里面怎么实现int的increment。我直接说了用AtomicInteger
。或者可以用lock(read,write都要用)来实现这个atomic的操作。
3)Coding,给一个interface:
public interface Stream {
int getNext();
}
Stream都是infinite的。getNext()永远return一个比上次还要大的int。让你实现一个
class:
public class MergeStream implements Stream {
}
要求这个class在constructor里面accept一个array的Stream,然后同时实现getNext()
method,也要永远返回比上一次大的int。最后问了如果有N个Stream,然后getNext被
用了K次的话,复杂度是个什么情况。
整体不难,主要是关注的multi threading的东西。所以要多看看。还好最近学Akka,
看了一些东西,能吹一下牛。
一老米面试的。貌似一直以来还没真的被3哥哥3姐姐面试过。
1)如果多个thread要share一个Map的话,怎么实现。这个可以直接用Java的
synchronizedMap,在Collections里面有一个,在concurrent package里面也有一个,
他问是否用过concurrent里面那个,我只知道Collections里面那个,所以说不知道。
然后还谈了一下2个的区别,也后续了一个问如果read很多,write很少的话,会怎么实
现。
2)问的是在multithread里面怎么实现int的increment。我直接说了用AtomicInteger
。或者可以用lock(read,write都要用)来实现这个atomic的操作。
3)Coding,给一个interface:
public interface Stream {
int getNext();
}
Stream都是infinite的。getNext()永远return一个比上次还要大的int。让你实现一个
class:
public class MergeStream implements Stream {
}
要求这个class在constructor里面accept一个array的Stream,然后同时实现getNext()
method,也要永远返回比上一次大的int。最后问了如果有N个Stream,然后getNext被
用了K次的话,复杂度是个什么情况。
整体不难,主要是关注的multi threading的东西。所以要多看看。还好最近学Akka,
看了一些东西,能吹一下牛。