Elwin's Blog

an activist who likes to think

front cover

The Fundamental Of Coding Interview Question part 4 (Javascript)

Posted on

System Design and Scalability

this section is more related to the back-end than the front-end, but it's good to know from a broader view:

  • Communication: it's more important in the system design than dealing with a specific coding algorithm question. because most of the time, a lot of details won't be covered in the problem description, so the candidate should communicate with the interviewer to avoid unnecessary assumptions.
  • Start from a broad view: otherwise it's easy to miss important tips in the description.
  • List your assumption or state them: this will allow the interviewer to correct me if the candidate gets it wrong.
  • Implementation: all the talking but not being able to actually implement it will hardly persuade your interviewer.

Steps about implementation:

  1. Make sure I understand the question.
  2. Develop a solution without the limitation of the question to get the general guideline for my solution.
  3. Now, add the limitation back, how will you improve it to fit the question? (limitation might be something like limited memory, time complexity, or space complexity.)

Keys Concepts:

  • Scaling(Horizontal, Vertical)
  • Load Balancer
  • Caching
  • Asynchronous Processing & Queues
  • Database Partitioning(Sharding)
  • Database Denormalization(for relational Database)
  • Networking Metrics(Bandwidth, Latency, Throughput)
  • MapReduce(a combination of Map step with Reduce step, used when processing huge amounts of data)

Other topics to be aware of:

  • Failures
  • Availability and Reliability
  • Read-heavy or Write-heavy
  • Security