那些年美帝碼農找工做不能忘記的知識點

著做權歸做者全部。
商業轉載請聯繫做者得到受權,非商業轉載請註明出處。
做者:Sugar Su
連接:http://zhuanlan.zhihu.com/ms15213/20544226
來源:知乎

    1. 瞭解你所面試的公司:產品,成立時間,融資,競爭對手;公司列表java

    2. 分析算法的時間和空間複雜度(Big-O);python

    3. java/c++ 熟練掌握一門,python面試算法題其實也ok。linux

    4. 對語言的細節特性有足夠的理解,理解語言之間的差別,好比解釋執行vs編譯執行,java jvm, garbage collection等;c++

    5. 最好熟悉一門腳本編程語言如Python/ruby;面試

    6. 至少知道兩種n*log(n)的排序算法,好比快速排序和歸併排序。merge sort 很重要,好比K-way merge sorts;算法

    7. 掌握二分查找思想及應用場景,靈活處理相似問題,好比search in a sorted array查找、實現sqrt()等問題;sql

    8. Hashtable: 透徹理解Hashtable的原理、性能、碰撞處理,並能用array (in your favorate language) 來實現一個簡單的hashtable,考慮多線程的狀況;對於java的hashmap 要了解java hashmap和hashtable區別,concurrenthashmap, linkedhashmap.數據庫

    9. Binary Search Tree的基本操做好比添加、刪除節點,樹與其餘數據結構的相互轉化, BST刪除節點操做基本都會掛。編程

    10. 二叉樹的各類遍歷算法(前序、中序、後序、層序),根據遍歷結果重建二叉樹;設計模式

    11. K-ary trees(一個樹有k個children)/trie-tree的實現算法和應用場景;

    12. 大致瞭解一種平衡樹,好比(red/black tree, splay tree or AVL tree) , 好比知道treemap的內部實現是red/black tree, 瞭解database index 所用的b+ tree/b tree.

    13. 理解Min/Max heap的實現、各類操做時間複雜度和應用場景,熟練解決查找top(N)類型問題;

    14. Graph在內存中的三種構造方式(objects and pointers, matrix, and adjacency list);

    15. 遍歷算法BFS/DFS,分析時間和空間複雜度,以及具體實現

    16. 結合Graph常考的算法好比拓撲排序,最短路徑以及最小生成樹算法

    17. 掌握基本的Dynamic programing的思想,熟練解決基本的DP問題,好比兩字符串的最長子串,字符串之間的edit distance等;

    18. 理解操做系統中的進程、線程、以及它們之間的區別,理解系統併發操做中的常見問題(死鎖),以及如何使用locks, mutexes, semaphores來解決併發問題。

    19. 理解面向對象設計(封裝、繼承、多態),能把一個模糊定義的業務需求用OO的方式抽象(好比設計電梯、停車場等);設計模式:Singleton(線程安全版本)、factory等;

    20. java primitive type的內存(boolean: 1 byte, int: 4 bytes, long: 8 bytes),瞭解基本位操做;

    21. 理解分佈式系統的基本概念,解決的問題以及分佈式系統設計中CAP(Consistency, Availability, Partition)一致性、可用性、高性能之間的trade-offs;

    22. 瞭解一些網絡的基本知識tcp/ip三次握手, http/https區別,輸入 這個網址後會發生什麼;

    23. linux基本命令: kill -9, scp, ps -ef, netstat;

    24. sql數據庫基本知識:join,index,簡單的sql語句:從table中找出成績第二好的學生姓名;sql與nosql數據庫區別,簡單瞭解幾種nosql數據庫;

相關文章
相關標籤/搜索