rlee0525 / TechnicalConceptsForInterviews

Various technical concepts for interviews - Feel free to contribute and make it better!

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Technical Concepts For Interviews

Study guide to prepare for technical interviews. Feel free to contribute and help improve the repo!

  • Overview
  • High level overview of architecture questions / concepts
  • RDBMS vs. NoSQL
  • Row store vs. Column store
  • Hadoop vs. NoSQL
  • Common types of NoSQL
  • Basic frontend terms and concepts
  • HTML and CSS specific frontend interview questions
  • What is a hash table?
  • What are hash collisions?
  • Open Addressing
  • Linear and Quadratic Probing
  • Separate Chaining – Robin Hood Hashing – Cuckoo Hashing
  • HTTP headers
  • Request methods
  • Cookies
  • JavaScript: Basics and Tricky Questions
  • Node / Express / Readline / FS / Stream / etc.
  • What is OOP?
  • Why OOP?
  • Key Concepts
  • Pointers
  • Memory Allocation
  • Mutex vs. Semaphore
  • Thread locking
  • High-level thoughts
  • Bubble sort
  • Selection sort vs. Insertion sort
  • Quick sort
  • Merge sort
  • Heap sort
  • Bucket sort
  • Radix sort
  • Why is Quicksort preferred?
  • More basic concepts before reading the architecture section
  • Example questions
  • Twitter
  • Instagram
  • CheatSheet - System Design
  • How would you design a URL Shortner?
  • What really happens when you navigate to a URL
  • What is a web crawler?
  • How does it work?
  • Speeding up your website
  • What is WebSocket?
  • Contrast to other alternatives
  • Resources
  • HTTP vs. HTTPS
  • XSS vs. CSRF
  • Web server vs. Application server
  • Cookie / SessionStorage / LocalStorage
  • Cookies vs. Tokens

More Topics...

Feel free to work on any of these and make a pull request!

  • API Design and Webhooks
  • Topological Sort, Dijkstra's Algorithm, Priority Queue
  • Rabin-Karp Substring Search
  • AVL Trees / Self-balancing BST
  • Red-Black Trees
  • MapReduce
  • Bellman-Ford Algorithm
  • Floyd-Warshall Algorithm
  • Minimum Spanning Trees

How To Contribute

To fix a bug or create a feature, follow these steps:

  1. Fork the repo
  2. Create a new branch (git checkout -b awesome-feature)
  3. Make changes or add new changes.
  4. Commit your changes (git add -A; git commit -m 'Awesome new feature')
  5. Push to the branch (git push origin awesome-feature)
  6. Create a Pull Request!

Please click here to report an issue or request a new feature.

... or simply star the repo!

Contributors

About

Various technical concepts for interviews - Feel free to contribute and make it better!