"In tech, interviews are harder than the actual jobs". This is a joke, but it can be true in many cases. Thus, in this article, you will see 7 GitHub repositories that will help you ace the interviews.
These repositories include information about:
- How the web works (DNS, HTTP, and many more subjects)
- Data Structures and Algorithms
- How to design large-scale systems (System Design)
- Application Security
1. Coding Interview University
The Coding Interview repository is one of the most comprehensive resources for interview preparation. The repository started as a study plan of the repository owner, which he used to become a software engineer.
In this repository, you can find information about Data Structures, Algorithms, Dynamic Programming, Object-Oriented Programming, Design Patterns and more.
I recommend you to check the repository here and explore it on your own. Be aware that it's comprehensive and you do not have to learn everything or everything at once. Nonetheless, the resource is extremely handy to prepare for interviews.
2. Tech Interview Handbook
Another useful resource is the Tech Interview Handbook. It covers information about technical interviews but not only. It also covers the job application (resume, cover letter), the interview process (behavioural questions, what questions to ask in the interview), and the post-interview (negotiation).
Thus, you learn more than just Data Structures, Algorithms and other technical subjects. The Tech Interview Handbook is a handy resource, and I encourage you to check it here.
3. The System Design Primer
For small side projects, we might get away without planning or too much thinking. However, building large-scale systems is a different game. Learning how to design scalable systems will help you become a software engineer.
Thus, the System Design Primer repository is a collection of materials and resources from the internet. The owner of the repository put together resources and materials from different sources. Besides, the repository is continuously updated, so keep an eye on it!
The repo contains a study guide, how to approach system design questions, and solutions to the questions. I highly recommend it, and I use it as well to learn more about designing scalable applications.
4. Interview Resources
The Interview repository does not have a description or a guide on how you should use it. It only lists links to other resources, and it groups these links by their topic. For instance, there is the Algorithms section that includes:
- Coding Practice
I like this repository in particular, because of the number of resources included. Also, I like that they are categorised by type. Besides that, it deserves an extra point for having similar repositories at the end. That is additional resources to prepare for your interviews. Do check out the repository!
5. How To Secure Anything
Security was, is, and will always be an essential topic when building applications. If your applications are not secure, it can result in disastrous consequences.
Therefore, security is not something to take lightly. As a result, here we have the repository How To Secure Anything. The nice thing about this repository is that the information applies to securing anything, not only applications. The repository owner claims to "aim to document a process for securing anything, whether it's a medieval castle, an art museum, or a computer network".
The repository is very well laid-out, and it includes a lot of extra materials to supplement your learning. I cannot recommend it enough!
6. How The Web Works
In the interview for my first developer job, I was asked: what happens when you type a URL in a browser?. Probably, you encountered the same question, or maybe you will in the future.
Thus, you can find the answer to such questions in the repo called How Web Works. You can find information about how DNS, HTTP protocol and server work or about DOM Tree, Render Tree, page painting and so on.
It is a handy repository to learn the basics of how the web works. Moreover, the repository includes additional links to explore some subjects in-depth.
Each Data Structure and Algorithm comes with its separate README, and it also includes links to further material. Thus, if you do not understand a concept, you can always follow the additional material for extra information.
Although I want to mention that some information might be scarce, and you might need additional learning material; nonetheless, the repository is excellent to practice Algorithms and Data Structures.
I hope these resources help you ace your next technical interview. The resources from the article are super helpful; especially if you use them together.
The list from the article is not exhaustive, but it should cover anything you might encounter in an interview. As always, I am open to suggestions. Thus, if you know other great resources, feel free to drop them in the comments!