转载:[Mitbbs]FB的intern和准备的经历

今天中午刚收到f家的intern offer, 超级开心。在这个版块看了很多也收获很多。
onsite前天晚上面就就对自己过了一定发个帖跟需要的人分享下自己的经历。论坛上帖
子看了很多,很多拿了FLAG之类公司的人都说自己不是大牛啦,没准备多久啦。 LZ 觉
得都太假了。 所以希望LZ的帖子能真正的对之后同学的人有些启发。也给LZ攒攒RP啦。

首先说下背景。本科西安一个万年211的高校的telecommunication,EE很强(西安的同
学应该猜到了是哪个了)。本科没做过research。春季入学了LA一个中国学生超级多的
学校, 专业CS, Master。没有任何实习经历或者research 经历。因为LZ完全不知道
从哪下手于是就作罢了。 科目修了OS,Alg,DB, ML, Software Architecture,AI
。GPA3.79

1月份下旬开始投的简历,因为有大牛的帮助,有5个refer。结果LinkedIn 和twitter 
refer直接被拒,Yahoo 一直没合适的岗位。自己也投了将近10家大公司和4家小公司,
都没有消息(可以看出LZ背景确实不行)。 最后只收到了G 和 F的电面。最后G家进了
waiting pool,F 家一轮oniste 拿到offer。

准备资料:
leetcode + cc150 + Coursera 的 Algorithms, Part I. LZ其实1月5号左右才开始正
儿八经准备面试,之前只是上过学校的算法课。不过简历是寒假就准备了的。

准备顺序: 
1. cc150 基础部分(不包括 programming language, memory limit 和 OOD)。 筑
基过程,非常中庸。

2. leetcode 老80 道题。 LZ一开始以为leetcode就是 leetcode.com 不知道有oj 这
么个东西,不过 老80道题有些题目真的非常经典,建议有空可以看看。

3. leetcode oj,一共150道题,LZ是每一题都是自己独立做的,除了 string pattern
类的题目,有一些是抄的。 但是这是绝对的错误,尤其是你去FB的话,string 类的
题极其容易被考的,不信可以翻mitbbs记录。这也是最痛苦的过程。LZ建议不要干别的
事这个时间,集中画2周到3周一题题突破。不要拖太长时间,因为你会发现时间越长越
没动力。

4.CC150 最后两章。LZ是在G 家第一轮面试前发现的这两章,当时吓出了一身冷汗。因
为之前室友问过LZ自己面试遇到的难题都在这里面发现了,甚至一些比较偏门的也能在
这发现。强烈建议练习,背诵!

5. CC150 全书,这段时间也是LZ最迷茫的时候,因为不知道该做什么了。最后决定还
是继续筑基。于是开始重做CC150.

6. leetcode 130道题。如果你之前都是自己做的话,你会发现这个阶段你提高的非常
明显。LZ 没写一道题都会发现 coding 风格比之前的更加简洁,并且做得更快,130题
只用了一周多一点点就全部跑过了。

7. Coursera 的Algorithms, Part I, Princeton Univ. 很多人都觉得 leetcode 刷
通了就能进FLAG。 但是LZ觉得,不管是intern 还是 fulltime, leetcode对付 电面
完全够了,但是onsite 就比较悬了,必须要从算法根本重新复习。所以LZ F家onsite
之前花了2天看了公开课的所有视频,有些章节甚至看了两遍。LZ承认,自己onsite没
用到,但是跟LZ一起onsite的一个CMU的哥们问到了 sparse vector multiplication,
公开课的原题啊!

基本上顺序就是这些,其实每次电面前三天LZ都会用google doc 敲一遍 CC150最后两
章的重点题,因为实在是太经典了。之前的章节也会自己带着做一些。

准备建议: 
1。 数据结构必须精通,甚至要回搭建自己简单的数据结构 比如hashmap, linklist
之类的。 
2. CC150 是神书,最神奇的是最后两章,
3. 不要浮躁的刷题,有时间多看一些算法课的视频,有些思想没准哪天你就会用到了。
4. leetcode要练精,第一遍做的时候可以尝试多一些,第二次要尽量做到bug free,
代码一次成型,这点非常重要。
5. leetcode上一些复杂的DP其实考得很少,因为45分钟你很难做出来,(面试官当然
会假设你没做过)而且面试官也不一定能确定你做的是对的。真正重要的就是一些
string 类型的小题目。很简单,但是容易错,非常考验代码风格。
6。 做题的时候就要保证代码规范,虽然只有F家注重这些,但是好的代码规范据说会
加分哦。
7. 只用写字板写代码,onsite 前可以找白板练练。
8. coding 要老老实实地练,不管java 还是C++ ,leetcode总有人能跑过的,LZ自己
就是Java 151/151. 所以,少抱怨些,多静下心来做做题。(如果你有跑不过的,可以
给LZ留言,LZ可以把自己代码发给你参考下)。

面经:
都是一些极其基础的leetcode。只有一个facebook二面时候 brain teaser, 面试官很
聪明得给了LZ一段代码,LZ觉得很眼熟,想起来时 CC150 brain teaser 最后一题。于
是一边聊天拖时间一边翻开书看了下,给了他答案。面试官最后非常满意。

其他:
其实LZ面试挺坎坷的,Google电面第一轮是LZ张那么大的第一轮面试,及其紧张。LZ英
语也是半个结巴,所以感觉非常不好。最后一道题竟然还被告知bug。但是LZ 一直找不
到,问他他也说你可以自己找。LZ最后用eclipse测出来没问题就发邮件个面试官解释
了了下自己的思路。竟然最后两轮过了之后面试官主动打电话说不要意思,面试时候看
错了 你的代码是bug free的。 不由的佩服老美native的心胸。 相比下F家第一轮的烙
印就差点把LZ坑死, two sum不给用 夹边的那个算法。LZ给了个hashmap的 被告知有
bug,还给了LZ个test让肉眼debug。真是拼了老命都没找到啊,结束后用eclipse test
, 完美跑过了他给的2个test。当时就惊呆了。。。 不过确实有个小bug,但是跟他给
的test完全没关系。LZ面试的时间就这么被耗尽了。不知道是不是被这个烙印给故意坑
了。不过幸好是refer的,所以recruiter给了第二轮面试,leetcode原题,表现良好,
就直接给了onsite。

所以大家还是保佑别遇到极品阿三吧。不过LZ Google 第二轮遇到的阿三哥还是蛮nice
的, LZ面的不错,爽快的给LZ过了, 还弥补一面悲剧的表现。所以什么地方都有好人
,也有坏人,大家不必一概而论。不过经过被F家一面烙印坑了之后,LZ还是决定,以
后如果当面试官的话,遇到不靠谱的阿三直接难题秒他。

LZ现在也有些不知所措,不知道intern 要做什么,自己能干什么。不过以前一个师兄
有句话对LZ帮助很大,最后送给大家:”当你迷茫的时候或者不知所措的时候,就老老

实实把手边的事情做好就行了,所有事情都会慢慢变好的”。

Data structure: 
Link list, tree(BST), graph, stack, hashmap, array, string.
Also: trie, suffix tree, Red-black tree.

Algorithm: 
DP, DC, tree traversal, some string pattern comparison algorithm including 
KMP, rolling hash.

Most algorithms and data structures are practiced in CC150 and leetcode.

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

时间: 2024-10-26 11:50:41

转载:[Mitbbs]FB的intern和准备的经历的相关文章

性能测试脚本开发(LR.NET控件)

版权声明:本文为兄弟连IT教育原创文章,未经博主允许不得转载. 性能测试过程中,最耗费经历的就是编写性能测试脚本的过程,在大部分的测试工具中都是采用录制的方式,通过录制产生脚本,然后根据需要进行修改,以及参数化.有些时候为了能够完成某一个功能的脚本,需要将录制下来的脚本进行"大手术",给编写脚本的人带来了很大的麻烦. 这篇文章向大家介绍了一种新的方式产生脚本,对于 ISV (独立软件开发商)和一些有 代码的测试厂商带来了很大的方便,特别是一些 C/S 结构的产品采用此种方式更加有效.文

JasperReport简介

JasperReport是一个强大.灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF,HTML,XML,Excel(通过POI或JExcelAPI实现)和Rtf(通过POI实现)格式.该库完全由Java写成,可以用于在各种Java应用程序,包括J2EE,Web应用程序中生成动态内容.它的主要目的是辅助生成面向页面的(page oriented),准备付诸打印的文档.JasperReport借由定义于XML文档中的report design进行数据组织.这些数据可能来自不同的数据源,

小米家装,爱空间能否做到20天的极致?

26日,金错刀的一条微博引起了我的关注,因为笔者年前刚刚忙完135平米新房的装修,爱空间将毛坯到新房只需要20天的工期,并经过400项工序话指标,定价在699每平方米,这样的价格和这样的工期却是满足了雷军参股前的一个疑虑"装修时间最短几天完成?".通过笔者微博转载后的评论与个人装修亲身经历,爱空间的20天工期,能够给客户带来极致的体验? 今天约到了唐山知名家装设计师王坤,在茶余饭后,推杯换盏之时聊起了从博洛尼出身的陈炜-爱空间科技公司CEO.陈炜是谁笔者并不知道,可是联想起爱空间,擦,

java String的equals,intern方法(转载)

JAVA中的equals和==的区别 ==比较的是2个对象的地址,而equals比较的是2个对象的内容. 显然,当equals为true时,==不一定为true: 基础知识的重要性,希望引起大家的重视,包括自己在内 很多困惑和疑问而且均来自于最基础的知识 折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟 public class TestString { public static void main(String[] args) { String s1 = "Monday

【转载】非常棒的算法面试类资源汇总

今天看到了这篇文章,非常非常棒:http://blog.csdn.net/nedushy123/article/details/23827361 把内容转载如下,以作收藏: 经典算法面试题一览 1. 自然就是careercup (类似的网站还有glassdoor) careercup不难,参考二爷划的重点,早早开始做,即使先开始做前几章简单的.一亩三分地经常有刷题活动. Cracking the Coding Interview v5  8.9/88     2. leetcode的题稍难一些,

深入解析String.intern()方法

转载: http://tech.meituan.com/in_depth_understanding_string_intern.html 引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念.常量池就类似一个JAVA系统级别提供的缓存. 8种基本类型的常量池都是系统协调的,String类型的常量池比较特殊.它的主要使用方法有两种: 直接使用双引号声明出来的String对象会直接存储在常量池中. 如

【转载】Java常量池

本篇随笔为转载,原贴地址:Java常量池理解与总结. (其实Java的常量池有点像C++中的存储字符串常量的常量存储区). 一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法改变!final修饰的变量有三种:静态变量.实例变量和局部变量,分别表示三种类型的常量. Class文件中的常量池在Class文件结构中,最头的4个字节用于存储魔数Magic Number,用于确定一个文件是否能被JVM接受,再接着4个字节用于存储版本号,前2个字节存储次版本号,后2个存储主版本号,

CentOS6.5菜鸟之旅:纯转载Linux目录结构

来自:http://www.iteye.com/topic/1125162 使用linux也有一年多时间了  最近也是一直在维护网站系统主机  下面是linux目录结构说明 本人使用的是centos系统,很久没有发表博文了 近期会整理自己所用所了解知识点,发表linux相关的文章,记录自己的linux点点滴滴. linux 目录结构 /: 根目录,一般根目录下只存放目录,不要存放文件,/etc./bin./dev./lib./sbin应该和根目录放置在一个分区中/bin:/usr/bin: 可执

探秘Java中的String、StringBuilder以及StringBuffer(转载)

探秘Java中String.StringBuilder以及StringBuffer 相信String这个类是Java中使用得最频繁的类之一,并且又是各大公司面试喜欢问到的地方,今天就来和大家一起学习一下String.StringBuilder和StringBuffer这几个类,分析它们的异同点以及了解各个类适用的场景.下面是本文的目录大纲: 一.你了解String类吗? 二.深入理解String.StringBuffer.StringBuilder 三.不同场景下三个类的性能测试 四.常见的关于