This is the nuts and bolts of how to use AlgoDaily to prepare for your upcoming interviews. This series of lessons covers the platform, algorithmic thinking, and provides additional resources beyond this course. It's highly recommended that you cover most of these lessons before continuing into concepts around the actual interview questions.
This section is intended for folks trying to break into the software engineering field. If you're an experienced programmer looking to brush up on algorithms and data structures, we suggest you continue onto Pointers and Windows.
Pointers and Windows covers the most common type of programming interview questions: those involving arrays, vectors, and references. We first cover the basics of
strings and arrays, then we go through some important techniques, before launching you into some exercises to practice your knowledge.
In this section, we cover the use of
hash maps and
hash tables. It gets an entire section for itself given how commonly you'll use them in real-world solutions. We also start introducing you to a powerful technique,
dynamic programming, which can be used to solve some of the more challenging interview questions.
queues are incredibly helpful, as they serve as the foundation for many other future data structures and algorithms.
Knowledge of Trees and tree traversal algorithms are required to understand the inner workings of databases, autocompletion, file directories, and much more. As usual, you'll get a strong overview of what you need to know before we jump into some problems.
In programming, we use
graphs to model relationships between objects. Social media, map and GIS software, and the entire World Wide Web are built on top of these simple but foundational data structures.
If you've studied Computer Science, you've heard about recursion before. Recursion is the process of defining a problem in terms of itself, and is surprisingly handy when it comes to cracking tough programming interviews.
Some more challenging concepts that you may or may not see on game day. Worth checking out if you have plenty of time.
Systems design is the process by which we as engineers make decisions regarding the elements of a complex application. These system elements-- such as the data models and structures, overall architecture, modules and components, and the different interfaces of those components-- have to be carefully contemplated to ensure speed, reliability, and stability down the line.
This is an experimental section where we'll produce summarized outlines of highly respected and used technologies. All developers will need to know how to design strong systems, and knowing the basics of available components will be key to building reliable, maintainable, and secure software.
User interfaces are becoming increasingly complex, especially on the web. Frontend engineering questions are now fair game for all software engineers, as your user experience will be compromised until you've mastered this area.
This is a section covering what to do after landing the offer, with some tips around choosing the right company for you and figuring out what's next.