Landing your first tech internship

Hussain Omer
13 min readOct 16, 2023

--

Freshmen + Sophomore year

Stay tuned for another blog post where I share my interview experiences in 3rd year!

· Introduction
· First-year
· Set your priorities
· Leetcode
· Projects
· Behavioural Interviews
· Technical Interviews
· How I Prepared
· Interviews and Offers I received
MLH
Photon Commerce
Patagona Technologies
Prodigy Education
Deloitte
Konrad Group
Fidelity Investments
Royal Bank of Canada (RBC)
· Conclusion

Introduction

Hey everyone, my name is Hussain Omer. I’m a 3rd year CS & Stats student at the University of Toronto. I have had the privilege to work at some amazing places in the past, and in this blog, I want to share some of my experiences in landing that first SWE internship, and what I did differently. I hope my experiences will greatly help you in your internship hunt journey.

First-year

In my first year, I was pretty determined to land an internship; however, I did not have any high hopes at all. That was because I was not really a competitive applicant for many of the postings; I had done some side projects, 1 technical writing internship in high school, and that was pretty much it aside from other small irrelevant roles. In first year, I tried to focus on going to networking events, and attending as many hackathons as I can. These hackathons mainly helped with not only building side projects but also networking with other individuals, and gaining insights from their experiences. I recommend every first year student to join hackathons as it can really help in networking your way to an opportunity that you desire.

First-year is also the year where academics really get to you — especially if you’re a UofT student. There are POSt requirements, grade cutoffs…etc which add to your stress. I would honestly recommend you to balance it out in terms of internship hunting, and academics — you do not want to shift your focus to just one of the things which is a mistake I made.

But if you want that competitive edge over other applicants, I also highly recommend you to start building side projects well in advance, polishing up your resume, going to networking events…etc.

Last but not least, make sure to talk to a bunch of upper-year students at your school, as they have already gone through the process and can share some really good tips.

Set your priorities

This is important — and this is something I always tell my friends who ask me for tips…etc. You want to position yourself well for the future. If your goal is industry — internships are your best bet. Otherwise, if you plan to go into further studies or academia — focus on academics more.

If applicant A has a 4.0 GPA and applicant B has a 3.3+ GPA but has internship experience and side projects — the edge goes over to applicant B in the industry.

Also, always keep learning — whether in the form of learning a new technology, new concept, or just anything in general related to tech. This helps you maintain a growth mindset.

Leetcode

When I was in my first year, I did not even touch a single leetcode problem lmao. I was not that serious about doing as many leetcode problems as possible — I honestly found it a waste of time at first-year because I knew that — first of all, I was not gonna be landing a FAANG company right off the bat, and second of all — even in the technical interview, I can get past it with simple DSA knowledge that usually comes from the introductory CS courses — For UofT students, that is CSC108 and CSC148. Leetcoding, however, is a really good habit to build upon right from the start because it keeps you in the loop with all the DSA knowledge and concepts. It helps you always be ready and prepared for technical interviews.

Projects

Usually, a lot of people tend to ask which projects they should do — and in most cases, my answer is full-stack. This is because full-stack projects allow you to interact with different components and get hands-on experience working with databases, backend and frontend. If you, however, are not interested in full-stack projects, then you can also take up ML projects. There is honestly no definite answer on which type of project you should do but I’d say start with full-stack. Build something that you are proud of — something that is meaningful and impacts others. Something that you can talk a lot about, especially in behavioural interviews.

Behavioural Interviews

A lot of SWE/CS students tend to assume that this is the easiest interview out of all. But this one holds equal weightage as the technical, and maybe even more in some cases. To prep for this type of interview, memorize the company’s culture code, and prepare some examples from your own experiences in each example, incorporate a culture that the company exhibits. A lot of the time, the companies tend to use the same type/style of questions. Prepare your examples, and study them. Even if the interviewer asks a question you have never seen before, you should know which example to use for that particular question.

Technical Interviews

If you’re a first-year, and maybe a second-year student, you shouldn’t expect the technical interview to be extremely difficult. In such cases, they are usually just testing your basic technical concepts and maybe give you an LC easy question to solve. But if you are a 3rd year+ student, then you can expect to be grilled in this interview with LC medium/hard questions or system design.

In either case, though, you should be merely following the same strategies. The interviewer is not really assessing how fast you can write code — but they are assessing how you come up with the solution, how you communicate it, and if you demonstrate a good understanding of DSA/technical concepts.

If you cannot come up with a solution right away, ask the interviewer for tips/hints.

From my experience, I can say that communicating your thought process and thinking is >> finishing the problem. I even got rejected at some places where I was able to fully solve the coding problem, but did not effectively communicate my thought process with the interviewer — so don’t make that mistake.

How I Prepared

For the behavioural portion, I usually keep a document with the most commonly asked questions and a story from my projects or past internship experience for each of the questions. I do not usually just copy-paste the exact commonly asked question in the document, but instead give a brief title so that if I got asked a new question, I would know which story to use. For example, I have a title like “leadership/teamwork” and inside that title, I would have a story that describes the time I worked effectively within a team or led a team to success. Then, I usually edit my responses specific to the company I would be interviewing for — this would involve tweaking my responses to reflect the company's culture code.

For the technical portion, I usually start by brushing up my DSA/Technical skills by solving Neetcodes 150 list. If, however, I’m short on time, I start by solving the Blind 75 List. I also don’t just solve the question and then move on to another question — I look at the optimal solution for each question I’m trying to solve. This helps me give another way of solving the question in the most efficient way.

I also tend to ask other people who have gone through the technical interviews at the company I’m interviewing for about tips. Most of the time, I do get a helpful response such as they would tell me the topics I should focus on such as Graphs/Trees or LinkedList and techniques such as Two-Pointer. This helps me narrow my focus while I’m prepping and saves a lot of time.

I also have the Cracking The Coding Interview book, so I just read up on some of the chapters for a quick refresher on some of the topics.

For system design rounds, I usually just search online about past system design questions and sample answers to them. Sometimes, I would watch videos on YouTube..etc to study. I don’t have a lot of experience yet with these rounds as I have only done a couple of System Design interviews, so have not a lot to say in terms of prep.

Interviews and Offers I received

MLH

In my first year, I interviewed at MLH (NYC-based startup)— if you have joined or have heard of hackathons then you probably know this company very well. It had two rounds — one technical round and the other was a behavioural type/discussion round. I cannot remember the order I had it in.

In the technical round, I was asked to go through a personal project I had created in the past and go through the technical specifications of it. How I built it— What frameworks I used — Conceptual questions about the language I did it in — Some questions on why I chose the particular DS and how would have that particular component changed if I did it in a different DS…etc were Some of the questions I got asked.

I presented a Web Dev project which I was pretty proud of at that time because it had a good impact — over 30+ users and 30+ stars on GitHub. It was also a pretty unique project. If you’re interested in it, I’ll link it here. I, along with my team, created an algorithm in JavaScript that was the main feature of this app, so we mainly talked about that and how I did it. He also asked some JavaScript-specific questions such as prototypes, promises, async/await…etc.

Next, a week later I was scheduled to do the last round which was a discussion/behavioural round. It was pretty straightforward, as we mainly talked about my projects again, and why I wanted to join.

3–4 days later I received the offer. This was for Summer 2022.

Photon Commerce

This was a Cali-based startup that I wanted to join for my Fall 2022 term. I liked the work they do and how they had big tech companies such as Microsoft, and Apple as some of their clients. It was related to payment processing, and simplifying/automating the invoice analytics process. It had a coding assessment followed by a discussion/behavioural round. The coding assessment was not bad, and so I was able to complete it. I remember not having the best score but it was still a passing score. I then got invited to meet with the manager of the team I would be working in, and we just talked about my motivation, past experiences, and my skill set. This role was an ML/data processing role so I mainly talked about an ML model I created in a past hackathon. He seemed to really like the project and a week later I was offered the role. Pretty good experience I’d say.

Patagona Technologies

This is a startup based in Toronto, and I applied to the Software Developer Intern role for the Fall 2022 term. Patagona Technologies is a software development company working with the Canadian Department of National Defence to study and combat online disinformation. I liked the team and so I applied because I wanted to try out something different. I was invited to the first round interview which was just a discussion-based/behavioural round, and it went well honestly. I talked about why I was interested in the team, and my past experiences/projects. They also seemed very impressed with my experiences. However, they preferred an 8-month co-op term but I could only do 4 months at that time — also, they were looking for proficiency working in a Linux environment — but I had limited experience with that.

Unfortunately, a week later I was emailed with a rejection :(

Prodigy Education

I received an invite to a virtual on-site interview for the Full-Stack Developer intern role for the Fall 2022 term. However, I declined it because the tech stack they used — I did not have experience with it. It was honestly one of the worst decisions I made declining that interview just because I thought I was underqualified for it. I just wanted to include this to let you know that even if you feel like you’re underqualified for a role — just do it anyways. You never know, and that experience can also greatly help you in your preparation.

Deloitte

A recruiter reached out to me in Fall 2022 with an interview invitation for HireVue — which is like an online video interview platform where it's a rapid-fire interview. You are given a set amount of time per question, and I think there were 4–5 questions. I initially did not plan to do it because the role was for the Winter 2023 term, and I planned to do only school full-time. However, I still ended up doing it because Deloitte is a pretty renowned company and I did not want to let go of this opportunity.

Exactly a week later, I received an online assessment invite. The role I applied to was the Technology Analyst Intern role, so the assessment was more catered toward the tasks I would be doing if I were to receive the job offer. I completed it and submitted it within the allocated time.

3 days later, I received an invite to a 1-hr interview with the team I would be placed in. The interview was both technical and behavioural. There were 2 interviewers. The first half was just behavioural stuff and discussing my past experience, projects, and why I wanted to join the firm…etc. The second half was technical. I was asked technical questions relating to databases, and one of them was also like a system design question which I couldn’t properly answer and stumbled upon. I remember not knowing the answer to one of the questions as well, and simply responding with “I’m not so sure”. When the interview ended, I knew I lost the opportunity and that I flunked badly.

However, exactly a week later, I received a call from the recruiter that I received the offer! I was pretty shocked and happy at that moment.

This goes to show how you do not necessarily need to be an expert in a technical interview and it is okay to just be honest, and say you do not know the answer than trying to come up with something that makes no sense. I also think that even though I was nervous, I still communicated well which the interviewers probably liked.

This role was for 8 months from Winter 2023 to Summer 2023 in Toronto, Ontario.

Konrad Group

I also happened to receive an interview from Konrad Group. This was for PEY if I recall correctly, for the Software Developer Intern position. I passed the resume screen so the first round was a Phone Interview. I did the phone interview, and it went quite well. The recruiter asked me about my technical skills, my past internship experience, my projects and why I wanted to work at Konrad.

Unfortunately, a week later I got an email that I was not selected to move forward in the process :(

Fidelity Investments

I received an interview invite for the Software Developer Intern role for Fall 2023. It was part of their student-emerging program. It was just 1 interview which was focused mostly on behavioural, “tell me about a time…” type questions, which mostly talked about my internship experience at Deloitte. I basically just used my Deloitte experience to answer most of the questions they asked since I had already experienced those in that role so it was quite easy.

It was a panel interview with 3 interviewers. A week later, I received an offer to join the team! However, I decided to decline it because I had already accepted another offer at that time.

Royal Bank of Canada (RBC)

I had my eyes on this company for a while — only because I have heard that people who have interned within the T&O team really enjoyed working there and got to work on some cool tech. RBC is the only Canadian bank that has the latest tech and is more tech-focused.

I actually received 3 interview invites from different teams. I received an invite for QTS Developer at RBC Capital Markets, Software Developer at RBC T&O, and Automation Analyst at RBC T&O.

The QTS Developer interview was 1hr both behavioural and technical. The first half was behavioural with 2 interviewers — mainly talking about my past experience at Deloitte, and the projects I have created. They seemed to be really interested in the work I was doing at Deloitte so I just talked about that. Then, I was told to screen-share as I had 2 technical questions.

The first one was easy, just your classic linked list reversal. The second one was hard — it was a DP problem related to sudoku and its implementation. I had described my algorithm but it had some flaws.

To end the interview, I was asked SQL questions, and I couldn’t answer one of them since I literally forgot lol.

2 weeks later, I received a rejection for this specific role.

Next, I had the Software Developer Intern interview with the team. There were 3 interviewers, and it was mostly technical with some behavioural aspects like my past experience. In terms of technical, I had like 1 system design type of question which I was able to answer, and then the rest were conceptual questions on time complexity and Python-specific libraries.

A week later, I received an offer for this role and accepted it within 3–4 days.

I declined the interview invite for the Automation Analyst intern role since I had already accepted this role for Fall 2023.

Conclusion

Internship hunting is a pretty stressful and gruelling process — so yes it is quite hard sometimes but know that with the right strategies, preparation, and efforts, you can make it. Treat rejection as re-direction, and move on. Take advantage of the mentorship provided at your school from industry leaders, or peers who have done internships. Ask them about their experiences. Join a lot of networking events to get your foot in the door. Be proactive when applying — always apply early. Turn on LinkedIn notifications for the roles you’re interested in. Be ahead of the game. Getting the interview is always the hardest, so make use of resources around you such as resume workshops, and getting your resume reviewed by upper years.

Feel free to connect with me and ask any questions!

LinkedIn: https://www.linkedin.com/in/hussainomer/

Personal Website: https://hussaino.com/

--

--