This post is inspired by Steve Yegge’s blog post Get that job at Google.
I have noticed that some candidates are taken by surprise during HauteLook’s interview process. These people are definitely smart and I think may have had a better chance at landing the job if they knew what to expect. So here is what you need to know in order to get a job at HauteLook. General Overview HTTP
HauteLook is an e-commerce company on the web. Pretty much everything we do involves the web (even our iOS apps). You should be familiar with the basics of HTTP 1.1. The basics include things like verbs, response codes and headers. You should also know high level concepts like how caching works over HTTP. All of this information is readily available on the web. That being said, I really like the HTTP Developers Handbook because it explains HTTP in a way that is easy to grok. Code
Code is the preferred medium of choice when communicating concepts between different developers. We love code. We are excited to show you our code and want you to show us your code as well. Be prepared to write some code on the white-board. I know we spend most of our time writing code in front of a computer, so it may be helpful to practice writing some code examples down on paper to get familiar with the process.
HauteLook is an open-source friendly shop. We also want to see how involved in the community you are. In addition to your resume, we like to check your github account to see what projects interest you. The link to your github account is one of the most important things you can put on your resume. I normally use http://resume.github.com to get a nice overview of what each interviewee has done. Put your github username into the form and see what it looks like. If nothing else, let that inspire you to submit a few pull requests to your favorite project. Logic
You might be asked a logic question. If you can get the answer that is great, but we really want to see your approach to solving the problem. Our logic questions are not riddles nor do they require leaps of faith. They are fairly straight-forward problems that can be solved with basic math. Consider practicing some logic questions with your friends so you are more comfortable during the actual interview. Position Specifics
The HauteLook development team is split into four categories:
You need to be familiar with basic algorithms like sorting, tree searching and hash tables. We won’t ask you to implement these on the whiteboard, but be prepared to apply them to a problem and answer questions about the Big-O for different implementations.
Know how the database works. Doctrine and other ORM libraries are great at boilerplate SQL, but that does not excuse one from understanding what is going on. Be prepared to answer questions about the SQL-99 standard and be familiar with how indexes work.
Be familiar with design patterns as well. You should be able to discuss the common ones with us and have an opinion about them. You should also tell us when it is appropriate to use them. I recommend reading Head First Design Patterns if you are unfamiliar with design patterns.
The use of jQuery is ubiquitous among all websites and it is just assumed you are familiar with it. HauteLook is now focused on the new class of frameworks out there like Backbone or Ember. You should be familiar with these frameworks and ideally have written some code in at least one of them. If not, you should at least know why these frameworks are important and what problems they are trying to solve. Mobile Engineer
Our mobile team is primarily focused on iOS. The more you know about creating apps for the iPhone or iPad the better. This involves everything from available iOS frameworks, to app states to submitting an app. That being said, we like Android too. If you your passion is creating Android apps then show us.
Threads. Know why they lock and how to prevent locking. Also be prepared to discuss memory management.
You need to be familiar with the role of a backend engineer and be knowledgeable about the infrastructure needed to run a high-volume website. Be very comfortable in at least one scripting language (bash, perl, etc) and how to interface that language with common unix commands like ssh.
Be prepared to talk about the tools used for continuous integration, automation, measurement and tracking. Send Us Your Resume
You know what to expect, now go apply. Study up, nail the interview and join our team.