今天中午刚收到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

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

  1. (转载)深入解析String#intern

    本文转载自:深入解析String#intern 引言 在 JAVA 语言中有8中基本类型和一种比较特殊的类型String.这些类型为了使他们在运行过程中速度更快,更节省内存,都提供了一种常量池的概念. ...

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

    JAVA中的equals和==的区别 ==比较的是2个对象的地址,而equals比较的是2个对象的内容. 显然,当equals为true时,==不一定为true: 基础知识的重要性,希望引起大家的重视 ...

  3. 【转载】几张图轻松理解String.intern()

    出处:https://blog.csdn.net/soonfly/article/details/70147205 在翻<深入理解Java虚拟机>的书时,又看到了2-7的 String.i ...

  4. GJM : FlatBuffers 与 protobuf 性能比较 [转载 ]

    原帖地址:http://blog.csdn.net/menggucaoyuan/article/details/34409433 原作者:企鹅  menggucaoyuan 未经原作者同意不允许转载 ...

  5. 【转载】MFC键盘响应

    转载自:传送门 一:首先介绍键盘消息 系统消息: ALT,F1,--F24等,是由系统内部处理的,程序本身就存在,比如F1是帮助键. WM_SYSKEYDOWN WM_SYSKEYUP WM_SYSC ...

  6. 【转载】Java常量池

    本篇随笔为转载,原贴地址:Java常量池理解与总结. (其实Java的常量池有点像C++中的存储字符串常量的常量存储区). 一.相关概念 什么是常量用final修饰的成员变量表示常量,值一旦给定就无法 ...

  7. C++ UTF8 UrlEncode(宽字符)(转载)

    转载:http://www.cnblogs.com/newcj/p/3645749.html #include "UrlEncode.h" #include <string& ...

  8. 项目中使用Quartz集群分享--转载

    项目中使用Quartz集群分享--转载 在公司分享了Quartz,发布出来,希望大家讨论补充. CRM使用Quartz集群分享  一:CRM对定时任务的依赖与问题  二:什么是quartz,如何使用, ...

  9. (转载)Flash Builder和flashdevelop 常用快捷键

    (转载)http://www.fantxi.com/blog/archives/fb-fd-shortcut/ =========flashdevelopCtrl+B - snippetsctrl+s ...

随机推荐

  1. java 中文转拼音之pinyin4j

    一.简介 有时候,须要将汉字编程相应的拼音.以方便数据的处理.比方在Android手机应用的开发上.要查询联系人的姓名.通常都是用拼音进行查询的. 比方要查询"曹孟德",就能够输入 ...

  2. 1个比较简单的使用java反射机制获取前台数据进行数据封装的例子

    //利用反射机制 和 从request获取所有参数的形式来构建查询对象 CustomerChooseSearchParma searchObject = new CustomerChooseSearc ...

  3. Tomcat 签名认证配置简例

    在项目的web.xml中增加 <security-constraint> <web-resource-collection> <web-resource-name> ...

  4. Xcode编译 No such file or directory

    No such file or directory 差点儿相同算是Xcode比較常见的一个编译错误了.原因往往是加入或删除美术资源的时候出错.尽管是小问题,但出现的频率非常高. 解决方法(能够依次尝试 ...

  5. NET的基本用法(摘)

    摘自:http://baike.baidu.com/link?url=Knc-OicoX8CPcaMS0r3eU8z8ns9z1S6OsRaBTYUIT1raU0FsPWQ35xL-dlxKg9Oy# ...

  6. 在sys用户下执行的sql脚本创建了摁多个表和序列, 怎么回退?

    一个个删除, 暂时不会别的方法...

  7. 使用免费ip代理进行投票

    只要是投票系统,必然要限制一个用户投多张票. 如何限制呢?限制ip是最直观最简单的思路,可是代理池可以解决限制ip的情况. 如果投票页面前面加上一个验证码,那程序就会有点困难了. 有些投票使用微信号, ...

  8. GoogleMapsV3-----基础地图(自定义消息提示OverlayView) (转)

    <html> <head> <title> </title> <title></title>    <style type ...

  9. Windows下面安装和配置Solr 4.9(三)支持中文分词器

    首先将下载解压后的solr-4.9.0的目录里面F:\tools\开发工具\Lucene\solr-4.9.0\contrib\analysis-extras\lucene-libs找到lucene- ...

  10. VS报:"dll标记为系统必备组件,必须对其进行强签名"错误

    问题: VS生成程序时,报“要将程序集“XX.dll”标记为系统必备组件,必须对其进行强签名.”错误. 解决方法: 1)在报错的解决方案中找到一个可以发布的项目(引用该XX.dll的项目未必可以发布) ...