Grokking Algorithms

First repo made to sharpen algorithm code exercises using Java and understand how GitHub versioning works. Also to practice algorithms from one of the best books I’ve seen to introduce oneself into Java. You can give a technical interview focused direction as this book is one of the best in the area covering:

  • The Interview Process: This section offers an overview on questions are selected and how you will be evaluated. What happens when you get a question wrong? When should you start preparing, and how? What language should you use?
  • Behind The Scenes: Learn what happens behind the scenes during your interview, how decisions really get made, who you interview with, and what they ask you.
  • Special Situations: This section explains the process for experience candidates, Program Managers, Dev Managers, Testers / SDETs, and more. Learn what your interviewers are looking for and how much code you need to know.
  • Before The Interview: In order to ace the interview, you first need to get an interview. This section describes what a software engineer’s resume should look like and what you should be doing well before your interview.
  • Behavioral Preparation: Although most of a software engineering interview will be technical, behavioral questions matter too. This section covers how to prepare for behavioral questions and how to give strong, structured responses.
  • Big O: This is a critical topic for an interview. In order to optimize your solution, you need to be able to discuss the efficiency of your algorithm. We’ll elaborate about what this book offers about Big O just below.
  • Technical Questions: This section covers how to prepare for technical questions (without wasting your time) and teaches actionable ways to solve the trickiest algorithm problems. It also teaches you what exactly good coding is when it comes to an interview.
  • The Offer and Beyond: Handling offers and rejections, evaluating the offer and moreover negotiation.

Big O

In computer science, Big O notation is used to classify algorithms according to how their run time or space requirements grow as the input size grows. This book covers the following topics:

  • An Analogy
  • Time Complexity
  • Space Complexity
  • Drop the Constants
  • Drop the Non-Dominant Terms
  • Multi-Part Algorithms: Add vs. Multiply
  • Amortized Time
  • Log N Runtimes
  • Recursive Runtimes
  • Examples and Exercises

Contents

  1. Arrays and Strings
  2. Linked Lists
  3. Stacks and Queues
  4. Trees and Graphs
  5. Bit Manipulation
  6. Math and Logic Puzzles
  7. Object-Oriented Design
  8. Recursion and Dynamic Programming
  9. Sorting and Searching
  10. Scalability and Memory Limits

Dependencies

This project was compiled using a simple project on NetBeans.

UPDATE: As NetBeans changed its name to Apache NetBeans I suggest you follow this link to know more.

Check the project here.

Tags: algorithms arrays exercises graphs java lists queues stacks strings trees