Ace the Square pairing interview
Written by Logan Johnson.
Heads up, we’ve moved! If you’d like to continue keeping up with the latest technical content from Square please visit us at our new home https://developer.squareup.com/blog
An engineer friend recently decided to apply to Square and asked me for interviewing tips. Luckily, I do a lot of interviews! I put together some notes, then shared them with other interviewers at Square and asked for comments. This is our collective advice for acing the Square pairing interview.
Learn about our process
The Corner has posts that explain the philosophy behind the Square Engineering pairing interviews. Don’t let the dates put you off. Our pairing interview has barely changed, and we’re still guided by the same philosophy. So, these posts are still totally relevant.
- Why we pair interview, 2011
- Pair Programming Interviews, 2013
- Pair Programming Interviews, Part II, 2013
Practice toy problems
With less than an hour for each pairing, we have to do fabricated problems. We’ve tried to design problems that help us learn as much as possible about how you think, how you write code, and how you collaborate.
Together, we’ll write and execute code during the interview, and try to get a working solution within the time allotted. Practice solving toy problems in a time limit prior to the interview.
Most problems are algorithmically focused. Problem sets like Project Euler are useful for getting into that mindset. Many of us recommend books like Cracking the Coding Interview. You shouldn’t need to memorize specific algorithms, just get your brain into that mode.
Write code like you normally would if you were going to submit real production code for review.
Use tools and languages you’re most comfortable in, so that you can demonstrate your expertise through working code. Don’t worry about what your interviewer likes, just make yourself at home and set yourself up for success.
Use whatever resources and references you normally would. Using resources like Google and StackOverflow effectively is not only acceptable, it’s encouraged. Knowing how to find information is a key skill!
Care about the things you’d normally care about — good style, reasonable performance characteristics, etc. — but don’t let them prevent you from getting to working, running code!
Don’t go overboard with “best practices” in an attempt to impress. It’s tempting to try to score points by laying it on thick with tons of testing, verbose comments, shiny libraries, and optimization deep-dives. Remember, we’re trying to get to know you as an engineer.
Just do your thing, and when in doubt, ask what the interviewer is looking for.
“Don’t be afraid to ask questions. That’s what shows us your ability to think critically and learn with your team.” Hannah Lau, Engineer
Teach and learn
We’re big on curiosity at Square, and our favorite interviews usually involve someone learning something.
Our interview problems are designed to have many solutions that we know about, and hopefully many more that we don’t. We love it when we see new variations on a theme or when a good solution comes entirely out of left field. We’re always excited to learn tools and techniques that are comfortable to you but new to us, and happy to return the favor.
At the end of the interview, we try to keep some time to chat. This is a great opportunity to ask questions, and great questions show us your capacity for critical thinking and learning with your team. Feel free to ask challenging questions, and we’ll do our best to answer anything we can.
“I’ve seen hundreds of different solutions to the same interview question — there’s a huge possibility space! What’s interesting, then, is that there’s no single ‘right’ answer, but rather a path of discovery. I love seeing a method inlined when we learn something new.” Matthew Todd, Engineer
Demonstrate engineering skill
Show your understanding of the problem. Identify requirements and constraints clearly. There’s no need to expound at length on every nook and cranny of the problem; we just want to see that you get it.
Test your solutions to demonstrate thoroughly that they work. Using a formal framework is not necessary. We just want to see that you’re thoughtful about what can go wrong, and that you know how to attain confidence.
Optimize for done
Above all, we want to arrive at a working solution in the time we have together. Temper all of the advice above with that knowledge. Manage your time.
Make necessary and appropriate tradeoffs, and call them out.
Don’t be afraid to iterate; get to a working solution first and improve performance afterward.
Compile early, compile often. It’s better to get the first half of the problem working than to run out of time and have nothing that works. This will help you pace your work, as well.
We want to hire you, not keep you away! Our ideal outcome is to have you come work with us.
Your interviewers are looking for things you do well. Doing well outweighs mistakes.
You can expect your interviewers to be reasonably helpful and completely honest. If you’re offered a hint by an interviewer, don’t worry, it’s not a trick!
We know interviews are stressful. The problems aren’t perfect, and nobody fires on all cylinders all the time. So, don’t worry if you stumble a bit; we’ll help you get back on track.
If you’re interested in interviewing at Square, take a look at squareup.com/careers for career opportunities, and feel free to leave any questions in the comments below.