
Introduction to Data Structures for Interviews
Learning Paths:
Topics:
Table of Contents
Introduction
Series Overview
Bianca Gandolfo introduces herself and the course, which is the second course in a series on Algorithms & Data Structures.Interview Process
Bianca 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 Mistakes
Bianca 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&A
Bianca 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 Structure
After 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 Overview
Bianca reviews the course agenda and tips on how better master the material.
Data Structures Overview
Types of Data Structures
Bianca reviews the types of data structures that commonly show up in interview questions, including Stacks, Queues, Linked Lists, Hash Tables, Arrays & Strings.Stacks & Queues
Bianca 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 Introduction
Bianca 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 Demo
Bianca 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 Cases
Bianca 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 Lists
Bianca prompts students to create art in the form of Stacks, Queues & Linked List data structures from memory.Stacks, Queues & Linked Lists Drawings
Bianca reviews the Stacks, Queues & Linked List data structures drawings that students created.Hash Tables
After 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 & Strings
Bianca 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 & Strings
In this exercise, students draw a hash table, array, and string data structures from memory.
Stack Data Structures
Overview & Stack Exercise
Bianca 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&A
Bianca takes questions from students about how best to approach the exercise questions, the overall scope of the course, and more.Stack: Push & Pop Methods
After 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 Cases
Bianca 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 Method
Bianca reviews the peek() method and then discusses other methods to consider such as a method that retrieves the length of the stack.Stack: Q&A
Bianca 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 Exercise
Bianca reviews the queue exercise prompt, including the constructor(), enqueue(), dequeue(), peek(), and expectations for implementing the Queue class.Queue: Method Usage
Bianca defines the expected outcomes from the methods in the queue data structure and discusses considerations when implementing the code.Queue: Enqueue & Dequeue
Bianca implements the constructor, enqueue(), and dequeue() methods.Queue: Q&A
Bianca addresses questions about the applications for stacks and queues, as well as the importance of considering space complexity.
Linked List Data Structures
Linked List Exercise
Bianca 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 & Constructor
Bianca defines the expected outcomes from the methods in the linked list data structure and implements the constructor() method.Linked List: Insert Method
Bianca illustrates the insert() method for a linked list.Linked List: Insert Q&A
Taking 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 Tail
Bianca demonstrates the removeTail() method for a linked list.Linked List: Q&A
Taking 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 & Contains
Bianca implements the isHead(), isTail(), and contains() methods.Linked List Commentary
Bianca reviews tips and tricks for learning critical concepts about a linked list from the students.
Hash Table Data Structures
Hash Table Exercise
After 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 & Insert
Bianca defines the expected outcomes from the methods in the hash table class, then implements the constructor and insert() methodsHash Table: Retrieve
Bianca demonstrates the retrieve() method in the hash table data structure.Hash Table: Remove
Bianca implements the remove() method in the hash table data structure.
Common Interview Questions
Overview
Bianca discusses resources for studying data structures.Stack & Queue
After 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 List
Bianca 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 & String
After reviewing additional problems provided to study hash table, array, and string data structures, Bianca offers several possible hash table exercises.
Course Review
Common Operations
Bianca discusses the time and space complexity of the data structures covered in the course.Data Structures Overview
Bianca illustrates common operations performed on the data structures previously discussed that might be asked in an interview situation.Other Considerations
Bianca 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 Resources
After providing additional resources for continued education, Bianca wraps up the course.