Landing Your First Internship/Full-time Offer

Victor Sun
MDBlog
Published in
6 min readOct 14, 2019

In this article, I discuss how to build your network, write your resume, and prepare for interviews to land your first software engineering internship internship or full-time job. This article is by no-means a comprehensive interview guide, but merely an introduction to give you a little overview about how to get software engineering roles out of college.

Building Your Network

Go to as many career fairs and info-sessions as possible. This is a great opportunity to expand your network and find out about more companies. Bring your resume, talk to engineers, and get recruiter contact information. Frequently companies will offer campus interviews immediately following career fairs, so prepare an elevator pitch, ask good questions, and try to be memorable. Remember to follow up with recruiters following career fairs to get a head start with the application. This is infinitely better than applying online only for your resume to get lost in a pile with thousands of other applications.

In addition, don’t be afraid to reach out to engineers, recruiters, executives, or just about anyone on LinkedIn, you will be surprised by the number of responses you get. Often times reaching out to someone at a company will mean a fast track to getting interviewed at that company. In conjunction with building a LinkedIn network, build a personal network. Make friends with people in your classes, join clubs and make connections there, make the effort to meet people and develop your relationships. This network will prove invaluable throughout your life and career, but even as a college student seeking a job, these are people that you can reach out to for referrals or information about specific companies. Getting a referral will be a huge advantage because it usually means your resume will be read manually in a separate pipeline and is definitely much more likely to result in an interview.

Writing your Resume

Often times, the resume screen can be the hardest part of the application. How do you make yourself stand out in a pile of thousands of applicants? For online applications, I recommend reading about how Applicant Tracking Systems or ATS work, but essentially, it boils down to scanning your resume for keywords. There are a variety of tricks you can do optimize for ATS but I won’t go into those in detail, and we’ll focus on building your resume for a human reader.

The first thing is readability. Make sure your resume is well-formatted and densely packed, but still easy to read. Only include the most recent and most relevant experiences that you can reasonably fit on a page. Typical sections to include in your resume are Education, Skills, Experience, and Projects/Leadership. On average, your resume will be scanned in about 6 seconds, so make sure you are concise with your resume and bold or italicize keywords as you see fit. Make your points objective and result-oriented, focusing on the technologies used, the deliverable, and the impact in each of your experiences. Some questions you want to be thinking about are why did what you did matter and what tools did you use to accomplish it?A potential template description you could use for describing your experience is shown below:

[Business Result] [Your Deliverable] [Prepositional Phrase explaining what you used to deliver the result]

Also feel free to exaggerate your accomplishments within reason and use strong verbs to highlight the impressiveness of your deliverables. I could go on about resume building but to keep things short and simple, I’ll move on to talking about interviews and I’d recommend looking at some sample peer resumes to get an idea of what exactly to include.

Interviews

Typical technical interviews for software engineering positions will be 45 or 60 min with an engineer at the company you are interviewing for and will be around 5–10 min for introduction and talking about your background, 30–45 minutes for 1 or 2 coding questions, and 5–10 min at the end to ask questions. After resume screens, the process typically begins with either an online coding challenge and/or a phone screen (technical interview over the phone), and then result in an onsite, where you’ll usually get lunch with a team and have several consecutive interview rounds. Typically the technical questions will relate to algorithms and data structures, but sometimes can include system design and domain knowledge as well and are aimed at giving the company insight on how you think and solve problems.

The single most essential thing you can do to prepare for your interview is by practicing data structures and algorithms questions through Leetcode, Cracking the Coding Interview (CTCI), or other resources for practicing data structure problems. In addition, you can typically checkout the company’s Glassdoor page and can frequently find past interview questions from that company. In tandem with writing code on a computer, make sure you are comfortable doing so on a whiteboard as well and practice talking through your solutions. Practice some mock interviews with your peers and feel free to use resources like Pramp which will match you with other aspiring engineers to practice mock interviews. Technical interviews are also usually language agnostic, meaning they let you program in whatever language you like, so I recommend you decide on a language, learn all the key libraries for that language, become super familiar with it and stick to it.

Besides the technical components, come prepared with a brief elevator pitch on your relevant skills and experiences, and do research on the company and come with good questions to ask the interviewer. This will not only help you engage with the interviewer more, but will also provide you valuable information when you are deciding which offers to take.

A couple tips when actually doing technical interviews:

  1. Restate the question and go through the test examples given to make sure you understand the question. Feel free to ask clarifying questions if you have any.
  2. Think aloud and talk through your logic. Identify the algorithms/data structures you plan on using before writing the code. Try to gauge the interview’s feedback to your ideas and develop them accordingly.
  3. If you are stuck, don’t panic. Talk through some ideas you may have with the engineer and just start with a naive way of solving the problem if that’s easier for you. Get a working solution first, then focus on optimizing the runtime and improving the code quality.
  4. If you’re unable to solve the question optimally or even at all, there’s no need to beat yourself up over it. Often times the interviewer may just want to see how you think and may not expect that you are fully able to solve the problem. It is important to not let poor performance in a previous interview, affect the current interview.
  5. When finished writing your code, explain what it is trying to do and talk through an example as a sanity check to make sure your code makes sense. Discuss the runtime and space complexity of your solution and write test cases to ensure that it is working as intended, even for edge cases.

With regards to specific data structures to learn for the interviews, start with HashTable, Arrays, LinkedLists, Stacks, Queues, Heaps, Graphs, and Trees. Make sure to know the use-cases of each data structure, their runtimes, and implementation in your preferred language. On the algorithms side of things, some key ones to learn are search + sorting, greedy, recursion + backtracking, dynamic programming, and graph/tree traversals. Again, this is by no means a comprehensive list, but I’d recommend looking into CTCI as well as various online resources and your data structures and algorithms classes, for more details about these topics. Additionally, a helpful table for the runtimes of each operation of a data structure can be found here.

Hopefully this article helped and provided more clarity about the job search process. Happy (Leet)Coding!

--

--