Tips For Smart Learning
- Our goal must be to cover at least 80% syllabus and prioritise the topics based on strengths and weaknesses. A topic that requires more time should get more time.
- Doing a weekly critical review could help us to understand the progress. We need to think what is the further scope of improvement in the topic? What is the current level of our problem-solving ability? For the fact-based view, we recommend rating each topic on a scale of 1 to 10.
- Few ideas always come during learning DSA: Brute force solution, efficient solution, boundary conditions, time and space complexity analysis, coding style. Keep preparing notes if you find something unique or essential patterns.
- In the starting journey, rather than solving many problems, focus on the top 100 coding interview questions. The best idea would be to pick famous coding interview problems which can be solved using various techniques.
- Learn to visualize critical operations, implementations, and use cases of each data structure.
- Never mind going through the same concepts and problems again and again. This would help in figuring out hidden ideas. Focus on reason and never try to memorise!
Whiteboard Algorithms And Data Structures
This is the most common type of interview, because of knowledge of algorithms and data structures is crucial for cost- and time-efficient code. Its usually done on the whiteboard to evaluate your coding skills with no IDE/Stack Overflow and your technical communication skills.
Expect 3045 minutes interview with 12 medium-hard questions to solve on the fly on a whiteboard, constantly communicating requirements and solutions with the interviewer.
They are looking for your preparation before the interview, knowledge of basics and great communication. Dont work on the problem in silence make it a conversation between you and the interviewer.
To prepare1. Solve 80150 LeetCode problems on paper/whiteboard2. Get at least 20 practice sessions as an interviewee with peers or professionals.3. Practice writing clean, readable code on a whiteboard.
Hr Phone Screen Summary
Expect a 1530 minute teleconference call discussing your background, goals, and interest in their company.
They are looking for clear communication, a pleasant person to work with, someone who is enthusiastic about the company and has done their research, ideally translating into a loyal employee willing to stay and be happy at their company.
Example questions include tell me about your background. Why do you want to be a Data Engineer at ? What is your desired salary range?
1. Write and practice a script for your background.2. Do a deep dive into company values and tweak your answer accordingly.3. Practice with your peers over the phone .4. Settle in a quiet place with a good Internet connection at least 10 minutes before the interview.
Don’t Miss: How To Do A Mock Interview
Dont Be Intimidated By Mathematics
Data structures and algorithms do involve some mathematical reasoning and proofs, particularly when analyzing the time- and space-complexity of an algorithm.
Being able to perform a big-O complexity analysis is certainly important, but you dont need to worry about it too much to start with. You dont need a high IQ or abstract mathematical knowledge.
As long as you understand high school mathematics, you have the tools needed to understand data structures and algorithms.
That may seem unlikely to you right now. In this article, Ill argue otherwise: after a few months of directed study and practice, youll be able to approach the subject with confidence.
How To Count Leaf Nodes Of The Binary Tree
Steps for counting the number of leaf nodes are:
- If the node is null then return 0.
- If encountered leaf node. Left is null and node Right is null then return 1.
- Recursively calculate the number of leaf nodes using
No. of leaf nodes= no of leaf nodes in left subtree + number of leaf nodes in the right subtree.
Don’t Miss: How To Analyse Interview Data
How Should You Study
One of the best ways to study a data structure or algorithm is to implement it. While reading about separate chaining hash tables is one thing, youll really get a much deeper understanding of how they work if you have to learn it well enough to write the code.
You dont need to code up everything. There gets to be a point where it no longer benefits you, but for each data structure and algorithm, consider coding up any tricky bits. Write a deleteNode method for a binary search tree. Write a distance method that returns the shortest distance between two nodes in a graph. If you dont have time to code up everything, focus on the tricky parts.
This also has an added benefit. Many common questions are simple variants on the core set of algorithms and data structures that you need to learn. By knowing how to code them up, itll be easy to modify that existing code in your interview to fit the question. You can also code them up with pen and paper to practice for whiteboard coding.
Who This Course Is For:
- Any engineer, developer, programmer, who wants to improve their interviewing skills
- Anyone interested in improving their whiteboard coding skills
- Anyone who wants to become a better developer
- Any self taught programmer who missed out on a computer science degree
- 4.6 Instructor Rating
- 599,337 Students
- 20 Courses
Andrei is the instructor of some of the highest rated programming and technical courses online and is the founder of ZTM academy. His graduates have moved on to work for some of the biggest tech companies around the world like Apple, Google, Tesla, Amazon, JP Morgan, IBM, UNIQLO etc… He has been working as a senior software developer in Silicon Valley and Toronto for many years, and is now taking all that he has learned, to teach programming skills and to help you discover the amazing career opportunities that being a developer allows in life.
Andrei promises you that there are no other courses out there as comprehensive and as well explained. He believes that in order to learn anything of value, you need to start with the foundation and develop the roots of the tree. Only from there will you be able to learn concepts and specific skills that connect to the foundation. Learning becomes exponential when structured in this way.
Taking his experience in educational psychology and coding, Andrei’s courses will take you on an understanding of complex subjects that you never thought would be possible.
See you inside the courses!
You May Like: How To Close An Interview
What Is Data Structures And Algorithms
Imagine having sequins of different colours mixed after a long sewing session. You need to organize them based on colours so that you dont face any difficulty in your next sewing session. These containers can be thought of as data structures where different kinds of sequins are stored based on predefined criteria to ease solving problems.
A data structure is a named location where data and information are stored and organized based on the associated operations in order to increase the efficiency of programming. Algorithms consist of ordered steps to solve a particular problem or achieve a goal. Learning data structures and their algorithms is essential to create clean and optimized code.
Where To Study Algorithms
Thankfully, currently there are a lot of resources where you can study algorithms. Often, it is enough to just check Wikipedia or do a quick Google search.
If you are new to algorithms, it makes sense to study them more systematically, and one of the best ways to do this is to take an online course on algorithms. For example, you can take an Algorithms course on Coursera or study an Algorithms Unit on Khan Academy.
Here are some more great resources that I recommend:
Introduction to Algorithms by Cormen, et al â probably the best book on algorithms. It is very rigorous and dives deep into the heart of algorithms. When you want to deeply understand some topic in and out, this is the best resource for it.
Competitive Programmerâs Handbook by Antti Laaksonen â targeted for competitive programmers, this book gives very succinct and clear explanations of many common algorithms used in the interview questions as well. Also, unlike Introduction to Algorithms, which provides only pseudocode, Competitive Programmerâs Handbook contains working implementations in C++ for a lot of algorithms it describes.
The book is available free online. Also, it has a companion set of problems, that you can try if you are feeling adventurous 🙂
Read Also: Where Can I Watch Interview With The Vampire
Now Its Time For Breadth
Lets say youve mastered your core problems. Using common data structures is second nature to you. You can now look beyond your core set. Because youve implemented so many techniques already, you dont even have to code all the new questions.
During this time, try to solve realistic interview problems. Once you get good, theres a tendency to focus on really hard problems. The thought process is if I can solve these really hard problems, then interview problems will be a piece of cake!. Thats not usually the case. Techniques in really hard problems often have nothing to do with interview-level problems.
What Should You Study
This is a simple question that completely lacks a simple answer. It is also the thing that I see most people do wrong.
On forums, I often come across people asking questions about how to solve interview questions related to machine learning. While its true that you could solve FizzBuzz using Tensorflow like Joel Grus does, youll notice that he didnt actually get the job. Overcomplicating things isnt necessarily useful to you.
But, you might say, what if they ask me machine learning questions? Yes, its possible, but what are the chances? Its much more likely that you would be asked a question about traversing binary trees or sorting a linked list.
The key to studying is to maximize the time you have by studying the most high-value topics. That means you shouldnt study everything. After a certain point, your time would be better spent elsewhere, so focus on core data structures and algorithms.
Study hash tables and linked lists. Review sorting and searching, trees and graphs, arrays and strings. Know how to implement and use these things in your language of choice.
If youre unsure what exact topics you should focus on, look at the different categories of questions we have on our practice questions page. You can also look at the table of contents of Cracking the Coding Interview for free in the . And unless you have a very compelling reason, DONT go beyond these lists of topics.
Recommended Reading: What Does A Second Interview Consist Of
Background: Why Do Companies Ask Algorithms Questions
In real life, programmers spend almost none of their time implementing binary search trees or graph search algorithms. So why do companies ask so many questions about them?
Theres both a Watsonian and a Doylist interpretation of this questionwhy are algorithms questions useful to companies to ask has one answer, and what is the actual causal mechanism by which companies decided to ask algorithms questions has another.
Ill start out by explaining the reasons to ask algorithms questions, and then move on to more cynical explanations for their prevalence.
To start with, a lot of professional programmers arent able to do very basic things. For example, I might have a list of Customer objects, each of whom has an array of Purchase objects, and I want to get the names of the five customers who have spent the most over the last week. My guess is that maybe 50% of professional programmers would not solve this problem within 30 minutes. You dont want to hire such people by mistake.
How can you come up with complicated but short coding problems which are also simple to describe? I think algorithmics is a good choice here. Algorithmics is the most complicated area of computer science that almost all software engineers know about, and it allows lots of easy-to-describe, tricky-to-implement problems.
Now heres are some more cynical historical notes.
Preparing The Resume And Applying
Another important aspect of preparing for the interviews is to prepare everything you need for applying to the companies: figure out where you want to apply and how , prepare your resume and LinkedIn profile, and get in touch with the recruiters.
This may seem simple and obvious, but you will find out that there are a lot of small details, and you need to start early to avoid doing everything at the last moment.
Don’t Miss: How To Interview A Bookkeeper
Explain The Bfs Algorithm
BFS is a graph traversal algorithm. It starts traversing the graph from the root node and explores all the neighboring nodes. It selects the nearest node and visits all the unexplored nodes. The algorithm follows the same procedure for each of the closest nodes until it reaches the goal state.
Step1: Set status=1
Step2: Queue the starting node A and set its status=2, i.e.
Step3: Repeat steps 4 and 5 until the queue is empty.
Step4: Dequeue a node N and process it and set its status=3, i.e.
Step5: Queue all the neighbors of N that are in the ready state and set their status =2
Until You’ve Mastered These 50 Questions
Preparing for any interview requires some work, and this is more so for a company the size of Microsoft, where competition is very high. More preparation is always better, but whats more important is the quality of preparation. After reading this post, you can rest assured that you will have greatly enhanced your chances of passing the interview!
Don’t Miss: How To Prepare For A Call Center Interview
What Is A Hash Table How Can We Use This Structure To Find All Anagrams In A Dictionary
A Hash table is a data structure for storing values to keys of arbitrary type. The Hash table consists of an index into an array by using a Hash function. Indexes are used to store the elements. We assign each possible element to a bucket by using a hash function. Multiple keys can be assigned to the same bucket, so all the key and value pairs are stored in lists within their respective buckets. Right hashing function has a great impact on performance.
To find all anagrams in a dictionary, we have to group all words that contain the same set of letters in them. So, if we map words to strings representing their sorted letters, then we could group words into lists by using their sorted letters as a key.
The hash table contains lists mapped to strings. For each word, we add it to the list at the suitable key, or create a new list and add it to it.
Important Data Structures Visualized With Animations
Coding interviews are an important part of various software engineering, machine learning, and data science jobs. Most of the candidates are good at using programming for their daily-life research problems. But when it comes to a coding interview one needs to brush up on the basics of different data structures since most of the problems revolve around selecting the right data structure for the given problem.
This article will go through seven essential data structures important for a coding interview, their time complexities, and commonly asked coding questions.
Read Also: How To Have A Good Interview
Book : Introduction To Algorithms
Introduction to Algorithms is not light for an introduction. It begins with basics, like defining what pseudocode is, but it gets deep. It is not just an algorithm cookbook it teaches techniques of algorithm design and analysis so that you can develop algorithms on your own. This skill is valuable for writing great code and of course, its great for the coding interview.
The book asks good questions and truly sets the intention to help you have a good and correct philosophy about algorithms.
The book is divided into only seven of the following chapters:
Chapter 1 covers foundational concepts such as the role of algorithms and some basic algorithms and thoughts of algorithm development like insertion sort, notations, the divide-and-conquer method and randomized algorithms.
Chapter 2 covers sorting and order statistics such a Quicksort.
Chapter 3 covers data structures such as hash tables and trees.
Chapter 4 covers advanced design and analysis techniques such as dynamic programming and greedy algorithms.
Chapter 5 covers advanced data structures such as B-trees, Fibonacci heaps, and disjoint sets.
Chapter 6 covers graph algorithms such as Dijkstras algorithm.
Chapter 7 covers selected topics such as multithreaded algorithms, matrix operations, and linear programming.
Algorithms And Techniques You Need To Know
Here is a list of algorithms and techniques that you definitely need to know when preparing for coding interviews. There is a good chance that these may appear on your coding interview, and if you solve about 200-400 problems on Leetcode, you will encounter most of these at least several times.
|Probability and Combinatorics|
Also Check: What Are Some Good Interview Questions
Have You Studied Enough
How do you know when you actually understand a concept? You dont want to waste time studying something that you already know well, but at the same time, you dont want to miss important material.
Let me introduce the Teddy Bear Technique. This is a very simple way to test your knowledge and know whether you need to devote time to additional study. All you have to do is explain the concept you are trying to learn to a teddy bear or other inanimate object .
The idea here is that the act of speaking aloud and teaching a topic will highlight areas where you are prepared on a topic versus those where you need some work. Explaining the topic, particularly focusing on explaining it in a way that someone without knowledge of it already could understand, forces you to know the topic very well.
There are a couple keys to making this technique work for you: