Introduction to Data Structures for Interviews
Table of Contents
Series OverviewBianca Gandolfo introduces herself and the course, which is the second course in a series on Algorithms & Data Structures.
Interview ProcessBianca gives a synopsis of the interview stages: Resume, Coding Challenge, Recruiter Phone Screen, Technical Phone Screen and then the Onsite Interview. Within each step, Bianca covers what to expect, and the skills required to succeed at each interview stage.
Common Interview MistakesBianca describes what employers may be looking for in a potential employee, and the most common mistakes in a resume or job application, the coding challenge, the recruiter phone screen, the technical phone screen, and the onsite interview.
Interview Questions Q&ABianca answers student questions about her experience succeeding in interviews, how to answer tough questions such as, "Why should we hire you?", her thoughts on web presence, how to deal with technical interview questions that you don't know the answer to, how to remain authentic when you hit a speed bump while talking through a problem, the importance of learning the fundamentals to succeed in interviews, and more.
Data StructureAfter introducing data structures, which are a way of organizing data so that the data can be used efficiently, Bianca emphasizes that learning data structures are also about learning to solve abstract problems. Then Bianca discusses ordered versus hierarchical data structures and the importance of structure data correctly to best access and store data.
Course OverviewBianca reviews the course agenda and tips on how better master the material.
Data Structures Overview
Types of Data StructuresBianca reviews the types of data structures that commonly show up in interview questions, including Stacks, Queues, Linked Lists, Hash Tables, Arrays & Strings.
Stacks & QueuesBianca discusses stack and queues comparing the two data structures. Then Bianca introduces time complexity, which is the computational complexity that describes the amount of time it takes to run an algorithm.
Linked List IntroductionBianca introduces the linked list as both a vital data structure to know for interviews and its applications in non-dynamic programming. - [LINK TO BY REFERENCE BY VALUE HERE]
Linked List DemoBianca demonstrates how the linked list is structured and explains how a doubly-linked list may be beneficial over a singly-linked list.
Link List Use CasesBianca discusses use cases of linked lists including use in stack/queues, caching, and handling of hash table collisions. Answering a question from a student, Bianca shows what a doubly-linked list would look like in pseudocode.
Draw Stacks, Queues & Linked ListsBianca prompts students to create art in the form of Stacks, Queues & Linked List data structures from memory.
Stacks, Queues & Linked Lists DrawingsBianca reviews the Stacks, Queues & Linked List data structures drawings that students created.
Hash TablesAfter discussing the benefits and disadvantages of a hash table data structure, Bianca explains how a hash table structured, with notes on its time complexity, and its applications.
Hash Tables Use Cases, Arrays & StringsBianca explains the application of a hash table in objects, ES6 Sets, and ES6 Maps. Then Bianca discusses arrays and strings in the context of data structures.
Draw Hash Tables, Array & StringsIn this exercise, students draw a hash table, array, and string data structures from memory.
Stack Data Structures
Overview & Stack ExerciseBianca discusses the implementation and application of the data structures. She brings up the importance of considering both time and space complexity in the code. She then starts the exercises by explaining how to find the prompts, how the constructor() method works, the private variable's constraints within the constructor, and the push(), pop(), and peek() methods, as well as general expectations for the stack class exercise.
Exercise Prep Q&ABianca takes questions from students about how best to approach the exercise questions, the overall scope of the course, and more.
Stack: Push & Pop MethodsAfter explaining the process of live coding the solutions, Bianca defines the logic behind the push() method in the stack data structure. After defining the logic behind the pop() method, Bianca implements the constructor(), push(), and pop() methods.
Stack: Edge CasesBianca discusses edge cases to consider in the stack data structure. Bianca then revisits an earlier point regarding type checking when pushing to the stack and what to do if pop() is invoked, but the stack is empty.
Stack: Peek MethodBianca reviews the peek() method and then discusses other methods to consider such as a method that retrieves the length of the stack.
Stack: Q&ABianca answers questions from students about the challenges with the implementation of the stack data structure and the usage of private variables.
Queue Data Structures
Queue ExerciseBianca reviews the queue exercise prompt, including the constructor(), enqueue(), dequeue(), peek(), and expectations for implementing the Queue class.
Queue: Method UsageBianca defines the expected outcomes from the methods in the queue data structure and discusses considerations when implementing the code.
Queue: Enqueue & DequeueBianca implements the constructor, enqueue(), and dequeue() methods.
Queue: Q&ABianca addresses questions about the applications for stacks and queues, as well as the importance of considering space complexity.
Linked List Data Structures
Linked List ExerciseBianca explains the linked list exercise prompt, including the constructor(), insert(), remove(), contains(), and expectations for implementing the LinkedList class. Then, Bianca discusses the private variable's usage and constraints.
Linked List: Usage & ConstructorBianca defines the expected outcomes from the methods in the linked list data structure and implements the constructor() method.
Linked List: Insert MethodBianca illustrates the insert() method for a linked list.
Linked List: Insert Q&ATaking questions from students, Bianca clarifies how the linked list is structured using an interactive diagram and reviews alternative ways that the linked list might be implemented.
Linked List: Remove TailBianca demonstrates the removeTail() method for a linked list.
Linked List: Q&ATaking questions from students, Bianca discusses considerations in the linked list when writing functions outside of the class, expectations for interview questions regarding linked lists, and more.
Linked List: Head, Tail & ContainsBianca implements the isHead(), isTail(), and contains() methods.
Linked List CommentaryBianca reviews tips and tricks for learning critical concepts about a linked list from the students.
Hash Table Data Structures
Hash Table ExerciseAfter illustrating the hash table exercise prompt, including the time complexity of insert(), remove(), retrieve(), Bianca talks about the considerations when implementing the hash table class, including collisions and resizing.
Hash Table: Usage, Constructor & InsertBianca defines the expected outcomes from the methods in the hash table class, then implements the constructor and insert() methods
Hash Table: RetrieveBianca demonstrates the retrieve() method in the hash table data structure.
Hash Table: RemoveBianca implements the remove() method in the hash table data structure.
Common Interview Questions
OverviewBianca discusses resources for studying data structures.
Stack & QueueAfter explaining the additional problems around studying stack and queue data structures, Bianca describes using an array to implement three stacks, codes a getMin() or getMax() in a stack, creating a queue using stack, sorting a stack, and writing a function that returns true if a string of brackets is valid.
Linked ListBianca explains the extra problems provided to study linked list data structures including how to approach implementing methods that delete specific nodes and partitioning a linked list around a value, and more.
Hash Table, Array & StringAfter reviewing additional problems provided to study hash table, array, and string data structures, Bianca offers several possible hash table exercises.
Common OperationsBianca discusses the time and space complexity of the data structures covered in the course.
Data Structures OverviewBianca illustrates common operations performed on the data structures previously discussed that might be asked in an interview situation.
Other ConsiderationsBianca reviews other aspects to think about when implementing a data structure, including side effects, and optimization vs. readability, and how to ask for more information from an interviewer.
Additional ResourcesAfter providing additional resources for continued education, Bianca wraps up the course.