由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - LinkedIn 电面
相关主题
问一道multithreading的题问个multi threading code 题,同时请问高手mutil threading 编程有什么好书,网站和教程推荐?
爆个L家面静吧电面两题
thread-safe blockingqueue这个Java blocking queue实现是不是有问题?
一道涉及OO,算法,多线程的设计题how to code this question of LinkedIn
贡献一道湾区小公司的面试题 Medallia再问一个blockingqueue的问题
F家电面A家电面
failed bloomberg phone interview攒人品。面试经历(1)
Quantcast电面Google Front-end Software Engineer Phone Interview
相关话题的讨论汇总
话题: queue话题: int话题: mutex话题: void
进入JobHunting版参与讨论
1 (共1页)
v******l
发帖数: 60
1
两个阿三面的,比较难听懂,但他们也算耐心。感觉不难,但也不在状态,估计面得一
般。
一共3题:
1. 层序打印 binary tree
2. 实现 BlockingQueue 的 take() 和 put()
public interface BlockingQueue
{
/** Retrieve and remove the head of the queue, waiting if no elements
are present. */
T take();
/** Add the given element to the end of the queue, waiting if necessary
for space to become available. */
void put (T obj);
}
3. 实现一共 TwoSum interface
public interface TwoSum {
/**
* Stores @param input in an internal data structure.
*/
void store(int input);
/**
* Returns true if there is any pair of numbers in the internal data
structure which
* have sum @param val, and false otherwise.
* For example, if the numbers 1, -2, 3, and 6 had been stored,
* the method should return true for 4, -1, and 9, but false for 10, 5,
and 0
*/
boolean test(int val);
}
f*******w
发帖数: 1243
2
现在都觉得电面45分钟做三题也不咋地了么…
p***y
发帖数: 637
3
不事先练熟了不可能做完啊
或者准备个答案库,但照着敲也要时间啊
是不是人人在网上查答案,把bar抬高了

【在 f*******w 的大作中提到】
: 现在都觉得电面45分钟做三题也不咋地了么…
w*****5
发帖数: 75
4
mark居然三题
w**********h
发帖数: 31
5
赶紧google了一下第二题,是用wait() 和notify() 来实现吗?还有没有其他比较好的
实现方式?
l*****a
发帖数: 14598
6
经典的producer/consumer问题
用三个semaphore...

【在 w**********h 的大作中提到】
: 赶紧google了一下第二题,是用wait() 和notify() 来实现吗?还有没有其他比较好的
: 实现方式?

s*****r
发帖数: 43070
7
两个吧
这题有点偏难,因为太基础了,很少会考到

【在 l*****a 的大作中提到】
: 经典的producer/consumer问题
: 用三个semaphore...

g**e
发帖数: 6127
8
大牛,一个ReentrantLock两个condition就行啦

好的

【在 l*****a 的大作中提到】
: 经典的producer/consumer问题
: 用三个semaphore...

g**e
发帖数: 6127
9
最近被考了一个,还要求写lockfree的版本

【在 s*****r 的大作中提到】
: 两个吧
: 这题有点偏难,因为太基础了,很少会考到

l*****a
发帖数: 14598
10
不会用condition只会semaphore
中间那个换成lock/mutex都可

【在 g**e 的大作中提到】
: 大牛,一个ReentrantLock两个condition就行啦
:
: 好的

相关主题
F家电面问个multi threading code 题,同时请问高手mutil threading 编程有什么好书,网站和教程推荐?
failed bloomberg phone interview电面两题
Quantcast电面这个Java blocking queue实现是不是有问题?
进入JobHunting版参与讨论
l*****a
发帖数: 14598
11
这个还难
去查查以前你们厂考的那个什么H2O

【在 s*****r 的大作中提到】
: 两个吧
: 这题有点偏难,因为太基础了,很少会考到

M*****M
发帖数: 20
12
第三题
内部数据结构用BST,不用array?以便void store(int input)时lgN?
boolean test(int val)内部先inorder BST,然后two sum?
y**********u
发帖数: 6366
13
1个Mutex,2个semaphore, not_full和not_empty吧

【在 s*****r 的大作中提到】
: 两个吧
: 这题有点偏难,因为太基础了,很少会考到

h*******0
发帖数: 270
14
刚刚看了下这个:https://twitter.github.io/scala_school/concurrency.html
所以可不可以这样呢?
public interface BlockingQueue
{
/** Retrieve and remove the head of the queue, waiting if no elements
are present. */
T take(){
this.synchronized{
...
}

/** Add the given element to the end of the queue, waiting if necessary
for space to become available. */
void put (T obj){
this.synchronized{
...
}
}
}
v******l
发帖数: 60
15
两个阿三面的,比较难听懂,但他们也算耐心。感觉不难,但也不在状态,估计面得一
般。
一共3题:
1. 层序打印 binary tree
2. 实现 BlockingQueue 的 take() 和 put()
public interface BlockingQueue
{
/** Retrieve and remove the head of the queue, waiting if no elements
are present. */
T take();
/** Add the given element to the end of the queue, waiting if necessary
for space to become available. */
void put (T obj);
}
3. 实现一共 TwoSum interface
public interface TwoSum {
/**
* Stores @param input in an internal data structure.
*/
void store(int input);
/**
* Returns true if there is any pair of numbers in the internal data
structure which
* have sum @param val, and false otherwise.
* For example, if the numbers 1, -2, 3, and 6 had been stored,
* the method should return true for 4, -1, and 9, but false for 10, 5,
and 0
*/
boolean test(int val);
}
f*******w
发帖数: 1243
16
现在都觉得电面45分钟做三题也不咋地了么…
p***y
发帖数: 637
17
不事先练熟了不可能做完啊
或者准备个答案库,但照着敲也要时间啊
是不是人人在网上查答案,把bar抬高了

【在 f*******w 的大作中提到】
: 现在都觉得电面45分钟做三题也不咋地了么…
w*****5
发帖数: 75
18
mark居然三题
w**********h
发帖数: 31
19
赶紧google了一下第二题,是用wait() 和notify() 来实现吗?还有没有其他比较好的
实现方式?
l*****a
发帖数: 14598
20
经典的producer/consumer问题
用三个semaphore...

【在 w**********h 的大作中提到】
: 赶紧google了一下第二题,是用wait() 和notify() 来实现吗?还有没有其他比较好的
: 实现方式?

相关主题
how to code this question of LinkedIn攒人品。面试经历(1)
再问一个blockingqueue的问题Google Front-end Software Engineer Phone Interview
A家电面问一道旧题
进入JobHunting版参与讨论
s*****r
发帖数: 43070
21
两个吧
这题有点偏难,因为太基础了,很少会考到

【在 l*****a 的大作中提到】
: 经典的producer/consumer问题
: 用三个semaphore...

g**e
发帖数: 6127
22
大牛,一个ReentrantLock两个condition就行啦

好的

【在 l*****a 的大作中提到】
: 经典的producer/consumer问题
: 用三个semaphore...

g**e
发帖数: 6127
23
最近被考了一个,还要求写lockfree的版本

【在 s*****r 的大作中提到】
: 两个吧
: 这题有点偏难,因为太基础了,很少会考到

l*****a
发帖数: 14598
24
不会用condition只会semaphore
中间那个换成lock/mutex都可

【在 g**e 的大作中提到】
: 大牛,一个ReentrantLock两个condition就行啦
:
: 好的

l*****a
发帖数: 14598
25
这个还难
去查查以前你们厂考的那个什么H2O

【在 s*****r 的大作中提到】
: 两个吧
: 这题有点偏难,因为太基础了,很少会考到

M*****M
发帖数: 20
26
第三题
内部数据结构用BST,不用array?以便void store(int input)时lgN?
boolean test(int val)内部先inorder BST,然后two sum?
y**********u
发帖数: 6366
27
1个Mutex,2个semaphore, not_full和not_empty吧

【在 s*****r 的大作中提到】
: 两个吧
: 这题有点偏难,因为太基础了,很少会考到

h*******0
发帖数: 270
28
刚刚看了下这个:https://twitter.github.io/scala_school/concurrency.html
所以可不可以这样呢?
public interface BlockingQueue
{
/** Retrieve and remove the head of the queue, waiting if no elements
are present. */
T take(){
this.synchronized{
...
}

/** Add the given element to the end of the queue, waiting if necessary
for space to become available. */
void put (T obj){
this.synchronized{
...
}
}
}
f**********t
发帖数: 1001
29
class BlockingQueue {
const size_t kBufSize = 10;
// string _buf(10, '\0'); // have to use = for in-place member
initialization
string _buf = string(kBufSize, '\0');
size_t _head = 0, _tail = 0;
condition_variable _cv;
mutex _mx;
public:
/** Retrieve and remove the head of the queue, waiting if no elements
are present. */
char take() {
unique_lock lg(_mx);
_cv.wait(lg, [this](){return _head != _tail;});
char res = _buf[_head];
_head = (1 + _head) % kBufSize;
_cv.notify_one();
return res;
}
/** Add the given element to the end of the queue, waiting if necessary
for space to become available. */
char put (char obj) {
unique_lock ul(_mx);
_cv.wait(ul, [this](){return (_tail + 1) % kBufSize != _head;});
_buf[_tail] = obj;
_tail = (1 + _tail) % kBufSize;
_cv.notify_one();
return obj;
}
};
BlockingQueue bq;
void consumer() {
while (1) {
cout << "take:" << bq.take() << endl << flush;
this_thread::sleep_for (std::chrono::seconds(2));
}
}
void producer() {
while (1) {
cout << "put:" << bq.put(rand() % 26 + 'a') << endl << flush;
this_thread::sleep_for (std::chrono::seconds(1));
}
}
void BlockingQueueTest() {
thread t0(consumer);
thread t1(producer);
t0.join();
t1.join();
}
i*****h
发帖数: 1534
30
3个题要事先没做过,时间还是挺紧的
相关主题
为啥说semaphore是进程间的一种通信机制?爆个L家面静吧
昨天onsite被问到的 multithreading 题目thread-safe blockingqueue
问一道multithreading的题一道涉及OO,算法,多线程的设计题
进入JobHunting版参与讨论
c*****m
发帖数: 271
31
能不能讲第三题怎么做呢?要twosum得排好序才能O(N),关键是用什么数据结构来保证
store()是O(lgn)的呢?

【在 v******l 的大作中提到】
: 两个阿三面的,比较难听懂,但他们也算耐心。感觉不难,但也不在状态,估计面得一
: 般。
: 一共3题:
: 1. 层序打印 binary tree
: 2. 实现 BlockingQueue 的 take() 和 put()
: public interface BlockingQueue
: {
: /** Retrieve and remove the head of the queue, waiting if no elements
: are present. */
: T take();

s******d
发帖数: 9806
32
BST + double linked list. i.e., each node has prev/next/left/right.
Rebalancing the tree is a problem, any ideas?

【在 c*****m 的大作中提到】
: 能不能讲第三题怎么做呢?要twosum得排好序才能O(N),关键是用什么数据结构来保证
: store()是O(lgn)的呢?

M****w
发帖数: 11
33
Just use Hashtable with key= number, value= appear times of number will be
easier

【在 s******d 的大作中提到】
: BST + double linked list. i.e., each node has prev/next/left/right.
: Rebalancing the tree is a problem, any ideas?

e***n
发帖数: 42
34
第三题:
1. brutalforce:maintain a set to store all the pairwise sums, construction:
O(n^2), lookup O(1), space O(n^2);
2. sorted list: construction O(n*logn), lookup O(n), space O(n).
行不?
s******d
发帖数: 9806
35
hashtable is unordered, how do you come up with the twoSum then?
why you need appear times btw?

【在 M****w 的大作中提到】
: Just use Hashtable with key= number, value= appear times of number will be
: easier

e***n
发帖数: 42
36
第二题:
public class BlockingQueueImpl implements BlockingQueue{
Queue q = new LinkedList();
int cap = 10;
long timeOut = 1000;

@Override
public Object take() {

while(q.isEmpty()){
try {
this.wait(timeOut);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
Object rst = q.poll();

this.notifyAll();

return rst;
}
@Override
public void put(Object obj) {
while(q.size()==cap){
try{
this.wait(timeOut);
} catch (InterruptedException e){
e.printStackTrace();
}
}

q.offer((T) obj);
}
}
c***r
发帖数: 280
37
关于第二题blocking queue,网上找到个code觉得不错,1个mutex, 1个condition
variable.
原贴在这:
http://www.fgdsb.com/2015/01/03/provider--consumer/
template class block_queue {
condition_variable _cond;
mutex _mutex;
std::queue _data;
public:
void push(const T& value) {
unique_lock l(_mutex);
_data.push(value);
l.unlock();
_cond.notify_one();
}

T pop() {
unique_lock l(_mutex);
_cond.wait(l, [&](){ return !_data.empty(); });
auto item = _data.front();
_data.pop();
return item;
}
};
int main() {
block_queue q;
int itemNum = 10;

thread pro([&]{
for(int i = 0; i < itemNum; ++i) {
q.push(i);
printf("push:%dn",i);
}
});
thread cus([&]{
for(int i = 0; i < itemNum; ++i) {
int n = q.pop();
printf("pop:%dn",n);
}
});

cus.join();
pro.join();
return 0;
}

【在 v******l 的大作中提到】
: 两个阿三面的,比较难听懂,但他们也算耐心。感觉不难,但也不在状态,估计面得一
: 般。
: 一共3题:
: 1. 层序打印 binary tree
: 2. 实现 BlockingQueue 的 take() 和 put()
: public interface BlockingQueue
: {
: /** Retrieve and remove the head of the queue, waiting if no elements
: are present. */
: T take();

m********8
发帖数: 36
38
unordered没关系吧, 我们只需要返回找到没有。
appear times 是可能一个数字用两次。 比如 2+2=4, 如果不记录次数的话判断不出
。 但可能用一个boolean作为flag也能记录, 剩点空间?
大牛们能不能帮忙看看这样行不? 谢谢!
我用c++写的。
struct TwoSum {
/**
* Stores @param input in an internal data structure.
*/
public:
void store(int input){
map[input]++;
}

/**
* Returns true if there is any pair of numbers in the internal data
structure which
* have sum @param val, and false otherwise.
* For example, if the numbers 1, -2, 3, and 6 had been stored,
* the method should return true for 4, -1, and 9, but false for 10, 5,
and 0
*/
bool test(int val){
for(auto it=map.begin(); it != map.end(); it++){
int cur = it->first;
if(cur+cur == val){
if(map[cur] >1)
return true;
else
continue;
}
else if(map.find(val-cur) != map.end())
return true;
}
return false;
}
private:
unordered_map map;


};

【在 s******d 的大作中提到】
: hashtable is unordered, how do you come up with the twoSum then?
: why you need appear times btw?

s*******m
发帖数: 228
39
求代码。

【在 l*****a 的大作中提到】
: 经典的producer/consumer问题
: 用三个semaphore...

1 (共1页)
进入JobHunting版参与讨论
相关主题
Google Front-end Software Engineer Phone Interview贡献一道湾区小公司的面试题 Medallia
问一道旧题F家电面
为啥说semaphore是进程间的一种通信机制?failed bloomberg phone interview
昨天onsite被问到的 multithreading 题目Quantcast电面
问一道multithreading的题问个multi threading code 题,同时请问高手mutil threading 编程有什么好书,网站和教程推荐?
爆个L家面静吧电面两题
thread-safe blockingqueue这个Java blocking queue实现是不是有问题?
一道涉及OO,算法,多线程的设计题how to code this question of LinkedIn
相关话题的讨论汇总
话题: queue话题: int话题: mutex话题: void