Websites to prepare for coding challenges
Resources that help with WhiteBoard Coding Interviews
A list of resources which I collected from many web Q&As related to this and in order of priority.
This is the list of books, sites, and courses I will be working with:
Books:
- Cracking the coding interview
- Introduction to Algorithms
- Programming Interviews Exposed
- Clean code
- Algorithm Design Manual
- How to Think About Algorithms
- Programming Pearls
- Data Structures And Algorithms Made Easy In Java 2nd Edition 2nd Edition
Websites:
- Interview Bit
- HackerRank
- Codewars
- Codefights
- AlgoExpert
- CarrerCup
- Interview Cake
- LeetCode
- Geeks for geeks
- Pramp
- HackerEarth
- HiredInTech
- Project Euler https://projecteuler.net/
- Codility
Courses:
- Coderust 2.0
TODO
- https://github.com/laaraujo/system-design-refresher/tree/main
- https://github.com/ashishps1/awesome-leetcode-resources
- https://www.youtube.com/@WilliamFiset-videos
- https://levelup.gitconnected.com/why-i-keep-failing-candidates-during-google-interviews-dc8f865b2c19
- https://betterprogramming.pub/concurrency-control-using-lambdas-and-sqs-99a21da892c0
- Become A Published App Developer In 4.5 hours - https://www.youtube.com/playlist?list=PL7NYbSE8uaBCvfw20f0Q6pNSGgiYGLwzI
Some Useful Resources for Coding Interviews
- Data Structures in Java: An Interview Refresher (https://www.educative.io/courses/data-structures-coding-interviews-java?affiliate_id=5073518643380224)
- Grokking the Coding Interview - (https://www.educative.io/courses/grokking-the-coding-interview?affiliate_id=5073518643380224)
- 10 Data Structure, Algorithms, and Programming Courses to Crack Interviews (https://dev.to/javinpaul/10-data-structure-algorithms-sql-and-java-courses-to-crack-any-programming-job-interview-11f6)
- 10 Algorithms Books Every Programmer should Read (https://www.java67.com/2015/09/top-10-algorithm-books-every-programmer-read-learn.html)
- 10 Free Courses to Learn Data Structure and Algorithms in Depth (https://www.java67.com/2019/02/top-10-free-algorithms-and-data.html)
- LeetCode - The Programming Interview Platform
- 20+ binary tree-based problems for interviews (https://medium.com/javarevisited/20-binary-tree-algorithms-problems-from-coding-interviews-c5e5a384df30)
- 10 Courses to Prepare for Programming Job Interviews (https://javarevisited.blogspot.com/2018/02/10-courses-to-prepare-for-programming-job-interviews.html)
- 50+ Data Structure and Algorithms Problems from Interviews (https://dev.to/javinpaul/50-data-structure-and-algorithms-problems-from-coding-interviews-4lh2)
- How to design Vending Machine in Java (https://javarevisited.blogspot.com/2016/06/design-vending-machine-in-java.html)
- 100+ Coding Interview Questions for Programmers (https://www.java67.com/2018/06/data-structure-and-algorithm-interview-questions-programmers.html)
- 21 String Programming Interview Questions (https://medium.com/javarevisited/top-21-string-programming-interview-questions-for-beginners-and-experienced-developers-56037048de45)
- 5 Free Courses to Learn Algorithms for Interviews (https://javarevisited.blogspot.com/2018/01/top-5-free-data-structure-and-algorithm-courses-java--c-programmers.html)
- 10 Books to Prepare Technical Programming/Coding Job Interviews (https://www.java67.com/2017/06/10-books-to-prepare-technical-coding-job-interviews.html)
https://www.geeksforgeeks.org/7-best-coding-challenge-websites-in-2020/?ref=leftbar-rightbar
https://www.geeksforgeeks.org/how-to-begin-with-competitive-programming/?ref=leftbar-rightbar
P.S. - Good knowledge of data structure and algorithms is the most important thing to do well on interviews and if you feel that you have forgotten those concepts or want to fill gaps in your understanding, here are some useful list of books and courses to learn Data Structure and Algorithms.
Faang interviews training
These tools will be helpful in developing the soft skills you need to perform well in your interviews.
- Jointaro.com
- Techleadpro.com
- Tech Interview Pro
- An interview prep course designed by a former Google software engineer that has instructional video modules on data structures & algorithms and systems design.
- It also grants access to a private Facebook group with over 1,500 former students who’ve used what they learned in the course to land jobs at big tech companies like Google and Facebook
- an interview prep course designed by a former Google software engineer.
- It includes over 20 hours of in-depth video content on both the technical and non-technical aspects of big tech interviews, and the founder holds bi-weekly Q&A sessions to answer your specific questions.
- InterviewBit : An interview prep program that offers tailored action plans based on your current preparation and goals. It has programming questions relevant to big tech companies like Google, Facebook, and Amazon
- Pramp : A site where you can take part in multiple mock interviews with other software engineers (some of whom have worked in FAANG companies like Facebook and Amazon) while receiving immediate, objective feedback on your performance
- Interviewing.io - you can do mock interviews with other software engineers and get immediate feedback on your performance.
https://www.18offers.com/?ref=medium.com
https://www.freecodecamp.org/news/software-engineering-interviews-744380f4f2af/
https://towardsdatascience.com/how-i-leetcode-for-6-months-and-land-a-job-at-amazon-b76bdfc79abb
https://kylelix7.github.io/How-I-leetcode-for-6-months-and-land-a-job-at-Amazon/
https://leetcode.com/problems/coin-change/
LeetCode vs CodeChef
When preparing for software engineering interviews why is CodeChef not as popular as LeetCode?
LeetCode is more popular because it’s focused on interview prep, while CodeChef is more focused on competitive programming.
To be more specific, LeetCode’s questions are usually slightly easier compared to CodeChef’s, and they’re designed to be as close to what you’d see in your technical interviews as possible. On the other hand, CodeChef’s questions are purposefully harder to better accommodate for its emphasis on competitive programming—it’s still a useful tool for learning more about data structures & algorithms, but it’s not optimized for interview preparation like LeetCode is.
Still, both sites neglect to cover a key component of software engineering interviews: soft skills. Despite what most programmers believe, every big tech recruiter is looking for a suite of non-technical skills—skills like communication, teamwork, and leadership—on top of the coding skills you’d expect. Failing to demonstrate that you have these soft skills is a surefire way to get overlooked, so given that you’re preparing for an interview, you may want to look into some other resources to help you out with this.
One resource you may want to check out is Tech Interview Pro, an interview prep course designed by a former Google software engineer. TIP includes over 20 hours of in-depth video content on both the technical and non-technical aspects of big tech interviews, and the founder holds bi-weekly Q&A sessions to answer your specific questions. There’s also Interviewing.io , where you can do mock interviews with other software engineers and get immediate feedback on your performance. Both tools will be helpful in developing the soft skills you need to perform well in your interviews.
To summarize, LeetCode is more popular than CodeChef because programmers are (on the whole) more interested in preparing for job interviews than they are in competitive programming. But to ensure your success in those interviews, you probably want to leverage a few other resources as well. Best of luck.
Helpful links and websites
https://github.com/codecrafters-io/build-your-own-x
The examples from this website are very very good: https://www.java2novice.com/
stack exchange : code golf tasks
https://www.logicbig.com/tutorials/spring-framework/spring-web-mvc/request-mapping-variants.html (not specifically this article - but there are many other articles in the site)
(In the order of quality of content - as I have seen from previous articles)
- https://www.javadevjournal.com/java-design-patterns/flyweight-design-pattern/
- https://springframework.guru/
- http://javarealtimequestions.blogspot.com/
- http://www.developersbook.com/jdbc/interview-questions/jdbc-interview-questions-faqs.php
- http://www.geekinterview.com/Interview-Questions/J2EE?gclid=CNiEs8S__6sCFRFU7AodD0sIow
- https://careydevelopment.us/
- https://docs.oracle.com/cd/E11035_01/wls100/ejb/design_best_practices.html
- https://howtodoinjava.com/series/interview-guides/
- https://javarevisited.blogspot.com/search/label/core%20java%20interview%20question
- https://javatute.com/
- https://jenkov.com/
- https://roytuts.com/
- https://sites.google.com/site/sureshdevang/design-pattern-example
- https://www.bezkoder.com/category/full-stack/
- https://www.roseindia.net/interviewquestions/design-patterns/
- https://www.javastackflow.com/
What made you good at competitive programming?
Sameer Gulati , International Master at Codeforces Updated August 7, 2019 · Upvoted by Kritika Rupauliha , B. Tech Computer Science Engineering & Computer Programming, ITM Universe Gwalior, Sithouli Campus (2021)
Lots of practice and a good practising strategy. Having a bad practice strategy (only solving easy problems, never upsolving, etc.) is very inefficient so it takes a lot of time to improve and can be discouraging as well.
This is the practising strategy I recommend-
Take part in as many contests as you can. After each contest solve at least 1-2 problems above your level.
If you find a new concept that was used to solve this problem -> Find a good tutorial on that concept and learn it (or find it here - Sameer Gulati’s answer to What is a list of data structures that a competitive programmer must know?) . Most likely at the end of that tutorial there will be some practice problems. Try to do 5-15 problems (can be much higher for some things like Dynamic Programming) until you get sort of an intuition for it.
Your rating will go down at first but you will be practising your problem solving skills and contest skills simultaneously so I find this method better than just practising without taking part in contests.
The contests you should take part in for this strategy depends on your level
For Beginners-
Codechef Long Contests and Cook offs
Codeforces Contests (all of them)
Atcoder Beginner Contests
For Experienced (1600+ on Codeforces)-
Atcoder Contests (all of them)
Codechef Cook offs
Codeforces Contests (all of them)
You can participate virtually on Codeforces in case there is no online contest.