I have prepared several interviews at Tech / Finance Companies (Google, Goldman Sachs and Alike). My last year of computer science Sahwa PhD at the National University of Singapore, and my PhD did not have many programming components for it. When preparing, I have collected several pointer to go over and over before the interview – so when I say “general tips” I mean tips for me to remember. Hopefully it helps.
Watch very good technical interview tips from Google engineers and interview tips from Google Recruiters. Not many companies take this much effort to clarify their interview process.
Follow the Udacity course about preparing Python interview questions. This course is a comprehensive version of technical details that we will discuss here.
Read tips that are very compact by Philip J. Guo and may roam the internet again.
Don’t open a link from the news article Click Bait (eg from BusinessInsider and Forbes).
The most comprehensive guide to programming practices is the University of University interview. Think of it as a reference material, don’t be overwhelmed by it. The resource for system design questions is pretty good there.
I have used Python as my first preference. Some Googlers suggest using C ++ / Java, but the round decision is: Choose the most comfortable language with you, except the job description has requirements. The formal interview coach from Google ensures that Python is fine, and often helps convey a faster basic understanding of an interview.
Still hold on to one interview training platform and do a thorough problem. I highly recommend Leetcode. Do not use a platform that focuses on programming contests. If you practice for telephone interviews, use Google Documents to practice and then copy the pasta into the platform (or your personal editor). For face-to-face interviews (both hangouts and in place), programming practices on the board. It’s frustrated at first, but also helps a lot. If you have a luxurious editor with Linting code, autocomplete and what is not, don’t open until the interview.
In interviews, submit questions and clarification every thing no matter how small. Validating the assumption of the data structure and the previous complexity.
Train every problem as if it was an interview. Solve them right as early as possible not the destination (contrary to programming competition), communication is the key. Don’t rule out yourself. See my solution for some leetcode problems, each handled as if it was an interview. Each file has details written as a comment.
Start with a list of examples that will cover most, extreme and general.
Some types of problems are common on all platforms related to interviews, books and videos (which might imply them common in interviews too). Four types of main problems One must focus is: 1. String / array manipulation, 2. tree structure, 3. Graph structure, 4. Number manipulation.
String / Array Manipulation
This is the most diverse area of possible questions and sources of questions that are easy too. It’s easy to ask and explain questions related to string / arrays by telephone too, so pay attention to this part helpful.
One must know the following algorithms / structures, complexity, application examples and implementation.
Permutation / combination.
Suffix (Manber and Meyers) arrays.
AHO CraNORK Algorithm.
Most of the problems of interviews in this category can be completed in linear time without extra space. The trick is often to keep the subray window and grow / shrink subray depending on the context. You might have to
Start a subray with zero size ranging from left. Often when the array is sorted (or must be sorted), the subarray can begin as a full array, with two pointer at the beginning and end the subray depends on the context (the type of example that is slightly different: in the sorted array, find two values that add to the target).
Save the global return value (eg number) and local. Often you may have to save two local variables (eg min and max products).
Next is not adjacent, but the order of elements in the original array is stored. Finding if the string is the next of the other string is the easiest form, but you may have to find the most common (dynamic programming problems every textbook), the longest increases further, or unique longest wagging. These problems often only ask you to restore the next length. However, a good further question is finding next itself. You might have to
First clearly state recursion solutions.
Save a smaller subray cache (term umbrella: dynamic programming). In Python, you can use a stylish cache decorator that serves for many problems related to the cache, but in interviews only save the matrix / list. See the Roundup which is very good.
You should expect O (N²) solutions, although some smart algorithms can reach O solutions (n log n) using log search techniques.
Try to see if the greedy method works (usually not)