F家的算法:


1. F家的题基本上都是Leetcode 的原题和变种。把leetcode的题研究透就OK了。




2. 跟F家的HR 聊过, 如果你想拿到面试官的strong recommendation, 需要在一

轮面试中做完两道题。每题15-17分钟完成,包括和面试官讨论,写代码,以及写test

case 的时间, 同时尽量bug free, 不一定要optimal solution。

3. 时间很紧,所以要多练习白板码,多练习在白板上跑test case。写多了就会发

现,白板码上写出bug的概率比用电脑写低很多, 因为白板上可以通过图表的形式很直

观的跑test case, 很容易发现bug。

4. 面试的时候,自己带fine tip marker, 比粗的笔写代码快很多。

G家的算法:


1. G家的题库很大,而且经常换新题,我面试的时候一道都没有见过,所以刷题用

处不大。

   G家的题基本上都是经典算法的变种。如果对经典算法很熟练,面试的时候很快

就可以想到解法。

  1. 复习经典算法,推荐看一下Sedgewick 教授的算法书。http://algs4.cs.princeton.edu/home/
    相比算法导论,我更推荐这本书,因为这本书的算法是用Java而不是伪代码实

现的,而且代码写的非常简洁而优雅。

    Sedgewick教授的书里没有 DP专门的章节,看看算法导论作为补充。




3. G家喜欢考各种tree:prefix tree,augmented binary search tree \(with

rank and select APIs), segment tree,binary index tree (1D and 2D),

interval tree, kd tree, quad tree.

4. G家喜欢考几何题,推荐:




       topcoder的教程:http://help.topcoder.com/data-science/competing-in-algorithm-challenges/algorithm-tutorials/




       Sedgwick的介绍几何算法(sweep line之类)的video:https://www.

youtube.com/watch?v=Igr6yONkpIQ

5. G家关于设计棋类游戏的AI的题,基本上都可以用MinMax 算法解决: http://neverstopbuilding.com/minimax




6. G家和F家都会考 Thread-Safe data structure和 Threading Pool,推荐阅读C

++ concurrency in action的第六章和第九章 http://www.manning.com/williams/

系统设计:

 1. 我基本没有web development的经验。和我一样0经验的同学可以先上一门课,

推荐Reddit Cofounder 开的web development

的课( 讲义和课程project都非常好):https://www.udacity.com/course/viewer\#!/c

-cs253/

 2. 对于distributed system不了解的同学,推荐coursera上的Cloud Computing

Concept:https://www.coursera.org/course/cloudcomputing

 3. 系统设计里边,最重要的部分是Data Storage和Data processing。




     Data storage包含:




          a. Distributed File System: 推荐看一下GFS的paper和FB Haystack

Photo storage的paper

          b. NoSQL Data storage: 推荐看一下Big Table的paper,了解一下

Cassandra 的架构:Cloud Computing Concept的课有讲

          c. Memcache




     Data processing:




          看一下Map-Reduce的paper。了解一下Map-Reduce能解决什么问题。如

何做job scheduling等等。

 4. 板上大牛收集的题库:https://www.evernote.com/shard/s21/sh/c2035c38-

1a80-4fd4-8c93-8ca0ad9ffb48/35079ac1bf5ae3ea

     大多数题,解题的时候,按三步走:




           a. 如果数据量小,如何在单机上实现。




           b. 如果数据量大,如何sharding data,如何实现scalability




           c. Fault tolerance,考虑有node failure和message loss的时候这

么处理。

results matching ""

    No results matching ""