I applied for Systems Internship - Summer 2021 back in December 2020 at Hudson River Trading, New York. The internship description was: -
We are looking for highly motivated students who are eager to learn and excited about systems to join us for our summer internship program. As a systems intern, you may have the opportunity to work on projects in the following areas:
- Programming/scripting (Golang, Python, C++, C)
- FOSS development
- HPC, Cluster computing
- System Administration
- Linux, Debian
- Linux-based computer security
- Data Storage
- Large deployment or config management
The first step was a coding test on the Codility platform. If you have
used any of the online coding platforms, this is similar. It was a
2.5 hrs (90 mins)
test consisting of 3 questions. They let you use
online references (documentation, man pages, etc.)
but do not copy
the code as it will highly reduce your chances of qualifying for this
first stage. You can choose between C/C++, Python and Golang
(no Java 😪).
Questions were clear and of medium level. But they were designed in such a way that you must know the basics before you could attempt. Also, they expected a clear and concise approach. Two of the most important points in their instructions were: -
- While correctness and performance are the most important factors for evaluation, we will take test duration into account as well.
- Please understand that this test is meant to be challenging. A perfect score is not necessary to move on to future interview rounds, so do the best you can!
So, you must be near perfect in your approach as well as on time. I did them kind of quickly. They will show you a summary of your submission but not the results. It will take almost 2 weeks to get back to you for further steps.
Next, I received a mail invitation for a telephonic interview. This interview will last about 45 minutes and will be technical but will not require coding. Interview topics may include your background, programming languages, and Unix/Linux concepts. Once you receive this mail you can then decide a time slot for an interview.
I was not sure what they will ask if this is not a coding interview. The interviewer was very polite, and he was explaining the questions too. Questions were not so tricky but practical and real-life. Since it was not for SDE role, the questions were mostly related to Linux/Unix, C++ (mainly pointers and memory), Python/Bash scripting, automation, knowledge of tools (IDEs, Editors, System Administration Tools) and previous experiences. The interview would often explain why he is asking this question, this was very nice. Then some common interview questions, why do you want to work for this role? What makes you fit for this role? etc.
One thing that I want to point out is that the interviewer was repeatedly checking my resume, and for the most part he did not ask anything that was not on my resume. So, my tip is to create a nice resume with genuine work/tool experiences. And when you are applying for such a role, it would be helpful if you mention mathematics or other courses that you have taken. Do not lie on your resume. They will easily catch that.
The other thing is to keep your words short and clear; I was not great at communication, but you can be. If the interviewer allows then use examples for the things you cannot explain. I used nice examples. At last, he gave me short feedback on how well I performed.
At last, I want to point out things I should not have done. The first is, I did not ask much about the role, you must do this at least once. Second, I am talkative, I do not know if the interviewer was not faking his expressions (because he would often discuss in-depth), but not all interviewers will be the same. So, do not talk too much, nor too less. At last work on your communication skill, mostly how you to present things and how to answer technical as well as behavioral questions. I was not fluent, but my way of presentation might have saved me.