Coding Interview Resources
50.3K subscribers
692 photos
7 files
399 links
This channel contains the free resources and solution of coding problems which are usually asked in the interviews.

Managed by: @love_data
Download Telegram
Tips for Google Interview Preparation
Now that we know all about the hiring process of Google, here are a few tips which you can use to crack Googleโ€™s interview and get a job.

Understand the work culture at Google well - It is always good to understand how the company works and what are the things that are expected out of an employee at Google. This shows that you are really interested in working at Google and leaves a good impression on the interviewer as well.
Be Thorough with Data Structures and Algorithms - At Google, there is always an appreciation for good problem solvers. If you want to have a good impression on the interviewers, the best way is to prove that you have worked a lot on developing your logic structures and solving algorithmic problems. A good understanding of Data Structures and Algorithms and having one or two good projects always earn you brownie points with Amazon.
Use the STAR method to format your Response - STAR is an acronym for Situation, Task, Action, and Result. The STAR method is a structured way to respond to behavioral based interview questions. To answer a provided question using the STAR method, you start by describing the situation that was at hand, the Task which needed to be done, the action taken by you as a response to the Task, and finally the Result of the experience. It is important to think about all the details and recall everyone and everything that was involved in the situation. Let the interviewer know how much of an impact that experience had on your life and in the lives of all others who were involved. It is always a good practice to be prepared with a real-life story that you can describe using the STAR method.
Know and Describe your Strengths - Many people who interview at various companies, stay shy during the interviews and feel uncomfortable when they are asked to describe their strengths. Remember that if you do not show how good you are at the skills you know, no one will ever be able to know about the same and this might just cost you a lot. So it is okay to think about yourself and highlight your strengths properly and honestly as and when required.
Discuss with your interviewer and keep the conversation going - Remember that an interview is not a written exam and therefore even if you come up with the best of solutions for the given problems, it is not worth anything until and unless the interviewer understands what you are trying to say. Therefore, it is important to make the interviewer that he or she is also a part of the interview. Also, asking questions might always prove to be helpful during the interview.
โค2๐Ÿ‘1
Tips for solving leetcode codings interview problems

If input array is sorted then
- Binary search
- Two pointers

If asked for all permutations/subsets then
- Backtracking

If given a tree then
- DFS
- BFS

If given a graph then
- DFS
- BFS

If given a linked list then
- Two pointers

If recursion is banned then
- Stack

If must solve in-place then
- Swap corresponding values
- Store one or more different values in the same pointer

If asked for maximum/minimum subarray/subset/options then
- Dynamic programming

If asked for top/least K items then
- Heap

If asked for common strings then
- Map
- Trie

Else
- Map/Set for O(1) time & O(n) space
- Sort input for O(nlogn) time and O(1) space
๐Ÿ‘7
How long are coding interviews?
The phone screen portion of the coding interview typically lasts up to one hour. The second, more technical part of the interview can take multiple hours.

Where can I practice coding?
There are many ways to practice coding and prepare for your coding interview. LeetCode provides practice opportunities in more than 14 languages and more than 1,500 sample problems. Applicants can also practice their coding skills and interview prep with HackerRank.

How do I know if my coding interview went well?
There are a variety of indicators that your coding interview went well. These may include going over the allotted time, being introduced to additional team members, and receiving a quick response to your thank you email.
General tips

Always validate input first. Check for inputs that are invalid, empty, negative, or different. Never assume you are given the valid parameters. Alternatively, clarify with the interviewer whether you can assume valid input (usually yes), which can save you time from writing code that does input validation.

Are there any time and space complexities requirements or constraints?

Check for off-by-one errors.

In languages where there are no automatic type coercion, check that concatenation of values are of the same type: int,str, and list.

After you finish your code, use a few example inputs to test your solution.

Is the algorithm supposed to run multiple times, perhaps on a web server? If yes, the input can likely be pre-processed to improve the efficiency in each API call.

Use a mix of functional and imperative programming paradigms:

๐Ÿ”น Write pure functions as often as possible.
๐Ÿ”น Use pure functions because they are easier to reason with and can help reduce bugs in your implementation.
๐Ÿ”น Avoid mutating the parameters passed into your function, especially if they are passed by reference, unless you are sure of what you are doing.
๐Ÿ”น Achieve a balance between accuracy and efficiency. Use the right amount of functional and imperative code where appropriate. Functional programming is usually expensive in terms of space complexity because of non-mutation and the repeated allocation of new objects. On the other hand, imperative code is faster because you operate on existing objects.
๐Ÿ”น Avoid relying on mutating global variables. Global variables introduce state.
๐Ÿ”น Make sure that you do not accidentally mutate global variables, especially if you have to rely on them.
๐Ÿ‘1
Important Sorting Algorithms-

Bubble Sort: Bubble Sort is the most basic sorting algorithm, and it works by repeatedly swapping adjacent elements if they are out of order.

Merge Sort: Merge sort is a sorting technique that uses the divide and conquer strategy.

Quicksort: Quicksort is a popular sorting algorithm that performs n log n comparisons on average when sorting an array of n elements. It is a more efficient and faster sorting algorithm.

Heap Sort: Heap sort works by visualizing the array elements as a special type of complete binary tree known as a heap.
Important Searching Algorithms-

Binary Search: Binary search employs the divide and conquer strategy, in which a sorted list is divided into two halves and the item is compared to the listโ€™s middle element. If a match is found, the middle elementโ€™s location is returned.

Breadth-First Search(BFS): Breadth-first search is a graph traversal algorithm that begins at the root node and explores all neighboring nodes.

Depth-First Search(DFS): The depth-first search (DFS) algorithm begins with the first node of the graph and proceeds to go deeper and deeper until we find the goal node or node with no children.
๐Ÿ‘1
Dynamic Programming (DP) is an algorithmic technique for solving an optimization problem by breaking it down into simpler sub-problems and taking advantage of the fact that the optimal solution to the overall problem is dependent on the optimal solution to its sub-problems.
Recursion is a problem-solving technique in which the solution is dependent on solutions to smaller instances of the same problem. Computing factorials is a classic example of recursive programming.

Every recursive program follows the same basic sequence of steps:

Set up the algorithm. Recursive programs frequently require a seed value, to begin with. This is accomplished by either using a parameter passed to the function or by providing a non-recursive gateway function that sets up the seed values for the recursive calculation.

Check to see if the current value(s) being processed correspond to the base case. If so, process the value and return it.

Rephrase the solution in terms of a smaller or simpler sub-problem or sub-problems.

Apply the algorithm to the sub-problem.

In order to formulate an answer, combine the results.

Return the results.
The Divide and Conquer algorithm consists of a dispute using the three steps listed below.

Divide the original problem into sub-problems.

Conquer: Solve each sub-problem one at a time, recursively.

Combine: Put the solutions to the sub-problems together to get the solution to the whole problem.
Hashing is a technique or process that uses a hash function to map keys and values into a hash table. It is done to allow for quicker access to elements. The efficiency of mapping is determined by the hash functionโ€™s efficiency.
Which of the following are non-linear data structures?
Anonymous Quiz
11%
Array
14%
Linked list
8%
Stacks
68%
Graphs
๐Ÿ‘1
๐Ÿ‘3
Data Structures Interview Preparation
๐Ÿ‘2