In this post I will tell you what internship is in a foreign company and how to prepare for interviews so as to get an offer.
Why should you listen to me? Should not. But over the past two years I have been on internships at Google, Nvidia, Lyft Level5 and Amazon. Interviewing the company last year, received 7 offers: from Amazon, Nvidia, Lyft, Stripe, Twitter, Facebook and Coinbase. So I have some experience in this matter that may be useful.
2nd year student of the Master Programming and Data Analysis, St. Petersburg HSE. He graduated from the bachelor's program "Applied Mathematics and Computer Science" of the Academic University, which in 2018 was moved to the St. Petersburg HSE. During his undergraduate studies, he often decided contests in sports programming and participated in hackathons. Then he went on internships in foreign companies.
Internship – work for students for a period of several months to a year. Such programs allow the employer to understand how the trainee copes with his tasks, and the trainee to learn a new company, gain experience and, of course, earn extra money. If during the internship the student has done a decent job, then he is offered a full-fledged vacancy.
Judging by the reviews, it’s easier to get a job in a foreign IT company after an internship than by going through an interview for a full-time vacancy. Most of my friends got settled in Google, Facebook, Microsoft.
How to get an offer?
Suppose you decide that you want to go to another country in the summer and get a new experience, instead of digging beds from your grandmother. Wow! Help granny anyway! Then it's time to get down to business.
A typical interview process with a foreign company is as follows:
- Serve internship application
- You decide Hackerrank / TripleByte Quiz Contest
- Come in screening interview
- Then you are assigned first technical interview
- Then second, maybe the third
- Name on onsite interview
- Give offer
, but it is not exactly…
Let's open each of the points in more detail.
Application for internship
The captain tells you that first of all you must fill out an application on the company's website. And most likely you guessed it. But what neither the captain nor you could know was that large companies use referral systems through which company employees recommend brothers in the profession – so the candidate stands out from the endless stream of other comers.
If you suddenly do not have friends who work in offices that interest you, then try to find them through friends who will introduce you. If there are none, open Linkedin, find any employee of the company and ask them to post a resume. He will not write that you are a cool programmer. And this is logical! After all, he does not know you. However, the chance to get an answer will still be higher. Otherwise, submit an application through the site. I received my offer to Stripe without knowing a single person working there. But do not relax: I was lucky that they answered.
Try not to be very upset when piles of letters with the content “you are so cool, but we have chosen other candidates” or will not answer at all, which will be even worse. Especially for you, I drew a funnel. Out of 45 applications, I received a total of 29 responses. Only 10 of them offered to be interviewed, while the rest refused.
Feel the advice that is in the air?
Hackerrank / TripleByte Quiz Contest
If the resume has survived the initial screening, then in 1-2 weeks you will receive a letter with the following task. Most likely, you will be offered to solve algorithmic problems on Hackerrank or go through TripleByte Quiz, where you will answer questions regarding algorithms, software development, and the design of low-level systems.
Usually the contest at Hackerrank is simple. Often it consists of two tasks for algorithms and one task for parsing logs. Sometimes they are also asked to write a couple of SQL queries.
If the test is successful, then a screening interview awaits you, in which you will talk with the recruiter about your interests and about the projects that the company is engaged in. If you show interest and your previous experience meets the requirements, then everything will go smoothly.
Express all your wishes about the project. During such a conversation with a recruiter from Palantir, I realized that I would not be interested in working on their tasks. Therefore, we no longer wasted each other's time.
If you survived to this point, then the main share of chance is already behind! But if you screw up further, then blame only yourself;)
Then come the technical interviews that are usually conducted via Skype, Hangouts or Zoom. Check in advance that everything is working on your computer. During the interview, there will be something to be nervous about.
The format of the technical interviews is highly dependent on the position you are interviewing. In addition to the first of them, which will still be for solving algorithmic problems. Here, with luck, you will be asked to write code in an online code editor such as coderpad.io. Sometimes in Google Docs. But I didn’t see anything worse than this, so do not worry.
They may also ask a question about object-oriented design to see how well you are familiar with software design and what design patterns you know. For example, they may be asked to design a simple online store or twitter. Since last year I was interviewed for positions related to machine learning, during the interviews I was asked the appropriate questions: somewhere it was necessary to answer a question on the theory, somewhere to solve the problem on the theorver, and somewhere to design the face recognition system.
At the end of the interview, you will certainly be given the opportunity to ask questions. I recommend taking this seriously, because thanks to the questions you can show your interest and demonstrate competence in the topic. I am preparing a list of questions. Here is an example of some of them:
- How is the work on the project arranged?
- What is the developer’s contribution to the final product?
- What difficult task have you had to solve recently?
- Why did you decide to go to work in this company?
Believe me, it’s difficult for interviewers to answer the last two questions, but they help to understand what’s going on inside the company. I note that you are not always interviewed by a person with whom you will work in the future. Therefore, these questions give an indicative idea of what is happening in the company.
If you successfully complete the first interview, you will be offered a second. From the first, it will be distinguished by the interviewer and, accordingly, tasks. The format is likely to remain the same. After passing the second interview, they can offer a third
wow, you have gone far.
If up to this point you have not been refused, then an on-site interview awaits you, when the candidate is invited to an interview at the company’s office.
Maybe not waiting … Not all companies spend this stage, but many of those who spend will be ready to pay for flights and lodging. Is it a bad idea? Great! I still haven’t been to London … But in some cases you will be asked to go through this stage on Skype. I asked Twitter to do so because there were many deadlines, and there was no time to dangle to another mainland.
The onsite interview consists of several technical interviews and one behavioral. During a behavioral interview, you talk with the manager about your projects, what decisions you made in different situations, and the like. That is, the interviewer is trying to better understand the personality of the candidate and to understand in more detail the work experience.
Well, everything, only pleasant excitement lies ahead: 3 Nerves tickle, but you can’t do anything. If everything went smoothly, then there is nothing to fear – the offer will arrive. If not, it’s sad, but it happens. How many places did you go to? At two? Well then, what were you hoping for?
How to prepare?
This is a zero step. Just don’t even read the article further. Close the tab and go do a normal resume. I'm serious. While I was on an internship, a lot of people asked me to refer them to a company for an internship or full time position. Often resumes were poorly designed. Companies rarely respond to applications, and bad resumes tend to lower this percentage to zero. Someday I’ll write a separate article about resume writing, but for now remember:
- Indicate the university and years of study. GPA is also desirable to add.
- Remove all water and write specific achievements.
- Make your resume simple but neat.
- Ask someone to check the resume for errors in the English language if you have problems with this. Do not copy the translation from Google Translate.
Check out this post and check out Cracking the Coding Interview. There is about it too.
We have not gone through any interviews yet. I have already told you what the whole process looks like, and now you need to prepare well for the interviews so as not to miss the chance to spend the summer pleasantly and, possibly, with benefit.
There are resources like Codeforces, Topcoder, and Hackerrank, which I already mentioned. At these sites, you can find a large number of algorithmic problems, as well as send their solutions to automatic verification. This is all great, but you don't need it. Many tasks on these resources are designed for a long solution time, require knowledge of advanced algorithms and data structures, while tasks at interviews are usually not so complicated and are designed for 5-20 minutes. Therefore, in our case, a resource such as LeetCode, which was created as a tool for preparing for technical interviews, is much more suitable. If you solve 100-200 problems of varying complexity, then with a high probability you will not have problems during the interview. Of the decent ones, there is also Facebook Code Lab, on which you can choose the duration of the session, for example, 60 minutes, and the system will pick up a set of tasks for you, which take about an hour to solve on average.
But if you suddenly turned out to be a nerd who is spending his youth on Codeforces
I was one of themthen generally great. Happy for you. You should succeed;)
Many more are advised to read Cracking the Coding Interview. I myself selectively read only some of its parts. But it is worth noting that I solved a lot of algorithmic problems in my school years. Did not solve the gnomes? Then read it better.
Also, if you have never had or had few technical interviews with foreign companies, be sure to go through a couple. But the more, the better. You will feel more confident during the interview and less nervous. Organize test interviews at Pramp or even ask a friend about it.
I failed my first interviews precisely because I did not have such a practice. Do not step on this rake. I already did it for you. Do not give thanks.
As I already mentioned, during a behavioral interview, the interviewer tries to learn in detail about your experience and understand your character. What if you are a great developer, but a wild egoist who is impossible to work with as a team? Thinking of just working with George Hotz? I do not know, but I suspect that it is difficult. I know people who refused. So the interviewer wants to understand this about you. For example, you may be asked what your weakness is. In addition to questions of this kind, you will be asked to talk about projects in which you played a key role, about the problems that you met with, and their solutions. Sometimes such questions are asked at the beginning of a technical interview. How to prepare for such an interview is well written in a chapter in Cracking the Coding Interview.
- Make a normal resume
- Find someone who can offer you
- Go wherever you go
- Solve the lightcode
- Share a link to an article with those in need
P.S. I run a Telegram channel where I talk about the experience of internships, share my impressions of the places I visit, and express my thoughts.
P.P.S. I got myself a YouTube channel where I’ll talk about useful things.
P.P.P.S. Well, if there’s absolutely nothing to do, then you can watch this interview on the ProgBlog channel