avatar
service now 卧佛和面筋# JobHunting - 待字闺中
y*x
1
official offer 出来了,实在一般。可能我的级别很低吧,entry level,“associate
” SE。有牛人指点一下怎么negotiate啊,是不是太少了?78k + 6280/year bonus +
1000share/4years。不知道这种转正式的software engineer要多久呢?好了,以下面
经,反正也没签什么NDA,我一股脑全贡献出来啦:
第一次onsite screen。不知为何没有phone screen,可能因为我住的近,他们直接叫
我过去了。一个小时一个白哥。问了how to delete a node from binary search tree
。CLRS上直接有解法。白哥答案要求的很笼统,写个psuedo code就pass了。连找
successor node的具体实现都不用写出来。后来又问不用mutex怎么实现share data
between threads。我说GPU里面有一个东西叫thread synchronizer (我master学位做
了些CUDA编程),白哥没理解,说他会用个queue把thread都queue起来,然后一个一个
的run thread。我说那thread concurrently加到queue中间去时,怎么保证queue状态
的consistency。白哥想想说queue里边要有个mutex,最后承认必须要有某种形式的
mutex。我心里暗笑,不敢表现出来。anyway,白哥似乎觉得我还算机灵,给了好评。因
此有了第二次onsite。
第二次onsite,4 hours,4个三哥。第一位senior developer,上来就是reverse
linked list。我靠这么基础的题我竟然栽了,用两个指针搞了半天以为搞定了,结果
三哥说你这不对,我才发现必须要三个指针。真是大意失荆州,leetcode刷了那么久全
白刷了。改完以后三哥也没有耐心再让我查错,接着要我Find a node in a binary
tree. Not BST。这里要感谢ultrabo以前总结的tree的12种走法,幸亏我看了一下,
还记了一点。三哥果然不接受简单明了的recursive解法,我只好摆出stack+flag,三
哥又拒绝之,我死乞白赖又憋出一个stack+HashSet(用于记录node出现次数,功能和
flag一样),三哥仍不满足,我顿时放弃。Ultrabo总结的方法里面有用一个指针mark
tree node 的方法,可当时我觉得回字这么多写法不会变态到全部考一遍吧,没想到三
哥没底线啊没底线。两题过去时间无几,三哥不再出coding题,开始一轮概念题rapid
fire, process vs thread, np hard vs np complete,Semaphore vs mutex, 还有
一些不记得了。基本是我刚开始回答,三哥听到了几个关键字就打断直接下一题。总之
感觉不算太好。接下来六哥,coding题,1) Find the weight of a tree = sum of
weight of all node in the tree. Weight of node = value of node * level of
the node in the tree。靠又是tree,这家怎么这么喜欢在树上爬来爬去,猴子么?我
问recursive可不可以,三哥许可,写了recursive的出来,他又改主意,说要
iteration。我就用queue写了BFS,queue里边用一个mock node 作为不同level间的间
隔,不喜,要我想办法count。我当时没想起来java的各种collection都有size(),
就用了两个int变量switch的办法,仍不喜。耗了点时间思考,结果就没时间做第二题
了。2)Find a sub tree with min weight. 这题没做,但三哥提前给了。第三个是个
三叔director,感觉人挺好的。就出了个BFS找graph中两个node最短路径,要输出这个
路径,很基础的题,我写的也不算太熟练,但三叔没有计较太多。又问了Process vs
thread,我心里诅咒发誓回去以后把这题tatoo到手掌心。还问了不少Java相关,JVM增
么garbage collection, how to implement that, 我完全没概念,用queue定时check
?他启发我说有什么不好,我说可能做很多无用功,他说有什么别的方法,我瞎蒙一个
event trigger,他就转而详细问了event handle实现的机理。这个幸亏我还了解了一
下,就说了一堆,三叔好像还满意。还有Java exception handling,幸亏我也了解了
一下,又扯了一堆。List vs array, how java implement collection and list? 不
懂就瞎讲了一下。后来有机会show一下master做的research,我是做CUDA模拟的,我自
己把visualization的部分录制了一个video,从iphone上放给三叔看,大喜,感觉还好
。最后大boss从California 打电话过来,还叫了另一个三哥在旁围观,String to
integer conversion,String的形式很简单,也没有小数点或者e,考察了over flow怎
么办。然后就是一系列概念题,JSON vs XML, How to represent a many to many
relationship in Data Base,Java vs C++, differences,How APS.Net maintain
session status。我都回答的不算太好。所以整体感觉实在不是很好,不知道为什么有
第三轮,可能是三叔力挺。
第三次onsite,一个三哥一个白哥,1.5小时。纯coding没有什么概念题了。三哥问我
一个项目里面怎么做LRU的,我说用个linkedlist做queue,用个HashMap找linkedlist
里边的node。他就问update queue 里的node怎么搞。最后就退化成这么一个初级问题
了,把一个doubly linked list 中间某个node分离出来然后attach到linked list 头
部。我写了下,也没写完就第二题了,singly linked list 怎么检查是否palindrome
。要求时间O(n),不能有extra space。我想想觉得只能先找出linkedlist总长,然
后定位到linkedlist中间,再把中间到末尾的链结反转,然后两头向中间对称的比较,
最后再把linkedlist还原。算法狂麻烦,我就硬着头皮上,也没有时间写完。但是三哥
也没太计较了。有牛人有更简洁的办法吗?最后一个白哥,考了个标准的leetcode
3Sum。哈哈,终于有一个题一泻千里痛快的出来了。结果中间又留下小错(HashMap的
数字取出后要记得还回去),被白哥提醒,慌忙查找发现后改正。这样就总算全部面完。
总结:(仅适用ServiceNow,或许还有类似的三哥dominant的公司)
coding还是要熟练,但是遇到没写好的也没有必要太计较。年轻的developer,
engineer倾向于出偏题怪题,而且颇计较回字有几种写法。领导director 之类反而
coding不会太怪太偏。重点搞定领导级别的人物,小兵之流screw了也不会是决定性因
素。领导面前要强势,多表现,小兵面前要示弱示友好。当然能无错秒coding题应该最
好。我offer这么烂可能还是interview不算太出色。最后是一定要培养一下ppt技能,
大家平时锻炼锻炼口语说话,也不能就是刷题了。
花了三个多小时终于写完,苦逼的微软拼音啊。希望能帮助版里的各位,也算给自己一
个总结。祝人人有满意大offer!!!
avatar
s*n
2
楼主辛苦了, 感觉题目都挺麻烦的感觉, mark
avatar
c*2
3
singly linked list检查palindrome的, 可以先跑一遍找出长度.
然后把前半段放进一个stack, 然后pop stack跟后半段比较吧
avatar
u*o
4
不能用extra space啊。。。in place的话也只能想到lz的办法,等高人来答。。

【在 c*******2 的大作中提到】
: singly linked list检查palindrome的, 可以先跑一遍找出长度.
: 然后把前半段放进一个stack, 然后pop stack跟后半段比较吧

avatar
u*o
5
LZ懂好多multithreading的东东啊。。这些题一问我立马傻眼。。估计做cloud的公司
这是很重要的经验。。
我觉得~80K的话不多但也不少,毕竟是associate的位置,试试能不能再多要5000吧,
或者多点股票? 不懂。。
西雅图税少,房价低。感觉这个package和湾区的100k的生活质量差不多,当然西雅图
的吃的和天气没法和湾区比了。。
avatar
f*b
6
cong!
avatar
e*8
7
cong~
那个检查linked list是不是palindrome的,我觉得可以这么做:用slow/fast
pointer的方法,slow pointer向前移动的同时把linked list反转(反转之前包存/更
新slow pointer之后的那个结点);等fast pointer到达linked list的end的时候,
slow pointer就应该指向linked list中间的结点;然后从linked list中间向两边移动
:slow pointer向左移动,slow pointer之后的那个指针向右移动,每一步比较指向的
key是否相同。移动slow pointer的同时再反转linked list。等slow pointer移动到末
尾,linked list也就恢复了。
觉得这题面试的时候要写的bug free,感觉还挺难的。。。。
avatar
A*i
8
linked list找回文那个,两年前A家一个女烙印就他妈问我的这个
也是On和in place
烙印真特么没节操,考了这么多年的题还在考
avatar
o*0
9
看完面筋和哦佛心都凉了。没拿到一线,二线即难又低啊

【在 A*****i 的大作中提到】
: linked list找回文那个,两年前A家一个女烙印就他妈问我的这个
: 也是On和in place
: 烙印真特么没节操,考了这么多年的题还在考

avatar
l*u
10
多谢分享

associate
+
tree

【在 y**x 的大作中提到】
: official offer 出来了,实在一般。可能我的级别很低吧,entry level,“associate
: ” SE。有牛人指点一下怎么negotiate啊,是不是太少了?78k + 6280/year bonus +
: 1000share/4years。不知道这种转正式的software engineer要多久呢?好了,以下面
: 经,反正也没签什么NDA,我一股脑全贡献出来啦:
: 第一次onsite screen。不知为何没有phone screen,可能因为我住的近,他们直接叫
: 我过去了。一个小时一个白哥。问了how to delete a node from binary search tree
: 。CLRS上直接有解法。白哥答案要求的很笼统,写个psuedo code就pass了。连找
: successor node的具体实现都不用写出来。后来又问不用mutex怎么实现share data
: between threads。我说GPU里面有一个东西叫thread synchronizer (我master学位做
: 了些CUDA编程),白哥没理解,说他会用个queue把thread都queue起来,然后一个一个

avatar
o*n
11
恭喜
avatar
y*x
12
多谢各位观摩支持。再次感谢超级波的tips。我觉得现在找工作大环境还是不错的,新
人们不用担心。Leetcode OJ 我认真写了的就从底下往上70来题,本来想留着新题最后
仔细准备,结果根本没有时间了。所以我觉得我准备的并不是十分的充分,挑战不了一
线的公司属于正常,二线公司险过算是运气。版上的诸位只要工夫下到了,例如
leetcode全刷一遍,并且有时间在面试前快速复习1到2遍,应该可以比我表现更出色,
拿到更理想的OFFER!!!
avatar
r*u
13
lz作为fresh MS已经挺厉害了,会CUDA绝对是亮点。另外,lz记性真好。
avatar
m*j
14
建议版主置顶、加精。
h

official offer 出来了,实在一般。可能我的级别很低吧,entry level,“associate
” SE。有牛人指点一下怎么negotiate啊,是不是太少了?........

【在 y**x 的大作中提到】
: official offer 出来了,实在一般。可能我的级别很低吧,entry level,“associate
: ” SE。有牛人指点一下怎么negotiate啊,是不是太少了?78k + 6280/year bonus +
: 1000share/4years。不知道这种转正式的software engineer要多久呢?好了,以下面
: 经,反正也没签什么NDA,我一股脑全贡献出来啦:
: 第一次onsite screen。不知为何没有phone screen,可能因为我住的近,他们直接叫
: 我过去了。一个小时一个白哥。问了how to delete a node from binary search tree
: 。CLRS上直接有解法。白哥答案要求的很笼统,写个psuedo code就pass了。连找
: successor node的具体实现都不用写出来。后来又问不用mutex怎么实现share data
: between threads。我说GPU里面有一个东西叫thread synchronizer (我master学位做
: 了些CUDA编程),白哥没理解,说他会用个queue把thread都queue起来,然后一个一个

avatar
m*s
15
楼主能解释一下你说的synchronizer?
我理解图形卡在并行运算方面提供了内存屏障指令,即使在一个计算单元上的同时运行
的一组线程执行的是同样的指令,但由于对内存的访问时间是无法准确预知的,为了保
证读到写完的数据,这个屏障指令由开发者写在必要的地方:他的作用是保证所有的同
时运行的一组线程都完成内存写后,剩余的指令才能继续被执行。

associate
+
tree

【在 y**x 的大作中提到】
: official offer 出来了,实在一般。可能我的级别很低吧,entry level,“associate
: ” SE。有牛人指点一下怎么negotiate啊,是不是太少了?78k + 6280/year bonus +
: 1000share/4years。不知道这种转正式的software engineer要多久呢?好了,以下面
: 经,反正也没签什么NDA,我一股脑全贡献出来啦:
: 第一次onsite screen。不知为何没有phone screen,可能因为我住的近,他们直接叫
: 我过去了。一个小时一个白哥。问了how to delete a node from binary search tree
: 。CLRS上直接有解法。白哥答案要求的很笼统,写个psuedo code就pass了。连找
: successor node的具体实现都不用写出来。后来又问不用mutex怎么实现share data
: between threads。我说GPU里面有一个东西叫thread synchronizer (我master学位做
: 了些CUDA编程),白哥没理解,说他会用个queue把thread都queue起来,然后一个一个

avatar
y*x
16
好久没来这个thread,不好意思没注意到新的问题。CUDA 里面的 synchronizer 就是
你说的内存屏障指令,比较破坏性能,但是有时候reduce的时候不得不用的。
另外最近看到有人提供ServieNow加州refer,其实它在Seattle Kirkland这边的office
也扩招的厉害。有兴趣的我也能帮忙refer一下。
avatar
p*o
17
" 领导面前要强势,多表现,小兵面前要示弱示友好。"
精屁!
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。