Preparing for a developer interview
Saturday, September 9, 2017
Tigran Sloyan |
5 tech interview tips that a developer can use to be prepared to nail that interview for the dream job.
Being a genius software engineer won’t get you very far if you can’t get past the interview. Showcasing your technical skill is one thing, but talking about it is a whole other challenge. How can candidates best prepare themselves to talk through skill before heading in? Here are 5 tips to help you prepare for the next tech interview staring you down!
Graph problems are some of the trickiest problems you’ll encounter in an interview. In a computer science context, a graph represents objects and the connections between them. For example, storing the links between friends on Facebook, or the roads between locations in Google Maps use graphs to represent the data.
Different approaches to graph problems yield wildly different results; clever tricks can reduce questions such as “what degree of separation are these two people on LinkedIn” from hours to seconds. Interviewers want to know that you know these algorithms, so that your programs will give useful results.
How to prepare:
Because of their utility, there are a lot of standard techniques for graph theory. The first step is recognizing the right data structures to use such as heaps, stacks, and queues. You can check your understanding of these techniques with challenge problems such as longestPath.
Interviewers are also interested in whether you can determine the underlying structure of a problem. One of CodeFights’s hardest problems is stringsRearrangement, which asks you to arrange a set of words an order so that neighboring words are different by one letter. At first glance, this seems like a problem where a lot of string manipulation techniques would be useful, but really this is a graph theory problem in disguise.
How to prepare:
Recognizing the “real type” of question is a valuable skill that comes by trying a wide variety of problems. On Codefights you can look at the “real type” of questions in Interview Practise Mode, and get familiar with the different forms the tasks can take.
The simplest and straightforward approach will be analyzing all possible decisions one by one. But you can’t bruteforce the answer that way. Instead, you have to identify and eliminate bad set of decisions early and narrow down the scope of good decisions (“early pruning”).
How to prepare:
Interviewers are looking to see if you know how to eliminate entire choices early, so it becomes feasible to look for optimal decisions. When working on these problems, concentrate on arranging your decisions so that you eliminate as many subsequent decisions as possible. Problems like booleanParenthesization and maximizeCoins test whether you know how to prune away irrelevant choices quickly.
The ability to write a code that works is the basic level requirement for a professional programmer. The ability to write an efficient code that can handle a large scale operation is the next level requirement. That’s why interviewers often test candidates on questions that highlight their ability to spot repeated work and to write an efficient algorithm that stores intermediate results.
Often the intermediate result will be “smaller” version of the original problem, but in tricky cases you may need to generalize the problem to identify the repeated work.
How to prepare:
Interviewers are looking to see if you can identify repeated work, so that you only have to solve each problem once. These problems are often amongst the most challenging for programmers, so you have the opportunity to stand out here. Practice identifying the repeated work by solving problems like seriesEpisodes and longestSubsequencePalindrome.
Interviewers know that writing good code is hard, and data structures are there to help organize data efficiently. They may ask you to implement a particular data structure from scratch to show how well you understand it, but more often they will evaluate how appropriate your choice of data structure is for the problem at hand.
They do so because being able to make an intelligent decision on which data structure to use in a particular setting means you understand the pros and cons of various data structures. It’s similar to an experienced chef who not only demonstrates that he can poach fish to perfection but also makes a good decision on when to use what cooking method - poaching, grilling, or broiling - to create a delicious dish.
How to prepare:
The best way to prepare is to familiarize yourself with the strengths and weaknesses of different data structures. Solve a problem on CodeFights and look at other people’s solutions. Did they choose the same data structure you did? Which solutions are the most elegant? The trickiest data structure to identify as being appropriate are hash tables. The CodeFights tasks groupsOfAnagrams and possibleSums.
This content is made possible by a guest author, or sponsor; it is not written by and does not necessarily reflect the views of App Developer Magazine's editorial staff.
1.) Apply an advanced technique
Graph problems are some of the trickiest problems you’ll encounter in an interview. In a computer science context, a graph represents objects and the connections between them. For example, storing the links between friends on Facebook, or the roads between locations in Google Maps use graphs to represent the data.
Different approaches to graph problems yield wildly different results; clever tricks can reduce questions such as “what degree of separation are these two people on LinkedIn” from hours to seconds. Interviewers want to know that you know these algorithms, so that your programs will give useful results.
How to prepare:
Because of their utility, there are a lot of standard techniques for graph theory. The first step is recognizing the right data structures to use such as heaps, stacks, and queues. You can check your understanding of these techniques with challenge problems such as longestPath.
2.) Determine the underlying structure of a problem
Interviewers are also interested in whether you can determine the underlying structure of a problem. One of CodeFights’s hardest problems is stringsRearrangement, which asks you to arrange a set of words an order so that neighboring words are different by one letter. At first glance, this seems like a problem where a lot of string manipulation techniques would be useful, but really this is a graph theory problem in disguise.
How to prepare:
Recognizing the “real type” of question is a valuable skill that comes by trying a wide variety of problems. On Codefights you can look at the “real type” of questions in Interview Practise Mode, and get familiar with the different forms the tasks can take.
3. Find the best decision among millions of possible decisions (Simplest solution is not good enough)
The simplest and straightforward approach will be analyzing all possible decisions one by one. But you can’t bruteforce the answer that way. Instead, you have to identify and eliminate bad set of decisions early and narrow down the scope of good decisions (“early pruning”).
How to prepare:
Interviewers are looking to see if you know how to eliminate entire choices early, so it becomes feasible to look for optimal decisions. When working on these problems, concentrate on arranging your decisions so that you eliminate as many subsequent decisions as possible. Problems like booleanParenthesization and maximizeCoins test whether you know how to prune away irrelevant choices quickly.
4. Improve efficiency by eliminating redundancy
The ability to write a code that works is the basic level requirement for a professional programmer. The ability to write an efficient code that can handle a large scale operation is the next level requirement. That’s why interviewers often test candidates on questions that highlight their ability to spot repeated work and to write an efficient algorithm that stores intermediate results.
Often the intermediate result will be “smaller” version of the original problem, but in tricky cases you may need to generalize the problem to identify the repeated work.
How to prepare:
Interviewers are looking to see if you can identify repeated work, so that you only have to solve each problem once. These problems are often amongst the most challenging for programmers, so you have the opportunity to stand out here. Practice identifying the repeated work by solving problems like seriesEpisodes and longestSubsequencePalindrome.
5. Pick the right data structure
Interviewers know that writing good code is hard, and data structures are there to help organize data efficiently. They may ask you to implement a particular data structure from scratch to show how well you understand it, but more often they will evaluate how appropriate your choice of data structure is for the problem at hand.
They do so because being able to make an intelligent decision on which data structure to use in a particular setting means you understand the pros and cons of various data structures. It’s similar to an experienced chef who not only demonstrates that he can poach fish to perfection but also makes a good decision on when to use what cooking method - poaching, grilling, or broiling - to create a delicious dish.
How to prepare:
The best way to prepare is to familiarize yourself with the strengths and weaknesses of different data structures. Solve a problem on CodeFights and look at other people’s solutions. Did they choose the same data structure you did? Which solutions are the most elegant? The trickiest data structure to identify as being appropriate are hash tables. The CodeFights tasks groupsOfAnagrams and possibleSums.
This content is made possible by a guest author, or sponsor; it is not written by and does not necessarily reflect the views of App Developer Magazine's editorial staff.
Become a subscriber of App Developer Magazine for just $5.99 a month and take advantage of all these perks.
MEMBERS GET ACCESS TO
- - Exclusive content from leaders in the industry
- - Q&A articles from industry leaders
- - Tips and tricks from the most successful developers weekly
- - Monthly issues, including all 90+ back-issues since 2012
- - Event discounts and early-bird signups
- - Gain insight from top achievers in the app store
- - Learn what tools to use, what SDK's to use, and more
Subscribe here