System Coding Interview preparation strategy?

Amazon
mj1

Go to company page Amazon

mj1
May 17, 2021 12 Comments

Hello Everyone,

I have seen Rubrik, Uber and Confluent asks System Coding questions.

System Coding questions are typically concurrency focused implementation.

For example: Design Scheduler Library, rate-limiter, logger and event bus.

So what strategy do you use? for example I use Java for implementation and read Concurrency in Practice. But still struggle a bit on identifying parts where the meat is😅 I mean thread-safety issues and so on.



TC: 46L INR
Base: 30L INR
Stock: 16L INR
YOE: 4.5 at Amazon and total 5 yoe

comments

Want to comment? LOG IN or SIGN UP
TOP 12 Comments
  • Amazon
    mj1

    Go to company page Amazon

    mj1
    OP
    Answering my own question:

    I’m particularly focusing on Java so answering from this perspective:

    0. Understand the source of race condition: check then act and it’s super-set read-modify-write

    1. Read book Concurrency in practice - follow standard problems and high level constructs where we need concurrency

    2. Learn from existing good design and their APIs:
    Google guava for cache APIs and rate limiter and for cache implementation caffeine can be looked into but that is too optimized and note possible to code but ideas can be shared with interviewer , resilience4j documents for API, LeveLDB: focus on immutability for simplifying concurrency,

    thread pool internals(worker, work and work-queue): https://salonegupta.wordpress.com/author/salonegupta/

    work-queue:- bounded blocking queue is the abstraction that drives most of cool task scheduling and delayed queue(leader and condition): https://deepakvadgama.com/blog/delayed-queue-internals/

    internals of future(useful in future mental model and object interactions): https://salonegupta.wordpress.com/2017/08/24/internals-of-java-futuret/

    3. practice standard question mentioned in question:
    Design Scheduler Library, rate-limiter, logger and event bus

    4. Understand notion of time and task scheduler in general

    5. File systems and OS supported interface in general

    4. Learn about blocking and non-blocking IO and relevant programming model.
    <Will update with more details>
    May 18, 2021 3
  • New
    orryb

    New

    orryb
    Take a look at how Clojure lang implements it in Java. They have very good abstract data types to handle different concurrency scenarios. Studying them you'll also understand tradeoffs between throughput , consistency, etc, since each ADT (it has three) serves a different purpose. Clojure runs on top of Java and is open source, you can look how a good design is done under the hood
    May 17, 2021 1
  • Uber
    bdhudjsksh

    Go to company page Uber

    bdhudjsksh
    TC or gtfo
    May 17, 2021 1
  • Amazon / Eng
    notInAmzn

    Go to company page Amazon Eng

    notInAmzn
    Can anyone experienced from Rubrik/Confluence comment on this?
    May 24, 2021 0
  • Google
    buqP33

    Go to company page Google

    buqP33
    Sub
    May 17, 2021 0