Photo: Flickr / Marcin Wichary
You hear a lot about some of the crazy interview questions Google has for all their employees.But engineers are also a class of their own, and have to prove that they know how to code as well as Google expects them to if they want to work there.
So they have to answer even harder, more computational and logic-based questions. We’ve found a bunch of interesting ones on Glassdoor.com, a place where you can rate your interviewing experience, and assembled a list.
We’ve gone through the list with our tech team to try and create a plain English translation for each problem, too.
The challenge: This is a more open-ended question designed to coax the engineer to define parameters.
Is the language in Assembly? If so, you have to build basic operations from scratch.
Otherwise, it's easy -- just plug the numbers in, since most languages support arithmetic operations.
The challenge: Here's the start to a common trend with Google's interview questions: find an efficient way to solve a problem.
When you merge two 'linked' lists, there tend to be problems with 'conflicts' between the lists (because they have a specific order to them and you are messing with the order).
You have to find an algorithm to quickly eliminate those conflicts.
The challenge: Google will also ask you to solve a bunch of maths problems.
They're designed to challenge engineers to think efficiently for problems, not just know how to code each problem.
This one will ask you to implement a clever maths trick.
4. If we had a list of n nodes, what are the maximum number of edges there can be for a directed acyclic graph?
The challenge: This is a variation of the travelling salesman problem, a famous maths problem.
It's a maths problem that's asking you to stretch your brain, not find a clever trick.
You have to draw lines between nodes, but never have a clear path of returning to the original node regardless of where you're starting.
The challenge: The response from our tech team was 'screw Java.' In reality, each term has a very specific meaning.
Google is checking if you know the terminology. For example, finalise has to deal with 'garbage collection', while Finally refers to a specific kind of error.
The challenge: This is essentially question of whether you can estimate if the problem is solvable in a finite period of time.
You can usually attack a problem with brute force, but it could take forever to solve.
The challenge: There are a bunch of ways to solve this problem, and it all depends on what algorithm you choose.
Google is looking for the engineer to pick the fastest algorithm.
The challenge: This is a question of whether you can bend your knowledge of existing tropes in computing.
For example, 'strings' usually refer to lines of letters, words or something that is meant to be printed and seen. But they can also refer to matrices (a two-dimensional object) and other kinds of objects.
You have to check if you can rotate them and check them against existing strings.
The challenge: This is the kind of problem a Google interviewer will ask to check what kind of 'boundary conditions' you are setting.
There are a ton of ways to attack this problem, and simplifying it by placing limits on it -- like the square mileage of San Francisco -- is important when it comes to programs.
The challenge: A sticky bit is a system administrator term related to settings and permissions.
Google is testing to see if you know some of the finer points of administration -- not just coding.
11. Given a list of integers that fall within a known short but unknown range of values, how to find the median value?
The challenge: This is another problem asking you to implement a clever maths trick that you'd learn in a discrete maths class.
They're not easy problems.
The challenge: Now Google is asking you to make sure you know you're checking the right parts of the problem and ignoring the fluff in order to run algorithms more efficiently.
The challenge: This is a problem that can be solved in a few lines of code using another maths trick.
It's testing you to not only know which tricks to use, but how you implement them as code.
The challenge: This one is asking you to come up with a way to check a solution arithmetically and quickly with another maths trick.
The challenge: This one's a doozie and it's asking you to put everything together.
Check boundary conditions (meaning single out stocks that typically have big moves) and then efficiently compute the biggest swing.
The only decent approach we could think of is to calculate it by brute force, going through each stock.