Break Away: Programming And Coding Interviews
- 20 hours on-demand video
- 1 article
- 144 downloadable resources
- Full lifetime access
- Access on mobile and TV
- Certificate of Completion
Get your team access to 4,000+ top Udemy courses anytime, anywhere.Try Udemy for Business
- Know how to approach and prepare for coding interviews
- Understand pointer concepts and memory management at a very deep and fundamental level
- Tackle a wide variety of linked list problems and know how to get started when asked linked list questions as a part of interviews
- Tackle a wide variety of general pointer and string problems and know how to answer questions on them during interviews
- Tackle a wide variety of general programming problems which involve just plain logic, no standard algorithms or data structures, these help you get the details right!
Coding interviews are nothing like software engineering jobs, they tend to be stressful and focus on the hardest parts of a software engineer's jobs. However, getting your core concepts right, with a lot of practice is the secret sauce to cracking the coding interview.
Pointers to pointers requires a heightened conceptualization of memory layout. See detailed visuals on how pointer modification and reassignment work. User defined types or structs can also have pointers to them, memory layout and visualization of struct pointers.
Linked lists are favorite interview questions for software engineering roles. If you can work linked lists you're on your way to tackling more complicated problems. Understand the memory set up of linked lists and start with a few problems to gain confidence.
Get the length of a linked list, access the nth element in a list, and append an element to the end of the list - all this while handling null lists and other details.
For a simple concept, linked lists can get surprisingly tricky very quickly. Practice and practice again to gain mastery over linked list problems.
Use the linked list as a stack and implement pop, delete all the elements in a list - tricky memory freeing here, insert an element at a specified position and in a sorted list - these are similar but the edge cases differ.
Once you've actually solved all the examples we've got so far, you'll find that linked lists are fun! This class has a particularly difficult sample problem which will introduce you to the fast and slow pointers which traverse a linked list at different speeds. Useful for a lot of tricky maneuvering.
Append one list to another and split a list into two by using fast and slow pointers. This second problem is much, much harder than it seems.
By now you should be able to solve linked list problems in your sleep. Let's practice a few last ones to gain complete master over them.
Remove duplicates from a sorted list, move the first node from one list to another, merge two sorted lists and finally reverse a linked list.
Print all the bits used to represent an integer from the most significant bit to the least significant. Learn some subtle details about the shift right (>>) with negative numbers!
Count the number of 1s in an integer, and learn a neat trick which allows you to do it in complexity O(number of 1s).
During coding interviews you might encounter questions which you can work out from first principles. You should be nailing these! Let's start with figuring out whether a string is a palindrome and finding all the points within a certain distance from another point.
Two more problems and detailed solutions. Play the game of life where every cell can change states from live to dead based on its neighbours.
Then move on to breaking a document into chunks to send down to a client subject to very specific constraints.
Run length encoding involves specifying the number of times a character is repeated in a string. Decoding run-length-encoded strings can be pretty tricky, let's find a solution for both.
If a number were represented by its digits, can you write code to add 2 numbers represented in this way? Let's walk through a solution and see if you can get this right.
Write code to check whether a Sudoku board is valid. This should work for both complete and incomplete boards. Sudoku is tricky and this has many conditions to check.
Lastly set up your own numeric system and then increment a number represented in that system by 1.
A sorting algorithm is not just defined by its complexity, there are a whole bunch of other characteristics which can be used to determine which sorting algorithm is the right one for a system. Let's understand what these characteristics are and what are the trade offs we might make.
Problems which use stacks as a part of their solutions are very common in programming interviews. Matching parenthesis to check for well formed expressions is a classic interview question - let's solve this using the stack we're already implemented.
The binary tree is an incredibly useful hierarchical data structure. Many other, more complex data structures, use the binary tree as the foundation. Let's see what a binary tree looks like and learn some simple terminology associated with the tree.
Depth first traversal can be of 3 types based on the order in which the node is processed relative to it's left and right sub-trees.
In-order traversal processes the left subtree, then the node itself and then it's right sub trees. Post-order traversal processes the node *after* it's left and right subtrees.
The algorithms are all remarkably similar and very easy once you use recursion.
- This course requires some basic understanding of a programming language, preferably C. Some solutions are in Java, though Java is not a requirement
Programming interviews are like standard plays in professional sport - prepare accordingly. Don't let Programming Interview gotchas get you down!
- Programming interviews differ from real programming jobs in several important aspects, so they merit being treated differently, just like set pieces in sport.
- Just like teams prepare for their opponent's playbooks in professional sport, it makes sense for you to approach programming interviews anticipating the interviewer's playbook
- This course has been drawn by a team that has conducted hundreds of technical interviews at Google and Flipkart
- Pointers: Memory layout of pointers and variables, pointer arithmetic, arrays, pointers to pointers, pointers to structures, argument passing to functions, pointer reassignment and modification - complete with visuals to help you conceptualize how things work.
- Strings: Strings, Character pointers, character arrays, null termination of strings, string.h function implementations with detailed explanations.
- Linked lists: Visualization, traversal, creating or deleting nodes, sorted merge, reversing a linked list and many many problems and solutions, doubly linked lists.
- Bit Manipulation: Work with bits and bit operations.
- Sorting and searching algorithms: Visualize how common sorting and searching algorithms work and the speed and efficiency of those algorithms
- Recursion: Master recursion with lots of practice! 8 common and uncommon recursive problems explained. Binary search, finding all subsets of a subset, finding all anagrams of a word, the infamous 8 Queens problem, executing dependent tasks, finding a path through a maze, implementing PaintFill, comparing two binary trees
- Data Structures: Understand queues, stacks, heaps, binary trees and graphs in detail along with common operations and their complexity. Includes code for every data structure along with solved interview problems based on these data structures.
- Step-by-step solutions to dozens of common programming problems: Palindromes, Game of Life, Sudoku Validator, Breaking a Document into Chunks, Run Length Encoding, Points within a distance are some of the problems solved and explained.
- YEP! New engineering graduate students who are interviewing for software engineering jobs
- YEP! Professionals from other fields with some programming knowledge looking to change to a software role
- YEP! Software professionals with several years of experience who want to brush up on core concepts
- NOPE! Other technology related professionals who are looking for a high level overview of pointer concepts.