Tech Interviews Preparation Guide
Tech Interviews Preparation Guide
Tech Interviews Preparation Guide
Guide
Data Structure and Algorithms
Familiarize yourself with data structures and algorithms. These are essential to coding
interviews.
Helpful Links
● https://www.journaldev.com/1260/collections-in-java-tutorial
● https://www.javacodeexamples.com/java-collection-framework-tutorial-with-exam
ples/1641
● https://www.baeldung.com/java-collections-interview-questions
● https://www.lavivienpost.com/top-interview-questions-and-big-o-notation-cheat-sh
eets/
● https://www.lavivienpost.com/data-structures-and-algorithms/#api
Disclaimer: The interviews are not limited to the topics presented here. This guide presents the most
common concepts asked during technical Java backend interviews and it should only be used as a
reference to study.
Code Challenge
Goal: These questions gauge your knowledge of data structures and algorithms to optimize a
solution to common problems.
● https://leetcode.com
● https://www.hackerrank.com
● https://codesignal.com
Tips
● Practice with sites above. Start practicing simple coding problems. This will make it
easier down the line to tackle harder questions.
● It’s important to consider runtime and memory complexity (both! - do not forget about
space complexity) for each solution.
● Usually the coding challenges are easy to medium. In really rare situations you will get
a hard one.
● Many candidates start coding as soon as they hear the question. That is usually a big
mistake. First, take a moment and repeat the question back to the interviewer to make
sure that you understand the question.
● After you have sufficiently clarified the scope and intention of the problem, explain your
high-level approach to the interviewer, even if it is a naive solution.
● Communicate with the interviewer!!! Explain your thought process while doing the code
challenge.
● Start simple and improve! Candidates usually get stuck trying to come up with the best
solution. It is not bad to start with a not optimized solution (even brute force) and then
improve later.
● Time management is important. Code challenges are usually planned for 40 minutes.
Time yourself while practicing.
● Make sure your code is organized and well structured. You will be evaluated on this.
● Testing your code is as important as completing the code challenge. Test your code
with different scenarios from the ones given by the interviewer.
● Know the common pitfalls. There are two big pitfalls when it comes to a coding
interview: not articulating your problem-solving process and not knowing the Big-O
complexity of an algorithm. Keep these pitfalls in mind as you work.
Disclaimer: The interviews are not limited to the topics presented here. This guide presents the most
common concepts asked during technical Java backend interviews and it should only be used as a
reference to study.
System Design
Goal: These questions gauge your ability to handle high-level system design with
scalability in mind.
● Client-Server Model
● Network Protocols
● Storage
● Latency and Throughput
● Availability
● Caching
● Proxies
● Load Balancers
● Hashing
● Databases (Relational and Non-relational)
● Replication and Sharding
● Leader Election
● Rate Limiting
● Publish/Subscribe Pattern
● Map Reduce
● REST APIs
Question Samples:
● https://www.educative.io/blog/top-10-system-design-interview-questions
● https://www.educative.io/courses/grokking-the-system-design-interview (check
the free samples)
● https://github.com/donnemartin/system-design-primer/blob/master/README.md#
index-of-system-design-topics
Tips
● Practice at least one!
● Watch videos of system design interviews on youtube.
Disclaimer: The interviews are not limited to the topics presented here. This guide presents the most
common concepts asked during technical Java backend interviews and it should only be used as a
reference to study.