
Discover nine reasons to take this course on 20 essential coding interview questions in Java and Python, featuring diagrams, illustrations, and pseudocode across Java and Python.
Showcases a software engineer's background: a computer science degree, six plus years in industry, and interviews at Microsoft, Google, and others; expertise in Java, Python, C++, Android, JavaScript, and Docker.
Explore my life through travel photography, drone shots from Prague to Mount Fuji, and mentoring consulting clients pursuing a computer science degree abroad in western countries.
Solve the contained duplicate problem by using a hash table to check if an array contains duplicates, illustrated with the example [1, 2, 3, 1].
Learn the prerequisites for coding interview questions by using Java or Python to traverse arrays and implement hash maps with key insertion and existence checks.
Explore detecting duplicates in an array through a visual breakdown, using a hash map to track seen numbers while scanning left to right, and compare brute force with optimal approaches.
Compare a brute force nested loop with an optimal single-pass linear scan, showing how fixing i and moving j improves efficiency.
Build a pseudocode algorithm using a hash map to detect duplicates in an array by a single left-to-right pass. Return true on first duplicate; return false if none exist.
Demonstrate a Java and Python solution for detecting duplicates in an array using a hash map, addressing corner cases and narrating code on a whiteboard during interviews.
Examine runtime and space complexity with a single-pass loop over items, noting that the map adds extra space in the worst case when items are unique.
Learn to identify the first non-repeating character in an array by distinguishing unique elements from duplicates, using an example where e is the only non-duplicate item.
Learn to traverse a string in Java and Python, visiting each character via char arrays or index-based loops. Apply hash map syntax as covered in prior lectures.
Break down the first unique character problem by illustrating a two-pass approach with a hashmap to count occurrences, then return the index of the first character with count one.
Compare brute force with nested loops to an optimal solution using a hash map to count characters. Then scan again to find the first unique character and return its index.
Translate a pseudocode algorithm with visualization into practical code by scanning a char array left to right, using a map to count occurrences, and locating the first unique character's index.
Explore pitfalls in turning pseudocode into real code, and implement a two-pass solution with a hashmap to find the first unique character, handling empty inputs and returning -1 if none.
Explore Big-O runtime and space complexity through a two-loop traversal and a hash map. The example yields O(n) time and O(n) space when the string is unique.
Discover how to find a pair of numbers that sum to a target, using an array and indices, illustrated with the target sum nine and the pair two and seven.
Practice iterating through array items using Java and Python syntax, with references to prior lectures and a cheat sheet on harsh table Pashto syntax.
Break down the problem by defining a target, identify a pair of numbers in an array, and find their indices. Next, learn how to locate the pair with a table.
Contrast brute force with costly runtime and the optimal solution using a map to find the complement via target minus X, enabling quick Y lookup and indices in pseudocode design.
Learn how to find pairs that sum to a target using a hash map, tracking indices, and visualizing the pseudocode algorithm step by step.
Implement a two-sum solution in Java using a hashmap to map values to indices, scanning left to right to find a pair that adds to the target, including corner cases.
Analyze the big-O runtime and space complexity of a single left-to-right array traversal, explain worst-case behavior, and highlight how input size drives resource usage.
learn to solve a large string problem using a two-pointer approach from the front and end toward the middle, a binary search style pattern, for coding interviews.
demonstrates the two-pointer technique with front and end pointers, showing how to increment and decrement to avoid crossing over.
Explain how to return a diverse order of a char array, using dog and cat examples to yield outputs like got or tuck.
Compare naive brute force with the optimal in-place two-pointer approach, avoiding array duplication while moving left and right toward the middle for space-time efficiency.
Visualize a pseudocode algorithm with two pointers, front and end, swapping elements via a helper function in constant space using a temp variable, with a while loop until pointers meet.
Learn a two-pointer array technique, handling zero or one element corner cases, and improving readability with a private helper to swap elements toward the middle.
Analyze the runtime and space complexity by visiting each item, determine the Big-O, and note constant space with three extra variables.
Explore the move zero problem in Java and Python, learning how to swap elements to move zeros to end and non-zeros to the front, while mastering the optimal in-place pattern.
Explore predict concepts and practice swapping using a SWAT function, as introduced in the prerequisites lecture for this course.
Break down the problem of moving zeros to the end in linear time while preserving the order of non-zero elements, for coding interviews in Java and Python.
Compare brute force and anti-patterns with an optimal single-pass, two-index in-place algorithm that partitions non-zero and zero sections, using boundary and swap operations to move non-zero elements forward.
This lecture visualizes a pseudocode algorithm with a two-pointer swap, guiding readers through boundary handling, runner index updates, and swapping non-zero and zero elements to reach the final array.
Explore a coding demo that implements a two-pointer technique to move non-zero elements to the front of an array, using a swap utility and a linear scan.
Explore how big-O time complexity grows with loops that visit each item once, analyze constant space usage, and perform in-place swaps in Java and Python coding interviews.
Learn to rearrange an array by moving all elements not equal to three toward the front, pushing threes to the end, and returning the size of the non-three segment.
Master the array for loop as a prerequisite, building comfort with this pattern to make the upcoming material easier.
Break down a coding interview problem by examining its anatomy and illustrating how its components fit together toward the end.
Use a two-pointer scan to move non-zero items forward, swapping with the last index to place zeros at the end, achieving an optimal in-place solution.
Master a two-pointer partitioning algorithm from left to right, swapping when not free, and returning the partition length, then convert the pseudocode to java or python with visualization.
Learn an in-place two-pointer approach to remove a target value from an array by swapping non-target elements forward, updating the new length, and handling zero or one element cases.
Analyze runtime and space complexity in big-O terms as you traverse items and swap elements with a helper function to illustrate efficiency.
solve the majority element problem in an array, where the value appears more than n/2 times, with a guaranteed majority, as introduced in the Java and Python interview questions course.
Explore prerequisites for coding interview questions by using a hash table to count characters, then traverse the map to identify keys with counts exceeding a threshold.
Break down a problem by analyzing an array of integers, using divide-by-two and ceiling concepts, and applying greater-than-or-equal checks in seeding contexts.
Contrast brute force anti-patterns with the optimal approach: sort the array to count duplicates and track max, or use a hash map in one pass to find a majority element.
Explore the pseudocode algorithm (with visualization) by traversing the array left to right, building a hash map of counts, and returning the majority element.
Work through a hands-on coding demo in Java and Python that builds a hash map to count elements and identify a majority element, with notes on integer versus double division.
Explore runtime and space complexity, covering how loops over arrays affect time and how using a hash map influences space usage, including worst-case considerations.
Introduce solving and implementing anagrams, explaining how reordering characters forms words, and reinforce this with practice implementations similar to a prior coding question.
Prerequisites include arrays and a hash table; learn to use a hash map to count character occurrences and verify that the two words have identical character counts.
Analyze how to determine if two strings are anagrams by comparing character counts and swapping mechanics, and implement a boolean function that checks the anagram condition.
Explore two ways to test if two strings are anagrams: a sort-and-compare method and an optimal map-based counting approach that yields zero counts.
Visualize a pseudocode algorithm to detect anagrams using a hash map, subtracting counts as you traverse strings, and check all counts reach zero, with edge-case handling.
Learn to check two strings for anagrams using a hash map of character counts in Java, handling empty inputs and verifying counts reach zero.
Understand big-o runtime and space complexity by analyzing loops and hash map usage, focusing on how coefficients don’t affect complexity and how array uniqueness impacts space.
Reverse the characters inside each word while preserving the original word order and spaces, demonstrating a common string question with a focus on per-word reversal.
Understand strings as arrays of characters, traverse char arrays, and convert between string and char array using a function via the API.
The lecture uses a diagram to break down the problem's anatomy, showing how a reverse function is invoked as two indices guide the traversal.
Compare naive versus optimal solutions for string processing, showing how to trim and split whitespace, build the result, and apply a front and end pointer approach for a linear-time solution.
Explore a two-pointer pseudocode approach to reverse words in a string, visualize front and end indices with space handling, including the last word case, and translate the logic into code.
Watch a practical coding demo on reversing a string and handling corner cases, including whitespace, single-character strings, and in-place constraints by converting to a char array and using two-pointer logic.
analyze runtime and space complexity of a string operation, visiting each character once, using in place char array conversion for an optimal solution.
If I summarize this course in one sentence?
Learn data structure & algorithm (array, hashmap, string, linked list, binary tree, recursion) coding interview questions from scratch in Java or Python and prepare for your next job interviews at GAFA, Big N, etc.
☆Please check preview videos to see if this course is really for you☆
Are you one of the below?
You want to get a job at Big 4 (GAFA) or Big N but don't know where to start
You feel stuck at current developer job
You want to switch your job but don't know how to prepare for technical coding questions
You want to practice data structure and algorithm coding questions
Who should take this course
you are not satisfied with current job and want to grow as an engineer
you don't know how to go about learning and practicing coding interview questions
you have coding experience in Java or Python for at least 3 months
you have never solved data structure coding questions in Array, HashMap, String, Linked List, Binary Tree, or Recursion
you want to learn ins and outs of coding questions from a senior software engineer working for an US company in SF
you want to practice and improve coding question skills
you want to review fundamentals of computer science (coding, data structure, algorithms)
you want to have deep understanding of abstract problems using diagrams, illustrations, pseudocode instead of memorizing solution code
who should NOT need to take this course
you already know a lot of data structure coding questions for Array, HashMap, String, Linked List, Binary Tree, or Recursion
you have a lot of experience and confidence in technical interview questions
you are not planning on switching a job or learning data structure
you have never done coding in Java or Python
In this course, you will tackle 20 coding interview questions.
With these 20 questions, you will learn:
to apply the fundamentals of data structure concepts (Array, HashMap, String, Linked List, Binary Tree, or Recursion) into code
how to conceptualize and visualize abstract problems
how to write and come up with pseudocode algorithms
coding skills in Java and Python
how to debug and test code
how to analyze code for Big-O runtime and space complexity
9 Reasons why you should take this course:
1. Instructed by a Software Engineer working for US company in SF
I have passed one of the most challenging technical coding interviews at Microsoft. With 6+ industry experience in both North America and Europe, I breakdown and explain questions using diagrams, illustrations, pseudocode, instead of just throwing you a solution code.
2. Solution code in Java and Python
You usually don't find a solution in multiple languages. Catered for Java backend developers and Python developers. Also beneficial if you know one of them but also want to learn the other.
3. Questions are ordered by difficulty and solution pattern relevance
Questions are organized and ordered from easy to difficult, and also those using similar solution approaches are grouped together, hence making it easier for you to associate seemingly different questions.
4. Sharing my coding interview experiences at Microsoft, Google, Facebook, Intel, Adobe, etc
Coding interview is not just coding. I cover pre-work before coding such as conceptualizing & visualizing abstract problems, pseudocode、coding, testing, and Big-O analysis.
5. Clear prerequisite skills
Syntax cheatsheets are available so beginner coders can gauge their skill sets.
6. You learn two solution patterns in one question
Not only the optimal solutions but also brute-force anti-patterns are covered.
7. Focused on pre-coding conceptualization process
Special efforts have been paid for visualizing abstract concepts. I even explain looping through objects with diagrams so you know how variable values change, as if you do break-point debugging on IDE.
8. You can have sneak-peek over senior software engineer's coding
My coding routine, how I define corder/edge cases, how I code/test and how I think while coding, everything is revealed.
9. Big-O runtime and space complexity analysis
You will be asked to analyze your own algorithm and code you write. So I explain Big-O in each question.
My background & Education & Career experience
Have interviewed at Microsoft, Google, Apple, Facebook, Intel, Adobe, etc
Cloud DevOps Software Engineer with 6+ years experience
Bachelor of Science in Computing Science from a Canadian university
Knows data structure, algorithms, design patterns well
Knows Java, C#, C++, Bash, Python, JavaScript, Terraform, IaC
Expert in AWS (holds AWS DevOps Professional certification) and Kubernetes (holds Certified Kubernetes Administrator, CKA)
I will see you inside!