# Preparing for a developer interview

Developer Jobs
20,859 VIEWS

*Posted Saturday, September 09, 2017 by*

**TIGRAN SLOYAN**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!

## 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.