一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 848|回复: 2
收起左侧

Yahoo Onsite 跪经

[复制链接] |试试Instant~ |关注本帖
lxy16555 发表于 2016-3-24 02:58:33 | 显示全部楼层 |阅读模式

2016(4-6月) 码农类 硕士 全职@Yahoo - 校园招聘会 - Onsite |Failfresh grad应届毕业生

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
上周五面试,做题收到拒信,调整一下心情今天发面经

面的Science & Technology组

第一轮manager+一个校友,跪在这轮
manager出了一个多线程题,给你一些function,当developer有空的时候,并且kitchen准备好的时候,开始供餐,否则停止供餐。太紧张了,又是第一轮,一点没有事先热身,结果想着快点做,连题目都没理解透彻,正好多线程这块又并不熟悉,以前只在IDE上写都有提示,写白板都忘了Thread里要写run()方法,怪自己。
class LED { void turnOnLED(); }
class Kitchen{ boolean isReady(); }
class Developer implements Runnable {
    public Developer getDeveloper();. more info on 1point3acres.com
    void run() {
        while (true) {. 涓浜-涓夊垎-鍦帮紝鐙鍙戝竷
            //TODO;
        }
    }
}
class XXX extends Thread {
    //TODO;. From 1point 3acres bbs
    void startSupply();. From 1point 3acres bbs
    void stopSupply();
} 鏉ユ簮涓浜.涓夊垎鍦拌鍧.
大概结构如上,一开始我没理解透彻,一位让我实现的是startSupply和stopSupply,纠结半天,现在想想这两个应该是给你的API,让你写的应该是继承Thread之后重写的run(),当时真是悲剧。。。现在想思路大概是定义一个static的local variable Developer d,然后Developer的run里面调用d=getDeveloper()方法,来改变d的状态(null或Developer),然后再XXX里面重写run(),当d不为null并且Kitchen Ready并且Kitch状态不是starting时调用startSupply(),相反则调用stopSupply(),这里要注意d的同步,我猜可以用try...catch...写,不知道有没有别的想法大神们请指出。。.鏈枃鍘熷垱鑷1point3acres璁哄潧
反正当时这道题是跪了,然后manager让同行的校友小哥出了算法题,anagram,秒达。然后是问一些java基础知识,这里manager问的很深入,果然糊弄不过去,问题如下:. more info on 1point3acres.com
1. final/finally/finalize ->我很愉快的答出了不同,然后问我什么时候应该去调用finalize(),并且会发生什么,懵逼。。。还问我在anagram里面如果把hashmap定义成final会怎么样,算法还会运行吗
2. 问Exception的种类,runtime exception和compile exception,然后给我两个例子,void bar() throws runtime.../void foo() throws exception,然后在class foo{bar()/foo()}分别调用这两个方法,能编译成功吗。答案是bar()可以,foo()不行,这里我也不清楚原理,manager看来很不满意

第二轮是个美国小哥,考系统设计+DB+简历proj。DB让我设计学生选课的,我写了三个table,一个学生,一个课程,一个学生和课程的联系,然后让我写query来求某个学生选的具体课程,大概就是JOIN之后select。重点问题是让我设计一个file system,不是distributed file system,我说大概要实现read/write,以及文件的namespace之类,告诉他文件怎么存的,matadata的情况和content的情况,然后他问我具体怎么read/write,我说用trie tree/b+ tree来存namespace然后一个一个找,如果write的话看看这个file name是不是已存在的,然后系统分配buffer,写进去再allocate到disk之类,可能是没达到点子上,前半段一直在解释怎么存data,block啊chunk啊,然后在namespace里存着这些信息之类,虽然他一直说alright,但是估计有些问题回答的跟他想的不一样

第三轮是个印度小哥,两道算法题,tree的level order traversal,秒答,一个queue解决,第二题他说是他自己想的问题,他也没最优解,坑爹。你要去旅行,给你很多tickets,这些tickets都只连接两个地方,然后你弄乱了这些tickets,让你排序这些tickets,我一开始以为只要我找起点和终点,写了半天他说我理解错了,是让我排序这些tickets,然后还hint我用doublelinkedlist,我就陷进去了,在想读到不同的tickets的起点和终点怎么排序选择doublelinkedlist。。。结果纠结很久没想出来,他让我先bruce force,我说好办select sort,n方复杂度,每次拿出一张,然后找跟它起点或终点一样的取出来,他说确实,然后让我想insert sort,我心里咆哮,这两个sort复杂度tm都是n方,有毛区别!但是想不到,最后他解释说,先在tickets里面找起点和终点,a-b,b-c,c-d,d-e,e-f这样的话能找出a和f,放到doublelinkedlist里面,然后再在剩下的里面找b和e,再插入doublelineklist。说的时候一脸得意的看着我,老子想,妈蛋这时间复杂度不是一样,估计他是想问doublelinkedlist相关吧。

总结就是,首先一定不能紧张,读题理解一定要仔细再仔细,别急着写。manager的问题一定要答好,否则直接没戏。然后回来后恶补了java Thread API等内容。虽然老是抱怨点背,因为在面试结束后和别的一起onsite的几个人聊天的时候,有几个说问的全是algorithm,有两个面video组的倒是有被问到recommendation system,machine learning的问题,剩下只有一个人问到了system design,当时觉得“啊,我真背啊,又是多线程又是系统设计的。。。”,但是现在心情好点觉得是自己该,有些知识的死角在面试前并不能真正发现,manager问的问题都很刁钻而且正好涉及到我不熟悉的部分,只能加油move on了。至此FLGYB全灭,剩下的也只能慢慢面试了。。。Orz。。。希望对后来者有帮助. From 1point 3acres bbs

以上。. 1point 3acres 璁哄潧
yingying 发表于 2016-10-21 10:04:04 | 显示全部楼层
FLGYB? B是bloomberg?
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-8 18:16

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表