📚 Books
"Cracking the Coding Interview" by Gayle Laakmann McDowell: This book is a popular resource for software engineers preparing for coding interviews. It covers a wide range of topics, including data structures, algorithms, and system design. The book also includes practice problems and solutions.
"Programming Interviews Exposed" by John Mongan, Eric Giguère, and Noah Kindler: This book covers a wide range of topics related to software engineering interviews, including algorithms, data structures, and system design. The book also includes practice problems and solutions.
"Elements of Programming Interviews" by Adnan Aziz, Tsung-Hsien Lee, and Amit Prakash: This book offers a comprehensive guide to software engineering interviews, with a focus on coding problems and challenges. The book covers a wide range of topics, including algorithms, data structures, and system design. The book also includes practice problems and solutions.
"The Google Resume" by Gayle Laakmann McDowell: This book offers advice and tips for software engineers preparing for interviews at top tech companies, with a focus on Google. The book covers a wide range of topics, including resume writing, interview preparation, and negotiating job offers.
"Ace the Programming Interview" by Edward Guiness: This book offers advice and tips for software engineers preparing for coding interviews. The book covers a wide range of topics, including data structures, algorithms, and problem-solving techniques. The book also includes practice problems and solutions.
🎧 Online courses
Codecademy
Codecademy is a popular online platform that provides interactive programming courses in a variety of programming languages, including Python, Java, and Ruby. With its hands-on approach, Codecademy is a great resource for software engineers who want to learn new programming skills or brush up on existing ones. The platform also offers paid courses for more advanced topics.
HackerRank
HackerRank is a website that provides coding challenges and contests to help developers hone their skills. With challenges in a wide range of difficulty levels and categories, HackerRank can help software engineers improve their problem-solving abilities and stay sharp.
Udemy
Udemy is an online learning platform that offers courses in a wide range of topics, including software engineering. With over 130,000 courses available, Udemy is a great resource for software engineers who want to learn about specific technologies, frameworks, or programming languages.
Stack Overflow
Stack Overflow is a popular online community where developers can ask and answer programming-related questions. With over 10 million registered users, Stack Overflow is a great resource for software engineers who need help with specific coding challenges or want to learn from the experience of others in the industry.
GitHub
GitHub is a web-based platform for version control and collaboration that is widely used by software engineers. With its repository hosting and code review features, GitHub is a great resource for software engineers who want to collaborate on open source projects or showcase their work to potential employers.
Coursera
Coursera is an online learning platform that partners with universities and organizations to provide courses and certificates in a variety of fields, including computer science and software engineering. With courses from top universities like Stanford and MIT, Coursera can be a great resource for software engineers who want to learn about cutting-edge technologies and techniques.
Medium
Medium is an online publishing platform that is popular among software engineers for its wealth of technical articles and tutorials. With articles from experts in the industry, Medium can be a great resource for software engineers who want to stay up-to-date with the latest trends and best practices.
CodePen
CodePen is a social development environment for front-end developers. With its online editor and social features, CodePen is a great resource for software engineers who want to experiment with code, collaborate on projects, or showcase their work to potential employers.
Hacker News
Hacker News is a social news website that is focused on technology and startups. With its community-driven content and discussions, Hacker News can be a great resource for software engineers who want to stay informed about the latest industry news and trends.
LinkedIn Learning
LinkedIn Learning is an online learning platform that offers courses in a variety of fields, including software engineering. With courses taught by industry experts and access to LinkedIn's vast network of professionals, LinkedIn Learning can be a great resource for software engineers who want to advance their careers.
✏️ Practice websites
LeetCode: LeetCode is a popular platform that offers coding challenges for software engineers. The platform covers a wide range of topics, including algorithms, data structures, database design, and system design. The challenges are arranged by difficulty level and come with detailed solutions and explanations.
HackerRank: HackerRank is another popular platform that offers coding challenges and contests for software engineers. The platform covers a wide range of topics, including algorithms, data structures, and machine learning. The challenges are arranged by difficulty level and come with detailed solutions and explanations.
Codecademy: Codecademy is a popular platform that offers interactive coding lessons and exercises for software engineers. The platform covers a wide range of topics, including web development, data science, and computer science fundamentals. The lessons are arranged by difficulty level and come with detailed explanations and examples.
Exercism: Exercism is a unique platform that offers practice problems and exercises in various programming languages. The platform encourages collaborative learning and offers a mentorship program for users who want personalized feedback on their code.
Codewars: Codewars is a platform that offers coding challenges and exercises in a gamified format. The challenges are arranged by difficulty level and come with detailed solutions and explanations. Users can earn points and compete against other users on the platform.
Project Euler: Project Euler is a platform that offers challenging math and programming problems for software engineers. The problems are arranged by difficulty level and cover a wide range of topics, including number theory, combinatorics, and graph theory.
👯♀️ Mock interviews
Interviewing.io: This website allows you to practice technical interviews anonymously with engineers from top companies.
Gainlo: Gainlo offers mock interviews with real engineers from top tech companies like Google, Facebook, and Amazon.
Pramp: Pramp provides peer-to-peer mock interviews with other software engineers, as well as video interviews with experienced mentors.
Codility: Codility offers coding challenges and assessments to help you prepare for technical interviews.
HackerRank: HackerRank provides coding challenges and competitions, as well as interview preparation resources and mock interviews.
LeetCode: LeetCode offers a collection of coding problems and challenges, as well as a mock interview feature with real engineers.
Interview Cake: Interview Cake provides a collection of coding questions and a mock interview platform to help you prepare for technical interviews.
ChatGPT: You can generate a mock interview script with ChatGPT. Try this prompt:
generate a script for a mock software system design interview for a mid-level to senior candidate, designing a crowdsourced incident reporting platform
- try altering the scope & topic of the technical test to suit your needs.
📗 Technical blogs
Mozilla Hacks: Mozilla Hacks is a technical blog by Mozilla, the creators of the Firefox browser. It covers topics such as web development, browser APIs, and more.
Microsoft Developer Blogs: Microsoft Developer Blogs cover a range of topics related to Microsoft's technology stack, including .NET, Azure, and more.
AWS Developer Blog: The AWS Developer Blog is a technical blog by Amazon Web Services that covers topics related to cloud computing, DevOps, and more.
GitHub Blog: The GitHub Blog covers a range of topics related to software development, including open source, Git, and more.
IBM Developer Blogs: IBM Developer Blogs cover a range of topics related to IBM's technology stack, including AI, cloud computing, and more.
Red Hat Developer Blog: The Red Hat Developer Blog covers topics related to open source technologies, such as Kubernetes, Java, and more.
Twilio Blog: The Twilio Blog covers topics related to communications technology, such as APIs, messaging, and more.
The Google Developers Blog: an online platform maintained by Google that features articles, tutorials, and news related to software development. It covers a wide range of topics, including mobile app development, web development, cloud computing, machine learning, and more.
💻 LeetCode
LeetCode is a popular platform for practicing and improving your coding skills. Here are some general tips for using LeetCode to prepare for a software engineering interview:
Start by resolving simple and moderately challenging puzzles to get a feel for the platform and hone your coding abilities.
As you advance, concentrate on resolving issues that are associated with the technologies and abilities mentioned in the job posting.
Practice problem-solving under time pressure to better prepare for the time restrictions of a real interview.
Pay attention to the solutions and explanations provided for each problem. These can help you learn new techniques and approaches to solving problems.
Consider joining online communities or forums, such as the LeetCode forums or Reddit's r/cscareerquestions, where you can discuss problems and solutions with other users.
Practice solving problems in a whiteboard setting. This will help you prepare for the common practice of writing code on a whiteboard during an interview.
Example Leetcode problems:
Two Sum: Given an array of integers, return the indices of the two numbers such that they add up to a specific target.
Add Two Numbers: Given two linked lists representing two non-negative integers, add the two numbers and return the sum as a linked list.
Median of Two Sorted Arrays: Given two sorted arrays, find the median element (or the average of the two middle elements if the combined array has an even length).
Longest Substring Without Repeating Characters: Find the length of the longest substring without repeating characters.
Spiral Matrix: Given a matrix of integers, return the elements of the matrix in spiral order.
Video Playlist: Leetcode BLIND-75 Solutions