1 minute read

Intro

Some weeks ago, I remember being completely destroyed on an interview. This interview was a really challenging one for a very interesting position. I was not actively looking for a change, but I decided to give it a try. Most of its questions took me by surprise. However, I must confess that they were quite effective in the way of testing how much you know about the basics.

It was a great opportunity to evaluate myself and identify topics I really need to dive deeper. Here are the questions.

The Questions

  1. How can I implement equals in terms of hash in Java?
  2. How is equals implemented in Scala ?
  3. How index works on relational DB?
  4. Explain ACID
  5. How atomicity is implemented?
  6. What is consistency in Relational Database?
  7. Why Redis is so fast? How it is implemented?
  8. How is Kafka implemented?
  9. How consumer group works?
  10. Time Complexity for get and size operation on a Linked List
  11. Complexity of finding an element in an unsorted list
  12. Complexity of finding an element in a sorted list
  13. How is HashMap implemented?
  14. How Docker works internally?
  15. What is an ADT in Scala
  16. What is Typeclass? What is its difference with interface?
  17. How Future is schedule? Can I guarantee execution order?
  18. I have a filesystem of one directory containing files that has strings inside. How can I detect all duplicates?
  19. What is this in javascript
  20. How can I define an ADT in Typescript?
  21. How Nodejs Event Loop works?

Conclusion

I think than taking interviews from time to time is great for keeping in shape. You don’t know when you are going to go back to the interview market. However, it is better to start preparing from now, step by step, one question at a time.

Also, I’m planning to start answering those questions regularly on this blog. It would be a nice chance to keep this blog active.