由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
JobHunting版 - Linkedin 店面面经(已挂),请帮忙分析
相关主题
google面试题(已经挂了,没有包子哈)电面被羞辱了,求安慰~~~
HashMap, HashTable and Array 有啥区别这么多CS的,为啥没人讨论内核,驱动之类的呢。。。
也问一个算法题LC有序数组删重复元素的题怎么最快?
算法题:两列找共同元素有O(n)的算法吗?曾经fail掉的一个电话面试以及题目
哪里有讲k-way merge的?paging和 segmentation有什么区别?
5分钟前G的电面2-sum 用hash table实现的问题
VLSI job opening at Santa Clara请教一个C内存泄露问题
Circuit design position in Silicon Valley图的拷贝
相关话题的讨论汇总
话题: 进程话题: array话题: 三哥话题: hash话题: 内存
进入JobHunting版参与讨论
1 (共1页)
y*k
发帖数: 80
1
背景:EE毕业但是做行业软件的,工作好多年了一直用C++。没有专门学过计算机专业
课。刷题刷了好几个月了。
上星期经历了几次店面,Linkedin是我自己觉得面得最好的,以为可以拿onsite了,结
果被据了。
别的店面感觉比Linkedin差很多的都过了,所以特别surprise. 我把问题详细贴出来,
并附上我自己的解答,请大家帮忙分析一下,是哪里出了问题,还是被三哥黑了。面试
一共分三部分。因为最后的题做得比较快,三哥还跟我谈笑风生了几分钟,说你的
coding不错,你来面试的时候需要多准备点系统设计,多线程之类的,搞得我以为我都
拿到onsite在为下一步准备了。
1. 10分钟互相介绍,然后问之前做的最难的项目,我说了一下,三哥问了几个问题,
双方都比较满意(之后的回答过程中,三哥不会说你哪里回答得不大好,但是会一直追
问直到他说ok,当然也不知道这个ok是好还是嘿嘿你丫错了)
2. 基础知识。
Q: virtual memory是如何工作的?优缺点?
A:操作系统一般在内存不够时分配虚拟内存,不够的虚拟空间存硬盘上。优点是内存
不够时还能转,缺点是硬盘读写速度慢
Q:如果有两个进程P1和P2,两个进程都分别读取地址0xabc,会发生什么?
A:因为是两个进程,系统会开两个不相干的地址空间,各读各的没有干扰。
Q: 那这样的读取到底是怎么实现的?P1说我要读0xabc,怎么就知道它能读到自己想要
的内存?
A: (这个我不明确科班的答案),就说操作系统应该有一个进程对page的映射,系统
知道在哪个page里面的地址空间里找。
Q: 这样的不同进程分配不同地址空间的做法有什么优缺点?
A: 优点是不同进程之间的地址各不相干,不会干扰;另外多个进程可以在总内存不够
的时候仍然能转;缺点是进程间通信比较麻烦。
Q:process和thread的区别
A: process是不共享内存的,thread共享内存。后来网上查了一下,好像主要是这个,
当然也说thread往往是light work,但是我觉得漏掉这个应该没有关系,三哥很快说ok
了。
3. 电脑上做题
三哥先敲了道简单的问我问题,我估计这个答得不是太好。
int a;
int* b[100];
Q: 如果改变a或者b有什么问题?
A: 改变a就是赋值还好,改变b实际上是改变了指向array的指针,可能会有问题。(后
来回想起来当时有点紧张,其实改变b也没有关系,或者应该说具体点,如果没有别的
指针指向array的话,array里面的内容没有变量指向,会有leak)
Q: 如果是多个线程要改变a或者b呢?
A: 那就有问题了,会conflict(我知道data race,但是当时没有说这个词)。
Q: a是从内存哪里来的?
A: heap
Q: 那b呢?
A: b指向的array内容也是从heap来的,但是b自己可能来自进程stack吧(后来想我是
不是错了,b是指针跟int差不多也得分配内存空间)。
然后编程题,设计一个数据结构,实现add(e), remove(e), removeRand(e), 都是O(1)
复杂度。我提出了用hash+array,并且在remove的时候,把array尾巴和remove的位置
swap,同时更新hash。三哥说这主意不错你写吧。
下面是我的程序。写完后三哥说cool, sounds good,又问了几个followup,说如果数
有重复怎么办。我说那个hash的value要改成list,记录所有相同元素的位置。那你现
在怎么产生随机数呢?我还没怎么想好,三哥就说是不是要看看重复的个数之类的,然
后就跟我瞎聊了。
大家帮我看看,我是哪里不对挂掉的呢?
template
class element {
public:
element() {}

void add (T e) {
array.emplace_back(e);
hash[e] = array.end() - 1;
}

void remvoe (T e) {
if (count(hash[e]) {
auto it = hash[e];
hash.erase(e);
if (!hash.empty()) {
auto lastit = array.end() - 1;
swap(*it, *lastit);
hash[*lastit] = it;
}
array.pop_back();
}
}

void removeRand() {
if (!array.empty()) {
default_random_engine re ((random_device())());
uniform_int_distribution dis(0, array.size() - 1);
int index = dis(re);
T e = array[index];
remove(e);
}
}

private:
vector array;
unordered_map::iterator> hash;
};
s***c
发帖数: 639
2
patpat,不过这给个onsite没什么问题吧
y*k
发帖数: 80
3
如果要挑毛病的话,是哪里需要注意呢?我希望通过这个总结自己也有提高,不要下一
次也挂了。

【在 s***c 的大作中提到】
: patpat,不过这给个onsite没什么问题吧
h********d
发帖数: 109
4
赞详细,感觉回答挺好,没缘分?
f********y
发帖数: 156
5
这个应该是在stack上
Q: a是从内存哪里来的?
A: heap
f*********5
发帖数: 1237
6
Q: a是从内存哪里来的?
A: heap
Q: 那b呢?
A: b指向的array内容也是从heap来的,但是b自己可能来自进程stack吧(后来想我是
不是错了,b是指针跟int差不多也得分配内存空间
都是stack,b没有用new
t*********r
发帖数: 387
7
>Q: 那这样的读取到底是怎么实现的?P1说我要读0xabc,怎么就知道它能读到自己想
要的内存?
> A: (这个我不明确科班的答案),就说操作系统应该有一个进程对page的映射,系
统知道在哪个page里面的地址空间里找。
TLB, hard/soft page faults, different types of page tables (e.g. multilevel,
inverse)
> Q:process和thread的区别
> A: process是不共享内存的,thread共享内存。后来网上查了一下,好像主要是这个
,当然也说thread往往是light work,但是我觉得漏掉这个应该没有关系,三哥很快说
ok了。
内存这词用的不准确吧,比如 https://en.wikipedia.org/wiki/Shared_memory#
Support_on_Unix-like_systems
这年头进程就是个容器,启动个地址空间给线程用
d******v
发帖数: 801
8
赞面经详细
z**********g
发帖数: 141
9
L有严格的question bank。
感觉这些概念题以前在bank里面没见过,应该是面试官自己想出来搞人的。
feedback说你background不solid。
j*****8
发帖数: 3635
10
这烙印摆明了要黑你,move on吧

【在 y*k 的大作中提到】
: 背景:EE毕业但是做行业软件的,工作好多年了一直用C++。没有专门学过计算机专业
: 课。刷题刷了好几个月了。
: 上星期经历了几次店面,Linkedin是我自己觉得面得最好的,以为可以拿onsite了,结
: 果被据了。
: 别的店面感觉比Linkedin差很多的都过了,所以特别surprise. 我把问题详细贴出来,
: 并附上我自己的解答,请大家帮忙分析一下,是哪里出了问题,还是被三哥黑了。面试
: 一共分三部分。因为最后的题做得比较快,三哥还跟我谈笑风生了几分钟,说你的
: coding不错,你来面试的时候需要多准备点系统设计,多线程之类的,搞得我以为我都
: 拿到onsite在为下一步准备了。
: 1. 10分钟互相介绍,然后问之前做的最难的项目,我说了一下,三哥问了几个问题,

相关主题
5分钟前G的电面电面被羞辱了,求安慰~~~
VLSI job opening at Santa Clara这么多CS的,为啥没人讨论内核,驱动之类的呢。。。
Circuit design position in Silicon ValleyLC有序数组删重复元素的题怎么最快?
进入JobHunting版参与讨论
t*********r
发帖数: 387
11
LZ写C++的背景,第三题答的的确不理想

【在 j*****8 的大作中提到】
: 这烙印摆明了要黑你,move on吧
q*********n
发帖数: 37
12
虽然还没有面完但必须要跳出来说一句,你被黑了
你的面经和我的类似,和一亩三分地里另一个人的也类似:http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=157908&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26searchoption%5B3046%5D%5Bvalue%5D%3D6%26searchoption%5B3046%5D%5Btype%5D%3Dradio%26sortid%3D311
结果也一样,被拒,连第二次电面都没有
我被问了virtual memory,进程线程区别,你的第三题(我刷到过,似乎是Leetcode收
费题,说出来思路,烙印说不用coding了),以及LC原题Merge Interval,coding基本
是秒杀,被烙印质疑半天后来发现他不懂python里array[-1]是啥意思,讲清楚了就聊
天了。自我感觉妥妥onsite结果被拒
建议楼主:
1. 果断向recruiter投诉(我也投诉了)
2. move on,不要受这个影响,还有其他公司,领英以后也还有机会再面
n**s
发帖数: 2230
13
第三题答的不好。
没说这两个变量在哪里定义,所以可能是stack ,也可能是全局变量数据区。
s********d
发帖数: 93
14
频频看到国人被三哥三姐黑 很多人却还处于denial中不觉醒 慢慢弯曲国人就绝迹了

【在 q*********n 的大作中提到】
: 虽然还没有面完但必须要跳出来说一句,你被黑了
: 你的面经和我的类似,和一亩三分地里另一个人的也类似:http://www.1point3acres.com/bbs/forum.php?mod=viewthread&tid=157908&extra=page%3D1%26filter%3Dsortid%26sortid%3D311%26searchoption%5B3046%5D%5Bvalue%5D%3D6%26searchoption%5B3046%5D%5Btype%5D%3Dradio%26sortid%3D311
: 结果也一样,被拒,连第二次电面都没有
: 我被问了virtual memory,进程线程区别,你的第三题(我刷到过,似乎是Leetcode收
: 费题,说出来思路,烙印说不用coding了),以及LC原题Merge Interval,coding基本
: 是秒杀,被烙印质疑半天后来发现他不懂python里array[-1]是啥意思,讲清楚了就聊
: 天了。自我感觉妥妥onsite结果被拒
: 建议楼主:
: 1. 果断向recruiter投诉(我也投诉了)
: 2. move on,不要受这个影响,还有其他公司,领英以后也还有机会再面

k***e
发帖数: 1931
15
第三题答错太多,不应该。感觉基础不扎实,尤其是你说你做了多年的C++。
int a;
int* b[100];
Q: 如果改变a或者b有什么问题?
A: 改变a就是赋值还好,改变b实际上是改变了指向array的指针,可能会有问题。(后
来回想起来当时有点紧张,其实改变b也没有关系,或者应该说具体点,如果没有别的
指针指向array的话,array里面的内容没有变量指向,会有leak)
// b是数组名,数组名是不能被赋值的。
Q: 如果是多个线程要改变a或者b呢?
A: 那就有问题了,会conflict(我知道data race,但是当时没有说这个词)。
Q: a是从内存哪里来的?
A: heap
// a应该是stack上
Q: 那b呢?
A: b指向的array内容也是从heap来的,但是b自己可能来自进程stack吧(后来想我是
不是错了,b是指针跟int差不多也得分配内存空间)。
// b应该也是stack上
k***e
发帖数: 1931
16
>Q: 那这样的读取到底是怎么实现的?P1说我要读0xabc,怎么就知道它能读到自己想
要的内存?
> A: (这个我不明确科班的答案),就说操作系统应该有一个进程对page的映射,系
统知道在哪个page里面的地址空间里找。
TLB, hard/soft page faults, different types of page tables (e.g. multilevel,
inverse)
//补充一点,CPU/SoC需要有MMU或者MPU支持,做address translation。如果OS支持的
话是可以不需要MMU/MPU的,如uCLinux。
> Q:process和thread的区别
> A: process是不共享内存的,thread共享内存。后来网上查了一下,好像主要是这个
,当然也说thread往往是light work,但是我觉得漏掉这个应该没有关系,三哥很快说
ok了。
内存这词用的不准确吧,比如 https://en.wikipedia.org/wiki/Shared_memory#
Support_on_Unix-like_systems
这年头进程就是个容器,启动个地址空间给线程用
// 补充一点,除了内存,还包括其他资源,如Windows下的临界区,是该process中所
有的thread共享的,非kernel object,使用时无须进行模式切换,较快。扯远了,教
科书的定义应该是Process是操作系统中资源分配的单位,资源包括虚拟地址空间和其
他各种object;线程是操作系统执行调度的单位,当然线程还分用户态线程(如
Windows中的Fiber)和内核态线程。

multilevel,

【在 t*********r 的大作中提到】
: >Q: 那这样的读取到底是怎么实现的?P1说我要读0xabc,怎么就知道它能读到自己想
: 要的内存?
: > A: (这个我不明确科班的答案),就说操作系统应该有一个进程对page的映射,系
: 统知道在哪个page里面的地址空间里找。
: TLB, hard/soft page faults, different types of page tables (e.g. multilevel,
: inverse)
: > Q:process和thread的区别
: > A: process是不共享内存的,thread共享内存。后来网上查了一下,好像主要是这个
: ,当然也说thread往往是light work,但是我觉得漏掉这个应该没有关系,三哥很快说
: ok了。

k***e
发帖数: 1931
17
答上stack我觉得就算对了,至于是不是在bss可以作为follow up。
如果因为没有同时答出stack或者bss,就关掉楼主,那就有点黑人了。

【在 n**s 的大作中提到】
: 第三题答的不好。
: 没说这两个变量在哪里定义,所以可能是stack ,也可能是全局变量数据区。

1 (共1页)
进入JobHunting版参与讨论
相关主题
图的拷贝哪里有讲k-way merge的?
问一个面试题5分钟前G的电面
一道Bloomberg 面试题VLSI job opening at Santa Clara
O(N) sort integer arrayCircuit design position in Silicon Valley
google面试题(已经挂了,没有包子哈)电面被羞辱了,求安慰~~~
HashMap, HashTable and Array 有啥区别这么多CS的,为啥没人讨论内核,驱动之类的呢。。。
也问一个算法题LC有序数组删重复元素的题怎么最快?
算法题:两列找共同元素有O(n)的算法吗?曾经fail掉的一个电话面试以及题目
相关话题的讨论汇总
话题: 进程话题: array话题: 三哥话题: hash话题: 内存