stongao / study_resources

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Interview Portfolio

My profiles


Preparation plan

C/C++ Programming

  • Topics
  • C programming books

Data structures

Study STL constructs and APIs, how is it implemented, what does compiler do when called specific API, complexities, limitations, how could sloppy code break it, how to use efficiently

  • arrays
    • Contiguous memory
    • vector vs array
    • uses in other data structs
    • stride length
  • linked lists
    • Dynamic memory and applications
    • Ways to improve efficiency
  • stacks
    • Implementation with array vs list
    • Common uses
  • queues
    • Implementation with array vs list
    • Common uses
  • priority queues
    • heap with array vs tree
    • heapify
    • heapsort
    • comparators
  • binary tree
  • binary search tree
  • hash table
    • map, unordered_map
    • hash functions
    • buckets
    • collisions and complexity

Algorithms

  • Big-o notation
  • Master theorem
  • Recursion
  • Backtracking
  • Sorting
  • Searching
  • Dynamic programming
  • Graph Algorithms

Operating systems

  • Process
  • Threads
  • Multithreading and concurrancy
  • Memory management
  • I/O management

Networking

  • Network stack
  • Layer 2 networks
    • Switching and forwarding
    • Collision, Broadcast domains, VLANS
    • Loops, Spanning Tree Protocol
    • Link aggregation
    • MPLS
    • Lossless ethernet
  • Layer 2 networks
    • IP header
    • IP addressing
    • Routing tables, longest prefix match
    • Routing protocols
    • OSPF
    • BGP

Resources

  1. Google Interview University
    Has a lot of links and resources for general coding interview preparation.
  2. Lost art of C structure packing Explains data structure padding
  3. Linux IP networking Linux networking stack in detail
  4. Introduction to distributed systems ETH Zurich course. Also covers very basic details.
  5. Concurrent Programming for scalable web architectures Gives an overview of issues in large scalable systems you should care about
  6. CS 417 Rutgers Distributed systems course at Rutgers. Pretty much covers everything.
  7. 100 most influential books
  8. OS Development (https://www.cs.bham.ac.uk/~exr/lectures/opsys/10_11/lectures/os-dev.pdf) (http://wiki.osdev.org/Getting_Started) (http://www.brokenthorn.com/Resources/OSDevIndex.html) (http://www.osdever.net/bkerndev/Docs/intro.htm)
  9. Beej's guide to network programming
    Guide to networking APIs in C
  10. Lets Build a webserver
  11. Programming in C UNIX system calls Everything related to c and UNIX in one place
  12. Linux Insides
    Linux insides for dummies
  13. FlingOS
    DIY OS with tutorials and lectures
  14. System design course Preparing for system design interview.
  15. System design interview resources Elaborate list of useful resources.
  16. Google site reliabilty engineer interview
  17. SYS admin casts
  18. Linux performance analysis tools
  19. Balthazars notes for preparing SRE interview

Papers/articles about architectural hows and whys

  1. Jupiter rising

About


Languages

Language:C++ 73.0%Language:Python 27.0%