In this post, we’ll dive into the interview process for our software engineering roles for campus candidates. We hope to demystify what it is we’re looking for in candidates during the interview process.
In particular, this is what you should expect from our 2021-2022 full-time campus recruiting season. The information you’ll read here applies to our internship programs as well, just with a slightly abridged process.
We’re not promising your interview experience will look exactly like this, as we are constantly iterating on this process, but hopefully, this will give you a window into what it’s like to interview for a software engineering role at HRT.
Software engineering at HRT spans multiple subteams and departments, as we’re all Coders at HRT <3. This post covers the interview process for two of our roles, “Software Engineering” and “Algo Engineering.” These engineers use a combination of C++ and Python to build and maintain our live trading infrastructure as well as our research and development environment.
Each stage of the interview process will have a particular focus/scope and a standardized set of questions for the season. Our goal is to get a sense of how you think and what it would be like to collaborate with you. We expect strong candidates to be able to program, be effective communicators, and work through problems methodically. We also think it’s ok for candidates to need hints, guidance, and to make mistakes!
At a high level, you can expect a take-home test, roughly two phone interviews, and a full day of back-to-back “onsite” interviews (that can be conducted virtually or onsite).
- These are usually timed and have a deadline.
- Depending on the role you’re interviewing for, you may have restrictions on which languages you can choose.
- These are typically conducted over Hackerrank or Codility.
- Feel free to use resources that are available to you (books/internet) as a language reference while attempting the challenge.
- Remember to test your code! The sample test cases provided aren’t comprehensive. Make sure to think of possible corner cases.
- Coding style isn’t super important for this challenge – don’t worry about the maintainability of your code.
- Working out a small example on paper before jumping into the code might be helpful.
- Technical Discussion: These rounds are usually a 45-minute discussion around one of the following topics: Knowledge of Systems / Data Structure / Problem Solving.
- Programming: This tests your programming skills more specific to the team you’re interviewing for. For certain roles, you’ll be asked to program in either C++ or Python, while others will give you the choice to pick any language you’re comfortable with.
- These can be conducted over Zoom or in-person (currently with limited availability). There are usually somewhere between 3-5 rounds, and can include topics like Low-level Systems Knowledge, Operating Systems, Computer Architecture, Programming Fundamentals, Systems Design, and even more programming!
First thing’s first – we’re looking at your programming skills:
- Programming skills: Are you able to write idiomatic code that uses modern syntax, makes optimal use of resources, is well-encapsulated, easy to read, and well-commented?
- Systems-level knowledge: Here we’re looking for candidates with fundamental systems knowledge (memory, I/O, process management). Can you understand what is happening under the hood?
- Problem-solving skills: When presented with a problem that you don’t know how to solve, are you able to break it down and incrementally work towards an answer?
Technical skills aren’t the only thing we’re evaluating though – we want to see how you think, and how you approach problems. Can you think of a solution to the big picture and map out all of the steps? Are you keeping track of your progress? If you change your approach, are you communicating that to your interviewer? Here are some areas we are evaluating:
- Collaboration: HRT is an extremely collaborative firm, so we’re also hoping to get a sense of how you like to work with others. Do you take hints well? Do you have an openness to a different approach?
- Teachability: Did you apply ideas or approaches discussed earlier in the interview to subsequent questions or problems? This is a great way to show that you’ve learned something and that you’re receptive to feedback.
- Communication: This is key to being successful in a collaborative environment. It’s important that you’re able to effectively communicate previous projects or work in an appropriate amount of detail. Many times your interviewer will not be an expert in the exact topics that you’re discussing, so we recommend you check in to see if they’re still following, and provide the context where it’s needed.
- Practice talking out loud when coding on your own.
- Practice explaining technical topics to a non-technical audience.
- Use a square camera angle.
- Try to maintain eye contact – look at the camera, not the screen!
- Use a professional virtual background, or blur your background.
When to over-communicate with your interviewer:
- If you need 5 minutes of quiet time to think.
- If you need to think out loud.
- If you’re changing your approach.
- If you realized you made a mistake and want to backtrack.
- If you’ve heard the problem before. Honesty and integrity are important to us.
- If your interviewer uses a term you’re unfamiliar with.
- If you don’t know the answer, or if you’re not fully confident in your solution.
- If you are stuck, unsure how to proceed, or need a hint.
As I mentioned early on, the info we provided in this post addresses two types of software engineering roles at HRT and their interview processes. We tailor this experience slightly to better fit each role and team. As you begin your interview journey with HRT, your recruiter will have the most relevant info for you. They’ll let you know what the focus and structure of each round will be beforehand, and what to expect, so you should use the information they provide as your primary source of truth even if it differs from what you’re reading in this post. You should consider your recruiter as your point of contact and your advocate in this process – ask them any questions you have!
For more info on all of our campus recruiting roles, click here.
We wish you the best of luck in all of your future interviewing endeavors!