You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
2.8 KiB
131 lines
2.8 KiB
7 years ago
|
## Software Engineering
|
||
|
|
||
|
### Software Engineering: The Basics
|
||
|
|
||
|
Topics to review so you don't get weeded out.
|
||
|
|
||
|
[Five essential screening questions](https://sites.google.com/site/steveyegge2/five-essential-phone-screen-questions):
|
||
|
* Coding - writing simple code with correct syntax (C, C++, Java).
|
||
|
* Object Oriented Design - basic concepts, class models, patterns.
|
||
|
* Scripting and Regular Expressions - know your Unix tooling.
|
||
|
* Data Structures - demonstrate basic knowledge of common data structures.
|
||
|
* Bits and Bytes - know about bits, bytes, and binary numbers.
|
||
|
|
||
|
Things you absolutely, positively **must** know:
|
||
|
* Algorithm complexity
|
||
|
* Sorting - know how to sort, know at least 2 O(n log n) sort methods (merge sort and quicksort)
|
||
|
* Hashtables - the most useful data structure known to humankind.
|
||
|
* Trees - this is basic stuff, BFS/DFS, so learn it.
|
||
|
* Graphs - twice as important as you think they are.
|
||
|
* Other Data Structures - fill up your brain with other data structures.
|
||
|
* Math - discrete math, combinatorics, probability.
|
||
|
* Systems - operating system level, concurrency, threads, processing, memory.
|
||
|
|
||
|
### Software Engineering: The Full Topics List
|
||
|
|
||
|
A much longer and fuller list of topics:
|
||
|
|
||
|
* Algorithm complexity
|
||
|
|
||
|
* Data structures
|
||
|
* Arrays
|
||
|
* Linked lists
|
||
|
* Stacks
|
||
|
* Queues
|
||
|
* Hash tables
|
||
|
* Trees
|
||
|
* Binary search trees
|
||
|
* Heap trees
|
||
|
* Priority queues
|
||
|
* Balanced search trees
|
||
|
* Tree traversal: preorder, inorder, postorder, BFS, DFS
|
||
|
* Graphs
|
||
|
* Directed
|
||
|
* Undirected
|
||
|
* Adjacency matrix
|
||
|
* Adjacency list
|
||
|
* BFS, DFS
|
||
|
* Built-In Data Structures
|
||
|
* Java Collections
|
||
|
* C++ Standard Library
|
||
|
* Sets
|
||
|
* Disjoint Sets
|
||
|
* Union Find
|
||
|
* Advanced Tree Structures
|
||
|
* Red-Black Trees
|
||
|
* Splay Trees
|
||
|
* AVL Trees
|
||
|
* k-D Trees
|
||
|
* Van Emde Boas Trees
|
||
|
* N-ary, K-ary, M-ary Trees
|
||
|
* Balanced Search Trees
|
||
|
* 2-3 Trees, 2-4 Trees
|
||
|
* Augmented Data Structures
|
||
|
|
||
|
* Algorithms
|
||
|
* NP, NP-Complete, Approximation Algorithms
|
||
|
* Searching
|
||
|
* Sequential search
|
||
|
* Binary search
|
||
|
* Sorting
|
||
|
* Selection
|
||
|
* Insertion
|
||
|
* Heapsort
|
||
|
* Quicksort
|
||
|
* Merge sort
|
||
|
* String algorithms
|
||
|
* String search methods
|
||
|
* String manipulation methos
|
||
|
* Recursion
|
||
|
* Dynamic programming
|
||
|
* Computational Geometry
|
||
|
* Convex Hull
|
||
|
|
||
|
* Object Oriented Programming
|
||
|
* Design patterns
|
||
|
|
||
|
* Bits and Bytes
|
||
|
|
||
|
* Mathematics
|
||
|
* Combinatorics
|
||
|
* Probability
|
||
|
* Linear Algebra
|
||
|
* FFT
|
||
|
* Bloom Filter
|
||
|
* HyperLogLog
|
||
|
|
||
|
* Systems Level Programming
|
||
|
* Processing and threads
|
||
|
* Caching
|
||
|
* Memory
|
||
|
* System routines
|
||
|
* Messaging Systems
|
||
|
* Serialization
|
||
|
* Queue Systems
|
||
|
|
||
|
* Scaling
|
||
|
* Parallel Programming
|
||
|
* Systems Deisng
|
||
|
* Scalability
|
||
|
* Data Handling
|
||
|
|
||
|
* Crypto and Security
|
||
|
* Information Theory
|
||
|
* Parity and Hamming Code
|
||
|
* Entropy
|
||
|
* Hash Attacks
|
||
|
|
||
|
* Unix
|
||
|
* Kernel Basics
|
||
|
* Command Line Tools
|
||
|
* Emacs/Vim
|
||
|
|
||
|
* Supplemental topics
|
||
|
* Unicode
|
||
|
* Garbage Collection
|
||
|
* Networking
|
||
|
* Compilers
|
||
|
* Compression
|
||
|
* Endianness
|
||
|
|