Engineering Onsite Interview: Software

What are we looking out for?

A software engineer in Quantcast possess a high degree of understanding in using data structures and algorithms to solve engineering problems in the real world.

At Quantcast we are looking for well rounded Engineers. We hire for strong technical skills but we believe that engineering is not just coding but figuring out how to solve problems, how to sell ideas, how to manage an idea and complexity of the problem.

You will be expected to be able to take on large-scale systems design from conceptualizing to stack selection. All software engineers and even engineering managers are hands-on developers with excellent coding skills in multiple languages such as Java, Python, C, Ruby, etc.

The Quantcast DNA

Your interviews are technical interviews but don’t be surprised with non- technical, behavioral  questions. Here are the qualities we are looking for in our future Engineers:

  • Individuals at Quantcast are owners and experts who make significant impact within the organization
  • One constantly maintains the standard and raises the performance bar and ensure peers do the same.
  • Irrespective of title, everyone has the right to voice their opinions and challenge decisions. Leaders are expected to respect these rights.
  • We are the face of Quantcast to our customers and always aim to deliver results on point.

How should I be preparing for it?

  • Be well-versed in algorithms and data structures.
    • Hash tables, Linked Lists, Breadth-first search, depth-first search, Quicksort / merge sort, Binary search, 2D arrays, Dynamic arrays, Binary search trees, Dynamic programming and Big-O analysis.
  • Understanding of system design
    • Distributed Systems Design, Protocol Design, RDBMS / NoSql Databases (table, relationships, indexes and query design), Caching (eviction policies, concurrency issues), API Design.
  • Strong programming skills – the programming interview will evaluate your ability to solve problems on the spot. If you are given a choice, select the language you know best – the primary languages used at Quantcast are Java, Python, Scala, but we also use Javascript, C++, Ruby, GO. Teams generally choose the language/framework based on a project’s requirements.=

What problems you will be expected to solve?

Given the method please fill in a body which returns the desired Output

public Output doSomethingWithInputReturnOutput(Input input) {

….

}

Give the interface ThingBuilder please talk through a design and code out an implementation

public interface ThingBuilder {
Thing build(Ingredient... ingredients);

}

Given this class skeleton and these tests code out a class which fulfills the spec…

Pitfalls/ Tips

  • The code you write in the interviews are probably the only examples of your code that your interviewer sees. This is your chance to shine. We look for the quality of your code but also how you solve problems. We want to see your thought processes as you work through each stage of the programming problem. Interaction is key here.
  • The less help you need to solve the problem, the better but showing an intelligent thought process and responding well to the hints you are given is also important.  
  • Practice writing answer on a whiteboard.
    • You will work one-on-one with your interviewer. He will give you a marker and a whiteboard and ask you to write a code. The interviewer wants you to talk through the question before or while writing.

FAQs

Your interview is a conversation, we want you to leave our office knowing what the hiring manager wants, what the team is like, what your workday would be like and the tools, technologies you’d use to do your job. Have a strategy for asking your interviewer questions, here is what we recommend:  

  • Think of things you want to know about us before you will accept an offer, interview us for:
    • The position (responsibilities, challenges, career progression)
    • Team interactions (team structure, meetings, project management tools/ methodologies, interactions with other teams).
    • Development process (development time, code review, QA testing) Open source, Codebase/ architecture (test suite, codebase documentation, build process/ automation, product hosting)
    • Tech stack: (Front- End/ Back- End/ Systems Administration) (rationale behind the stack? New tools?), Product voice (product ideas, meaty stuff pushed to release)  
    • Culture, Company, competitors
  • Ask questions that are relevant to the person and the position you are interviewing for.   

Resources

Cracking the Coding Interview

Effective Java

Java Concurrency in Practice