Wednesday, April 29, 2015

http://www.mitbbs.com/article_t/JobHunting/32939573.html

问了两道题

第一题 
merge  n sorted list. 我用heap做,比较容易.

第二题
题目弄了半天大概搞清楚意思, 但是没做出来. 大家出来看一下怎么做.

有一个lock, 比如说1234

假设你要解锁, 你要尝试所有的combination来解锁, 怎么把这所有的combination存在
一个sequence里面使得sequence最短.

比如说锁只能是 0 1 2 组成的数字 

锁是 1

012

锁是 12

sequence 可以是
000102101112202122
代表
00 01 02 10 11 12 20 21 22


也可以是, 如果你连着读的话
0011022120

可以代表
00 
01 
  11
   10
    02
     22
      21
        12
          20

我觉得是怎么压缩这些candidate key到一个string里面
--

http://en.wikipedia.org/wiki/De_Bruijn_sequence
http://introcs.cs.princeton.edu/java/31datatype/DeBruijn.java.h

Tuesday, April 28, 2015

http://www.mitbbs.com/article_t1/JobHunting/32953873_0_1.html

今天面的第二轮。。。面完很伤心很失望,下午上了一下午班后,感觉好了点,开始觉
得自己发挥的好差,题也不容易,为啥别人都能碰到常见的常规的题,我就碰不到。。
。。不够难过的时候怪运气是太容易的事了,但现在冷静下来感觉,不过是给自己找借
口罢了。发面经上来,给自己差劲的人品增值,希望将来的面试顺利。
第一轮两道题
1. first missing positive
2. 写一个file line iterator
Implement a (Java) Iterable object that iterates lines one by one from a 
text file..

/** A reference to a file. */
public class TextFile implements Iterable<String>. From 1point 3acres bbs
{
  public TextFile(String fileName) { // please implement this

  /** Begin reading the file, line by line. The returned Iterator.next() 
will return a line. */
  @Override
  public Iterator<String> iterator() { // please implement this

第二题没见过。。。但准备了不少iterator的题,算是有思路,磕磕巴巴的写完了。这
一轮就这么过了。

今天第二轮,是一个同胞和一个美国女孩面的,同胞一直没说话,除了开始你好最后再
见。。。估计还在training阶段,全程都是那个女孩面的。
第一题是twoSum, 前两天面经里刚看过,也是两种方法,optimize store efficiency
和optimize test efficiency都写了。但写4 = 2 + 2这种情况竟然被我写出了一个bug
,真是不应该,过test case也没发现,结果是面试官指出来的。。。当时就好囧,想
第二题要好好写了,没想到第二题才是悲剧的开始。。。

第二题叫canIwin, 是两个人轮流取数,取过的不能再用,把取过的数都加起来,谁先
取到目标数谁赢。
题目在这里

/* In "the 100 game," two players take turns adding, to a running 
total, any integer from 1..10. The player who first causes the running 
total to reach or exceed 100 wins. 
What if we change the game so that players cannot re-use integers? 
For example, if two players might take turns drawing from a common pool of 
numbers 
of 1..15 without replacement until they reach a total >= 100. This problem 
is 
to write a program that determines which player would win with ideal play. 

Write a procedure, "Boolean canIWin(int maxChoosableInteger, int 
desiredTotal)", 
which returns true if the first player to move can force a win with optimal 
play. 

Your priority should be programmer efficiency; don't focus on minimizing 
either space or time complexity. 
*/ 

Boolean canIWin(int maxChoosableInteger, int desiredTotal) { 
// Implementation here. Write yours 

}

然后我就傻眼了。。。。我看明白题都花了好多时间,感觉这种博弈的题,大概是dfs
是最简单直接的。。。。也没想啥更简单的方法,时间也没多少了,马上开始写。。。
结果写出来两个bug...>_<, 然后她指出来这两个bug之后,我就觉得生无可恋了,改了
之后,她让我问问题,我也不想问了,直接就想挂电话。。。

感觉自己还是基本功不扎实,碰到没见过的题很容易慌,再有就是太容易放弃了,其实
我的思路是对的,如果肯沉下心来写对它,也许还有翻盘的机会。但看着时间一点点过
去,状态已经很浮躁了,以至于过程十分痛苦+惨烈,而且那个女面试官也不够友好,
有点凶,哎,女人何苦为难女人呢,

后来我查面经,这题今年没怎么出现过,但14年出现过两次,所以如果肯下功夫过面经
的话,也是能看到的。所以要不就很牛,当场写也没问题,要不就肯下苦功,把所有的
题都过一遍,我两头都不占,失败也是必然的吧。。。人生不如意事常89,move on吧
。希望对正在面L的人有用。

Monday, April 27, 2015

http://www.mitbbs.com/article_t/JobHunting/32952717.html

从开始好好复习,到现在花了2个多月。现在停下来写一下感受。不废话,先上面经:
(PS: 不是fresh)
1. Apple
fibonacci
longest common subsequnce
external sort implementation
c++ smart pointer原理和implementation
design cache for retrieving previous query
design和implement一个game的AI,尽量能赢user,有一个词典,你和电脑,一人给填
一个单词必须是词典里的prefix。如果谁放入单词的ending char,谁就输了。关键是
implement很烦。ex: 
dict{ "abc", "aa"}, 你先给a, 电脑给a他就输了,所以电脑要给b,然后再轮到你,
必须给c,然后你就输了。

总体来说,apple家偏经验,algorithm很少。由于没准备就去了,挂。。。

2. Amazon (AWS)
1电:
maximum sum from root to leaf (LC)
maximum sum in tree (any node)要求print path
2电:
说recruiter没安排好,结果那人忘记了,不在电脑前面,就问得很杂,各种内存什么
的东西都问。

自我感觉面的也不是很好,觉得自己表达还是有一些问题。也没去follow

3.Twitter 

最小的200个prime
knap pack

说实话,这个真感觉被阿三黑了,幸亏这两题我都做过,可是阿三就想把你往歪路上领
。反正面完也没消息了,挂。。。。


4. Zenefit
challenge:
stock maximum profit.
good node


一个graph,矩阵形式,0表示两边无相连,1表示有。
   A  B  C
A 0  1   1
B 1  0   1
C 1  1   0

找出unique triangles

这个是自己蠢,专牛角尖。没有做好。感谢板上lubyfall的refer,但是没有面好。。
。 挂。。。

5. Microsoft  (Azure)

一个BST,给一个数字,找到closest node
longest palindrome substring, 写O(n2),  O(n)说了思路

版上大哥refer的,怎奈recruiter太慢了,约电面约了将近一个月。最后来不及,把
onsite推了


6. Google

longest increasing subsequence
Populating Next Right Pointers in Each Node (LC)

Onsite
Fraction to Recurring Decimal (LC)
Copy List with Random Pointer (LC)
Read N Characters Given Read4 (LC)
版上报过得那个由平方的最小个数的
2维空间,xy,你有很多个building,每个building有x1, x2两个值代表宽度,还有y
代表高度,很多楼可能从某个角度看过去有overlap,你要在这个2维空间画出整个的
contour
follow up: 如果x轴变为时间,y轴变为memory用量,你有一个memory的limitation,
怎么monitoring有没有超过

整体狗家不是很难,很多follow up很多。比如read4k那个,interviewer相出了无数情
况把code虐的遍体鳞伤。。。。虽然可以过LC,但是在他得test下,感觉code很crispy
。。。所以,自己不能太依赖于LC,有的时候要多想想其他corner case。非常感谢前
两轮的国人大哥,小哥。给的都是原题。


7. Facebook

有一个function call可以判断你的code base 是green还是red。给你一个array,在某
一个点开始,你的code base red了,你要找到那个点。 其实跟 LC的Find Minimum in
Rotated Sorted Array很像
Add Binary (LC)
follow, 如果两个binary string,相乘。写code

Read N Characters Given Read4 (LC)
跟LC的海岛很像,一个矩阵表示地毯,有white和black两种color,只要能连在一起,
算一个batch,要你算算白色和黑色的batch分别多少。不一样的是LC只允许上下左右连
着,这个地毯允许你对角线
Best Time to Buy and Sell Stock (LC)
Search in Rotated Sorted Array (LC)
把非0的swap到array开头
design facebook chat

也许是运气好,f家的题都是原题。觉得多刷刷,多做,都会触类旁通。L家就不报了,
签了L家。algorithm和design都是版上有过的。都不难,我觉得是三家出题最稳定的。
package也不报了,就是标准的,没什么好说的。


下面说说整体感受。这次面试,面我得国人都特帮忙,狗狗家的大哥小哥尽量给原题,
尤其是L家,一开始的两个国人大哥在面完以后,还会指出我表达不好的地方,说下一
个是design,你怎么样去避免这些问题。最后一轮,一个国人小哥,一个阿三。阿三出
了一题dp,真没看过,虽然最后做出来了,test也pass了,可是花了很多时间。那阿三
说就到这吧。。。国人小哥马上就说还有点时间,再问一题吧。感觉如果没有国人小哥
,我这次就要被黑了。如果以后有机会,一定要当面去感谢。

发这个感受就是因为看到版上很多国人自己都看不起自己人。我觉得在美国的国人,很
多不说是牛,但至少干活什么的没有问题。能帮一把就帮一把不要觉得别人怎么样怎么
样不好,别人哪里哪里不行。招一个国人进来,至少我觉得不会背后捅你黑刀子。其实
我也觉得,面试过程中,面我得国人都是很帮忙的,也特别热情。真心希望大家都能互
相帮助。

以上纯属个人感受。。。如果言辞不当,希望不要跟我等小人物计较。

Saturday, April 25, 2015

from mitbbs http://www.mitbbs.com/article_t/JobHunting/32948909.html

电面1:
顺序统计树,找第K个节点。

电面2:
1)打印000到123所有的数,follow up,打印a到b所有的数(假设每一位都a<=b)
2)Next permutation
3)栅栏N个木片,每一片可以刷两种颜色,相临三片不能同色,问几种刷法。

Onsite:
1)一堆interval,有叠加,给一个值,查询在不在这堆interval里(会调用很多次)
   Follow up, 给一个值,查询多少个interval包含这个值(会调用很多次)
  (国人大哥面的,可能会看到这个帖子,非常感谢,做题的时候给了很多引导。)
2)一个有向图,找出互相指向的点对数,(e.g. A指向B,B指向A,算一对)
   Follow up, 写一个类,这个图会变化(加点,删点,加边,删边),维护这样的
点对数。
   Follow up, 扯了扯大数据时候怎么分配到各个计算机上。
3)论文演讲
4)家族树,每个点左右指针指向自己的父亲和母亲,每个点存对应二叉堆的索引。
   A)给一个这种树,给每个点标出对应二叉堆的索引值。
   B)任意给一个节点(不需要输入根节点),输出这个点所在的层数。
   C)任意给一个节点(不需要输入根节点),输出这个点和根节点的关系(e.g. 是
根节点父亲的母亲就输出“MF”)。
5)两道LC原题 1. Anagram 2. Reverse bit
   直接给出最优解还不断让优化,优化涉及到系统设计。

Friday, April 24, 2015

from mitbbs http://www.mitbbs.com/article_t/JobHunting/32741713.html

04/19/2015 update:收到的简历基本都给推了,大家也很给力,已经有12人拿到offer
,还有很多人正在面试。
fb最近还在大量招人

提供内推,社招校招皆可,天朝美帝皆可,如有兴趣,请发简历到fbrefer@163.com
申请码工职位的,请至少保证刷完一遍leetcode,或同等水平
最近一年申请过的,由于公司政策,请不要再申请



关于面试流程
社招的话
电面1-2轮,一般就是coding
onsite一般是4轮,2轮coding,1轮design,1轮behavior+coding
校招的话,那轮design也变成coding了



关于准备
1) algo/coding
建议大家刷一下leetcode,基本上cover到了大多数常见面试题,而且有可能碰到原题
。需要注意的是,仅仅解出来,做到bug free可能是不够的。代码的质量和速度也非常
重要。网上有一些别人给出的答案可以参考,尽量做到代码简洁清晰。速度上leetcode
上所有题都做到10分钟以内写完。


2) design
解这种题是个*交流*的过程,或者说是给出方案然后获取反馈的不断循环的过程。
一般的流程:
首先你要问清楚requirement;
然后可以讲一下high level architecture,就是分成哪几个component,互相之间如果
interact,在白板上画一画;
之后面试官可能会让你深入某个component detail讨论;
也有可能变换requirement让你重新设计

另外,f家还喜欢让你估算机器之类的,做一些back-of-envelopme calculation。所以
最好对一些计算机相关的基本常数,fb的用户量等等有个大概的了解。

准备的时候建议看看fb的design高频题。一方面有可能面试的时候刚好碰到这几个
topic,另一方面其实很多design都是相通的。
之前有个帖子讲这个,原帖已经被删了,这儿有个备份http://blog.csdn.net/sigh1988/article/details/9790337

另外补充一点我收集的材料

a) 首先你可以从整体上了解一下facebook的architecture
http://www.quora.com/Facebook-Engineering/What-is-Facebooks-arc
http://www.ece.lsu.edu/hpca-18/files/HPCA2012_Facebook_Keynote.
http://www.quora.com/Facebook-Engineering/What-have-been-Facebo
除了下面给出的一些资料,fb engineering page里还有很多不错的内容
https://www.facebook.com/Engineering

b) news feed
这里有个talk
http://www.infoq.com/presentations/Facebook-News-Feed
对应的slides
http://readme.skplanet.com/wp-content/uploads/2012/11/0-3_Faceb
还有一些quora上的讨论
http://www.quora.com/Activity-Streams/What-are-the-scaling-issu
http://www.quora.com/What-are-best-practices-for-building-somet
http://www.quora.com/What-is-the-best-storage-solution-for-buil

c) facebook chat
这里有两个notes,其中第二个里面还有相应的tech talk links
https://www.facebook.com/notes/facebook-engineering/facebook-chat/
14218138919
https://www.facebook.com/notes/facebook-engineering/chat-stability-and-
scalability/51412338919

d) typeahead search & graph search
关于typeahead search的tech talk和notes
https://www.facebook.com/video/video.php?v=432864835468
https://www.facebook.com/note.php?note_id=365915113919
https://www.facebook.com/note.php?note_id=389105248919

关于graph search的paper, tech talk, notes。其中paper很值得一看。
http://db.disi.unitn.eu/pages/VLDBProgram/pdf/industry/p871-cur
https://newsroom.fb.com/Photos-and-B-Roll/4362/Graph-Search-Whiteboard
https://www.facebook.com/note.php?note_id=10151240856103920
https://www.facebook.com/note.php?note_id=10151347573598920
https://www.facebook.com/note.php?note_id=10151361720763920
https://www.facebook.com/note.php?note_id=10151432733048920
https://www.facebook.com/note.php?note_id=10151755593228920

e) facebook messages
两个tech talks
http://www.youtube.com/watch?v=XAuwAHWpzPc
http://www.infoq.com/presentations/HBase-at-Facebook
以及eng notes
https://www.facebook.com/note.php?note_id=10150148835363920
https://www.facebook.com/note.php?note_id=10150162742108920

f) photo storage
相关的papers和notes
https://www.usenix.org/conference/osdi10/finding-needle-haystack-facebooks-
photo-storage
https://www.usenix.org/legacy/events/osdi10/tech/full_papers/Beaver.pdf
https://www.usenix.org/legacy/events/osdi10/tech/slides/beaver.pdf
https://www.facebook.com/note.php?note_id=76191543919

g) social graph data store
相关的note, video, paper
https://www.facebook.com/notes/facebook-engineering/tao-the-power-of-the-
graph/10151525983993920
https://www.usenix.org/conference/atc13/technical-sessions/presentation/
bronson
http://www.cs.cmu.edu/~pavlo/courses/fall2013/static/papers/117

h) tiny URL
这里有一些讨论
http://n00tc0d3r.blogspot.com/2013/09/big-data-tinyurl.html
http://stackoverflow.com/questions/742013/how-to-code-a-url-sho
http://stackoverflow.com/questions/3376163/what-are-the-things-

i) POI
参考这里
http://www.slideshare.net/mmalone/scaling-gis-data-in-nonrelati
http://www.mitbbs.ca/article_t/JobHunting/32476139.html


3) behavior,建议大家了解一下fb的culture,准备一下常见的behavior questions,
面试之前rehearsal一下。

最后面试临近的时候,可以再刷刷面经,找找感觉。像glassdoor, mitbbs/jobhunting
, careercup,这些上面就有很多。

如果有其它疑问,欢迎回复或者PM我。


g from http://www.mitbbs.com/article_t/JobHunting/32946817.html

去年还没开始准备电面悲剧,今年HR找我

电面

检查字符串里面几种括号是不是正确成对

如何快速更新分布系统的配置文件

onsite

LRU cache
Rotate image 90 degree
Generate maze
TinyURL
Shorten string (shorten -> s5n; check if s2r2n is valid shorten for shorten)
Distributed cache
insert time interval to sorted time interval list

碰到的大部分是华人,题也不算难,自己准备的不好,有两个题目答的很不好

继续目前的工作以后再说了,祝大家好运

Thursday, April 23, 2015

from mittbs http://www.mitbbs.com/article_t/JobHunting/32948233.html

网上看到的分享,对程序员找工作挺有帮助的,share给大家~~


网站推荐
GeeksforGeeks.org  非常著名的漏题网站之一。上面会时不时的有各种公司的面试真
题漏出。有一些题也会有解法分析。
CareerCup.com  CC150作者搞的网站,也是著名的漏题网站之一。大家会在上面讨论各
个公司的面试题。
Glassdoor.com 一个给公司打分的网站,类似yelp的公司版。会有一些人在上面讨论面
试题,适合你在面某个公司的时候专门去看一下。
themianjing.com 面经网。应该是个人经营的一个积累面经的网站。面经来源主要是一
亩三分地,mitbbs之类的地方。
一亩三分地。
mitbbs.com  jobhunting版。北美华人找工作必上。

在线OJ及部分题解
LintCode - 专门提供面试题在线评测的OJ,筛选比较方便,还可以在source处选择
cc150或者其他来源的题,有阶梯训练系统,不用担心不知道从哪儿开始刷题。目前会
根据系统locale选择中文或者英文,评判时也比leetcode快,总之是比较赞啦。
LeetCode Online Judge - 找工作方面非常出名的一个OJ,相应的题解非常多
soulmachine/leetcode - 含C++和Java两个版本的题解
Woodstock Blog - IT,算法及面试。有知识点及类型题总结,特别赞
Acm之家,专业的ACM学习网站 - 各类题解
九章算法LeetCode / LintCode 题解。上面的题解是专业老师提供的,代码质量很不错。
水中的鱼。http://fisherlei.blogspot.com/ 。有很多LeetCode的题解。

论坛博客
刷题 | 一亩三分地论坛 - 时不时就会有惊喜放出。
VisuAlgo - visualising data structures and algorithms through animation - 相
当碉堡的数据结构和算法可视化。
Data Structure Visualization - 同上,非常好的动画演示!!涵盖了常用的各种数
据结构/排序/算法。
程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
POJ的部分题解 - Category: POJ | Beeder's Blog
专栏:算法笔记——《算法设计与分析》 - CSDN上对《算法设计与分析》一书的学习
笔记。
算法练习 | billryan - 恬不知耻地贴上了作为CS门外汉刷题的总结和笔记,求大神们
轻拍

书籍推荐
Algorithm Design (豆瓣)
The Algorithm Design Manual, 作者还放出了自己上课的视频和slides - Skiena's 
Audio Lectures,The Algorithm Design Manual (豆瓣)
大部头有 Introduction to Algorithm 和 TAOCP
Cracking The Coding Interview. 著名的CC150,Google, Mircosoft, LinkedIn 前HR
离职之后写的书,从很全面的角度剖析了面试的各个环节和题目。之所以叫CC150就是
有150道面试题,除了算法数据结构等题以外,还包含OO Design, Database, System 
Design, Brain Teaser等类型的题目。准备北美面试的同学一定要看。
剑指Offer。英文版叫Coding Interviews. 作者是何海涛(Harry He)。Amazon上可以买
到。有大概50多题,题目的分析比较全面,会从面试官的角度给出很多的建议和show各
种坑。
进军硅谷 -- 程序员面试揭秘。有差不多150题。