As a student, each one of us has a dream. Dream of doing a great internship and landing a job in a company that you really love and want to work for! There are jazillion websites, articles, blog posts and videos available on how to land an internship. Chances are, you've already read or known 98 percent of this advice: edit and proofread your resume and cover letters, dress appropriately for an interview, be on time or 15 minutes early to an interview, send thank you notes etc. You won't get any such advice in this blog post. This post will take you from zero to one. Get a notebook and pen, this is going to be a long post. Grab some snacks and start making a note of points that you think would be helpful for you in the future.
I'm assuming you are currently in the second year and you'll be applying for your dream internship in the third year. You already know C/C++ or any object oriented programming knowledge and basics data structures like Linked List, Stack, Queues etc.
Let's divide the blog into three sections.
Most of the US based companies start their summer internship interview process very early, in December. After your fourth semester that is the completion of the second year, you'll have 1.5-2 months of vacation (depends on your college) and that's the perfect time to improve your basics of computer science and coding skills.
I interviewed with 5-6 companies and from my experience here is the list of topics you should know (if you haven't decided your field).
|Linked List||Complexity Analysis||Network Layer||Process and Threads||SQL Query|
|Doubly Linked List||Searching (Linear and Binary)||HTTP Protocol||Memory Organization||Indexing|
|Queue||Sorting Algorithms||TCP & UDP Protocol||Booting Process||Normalization|
|Stack||Basics of Graphs||Subnetting||Paging||ACID Property|
|Hash Table||BFS and DFS||Masking||Deadlock||SQL Injection and Prevention|
|Binary Tree||KMP Algorithm||SMTP and POP3||Starvation|
|Binary Search Tree||Robin-Karp Algorithm||Working of PING||Critical Section|
|Priority Queue||Dijkstra's Algorithm||TCP Handshake||IPC|
|Suffix Tree||Divide & Conqure and DP|
Here you go!
|CSS3||CSS||Android Versions and changes||Swift|
|JQuery||Working with APIs||Android UI and UX|
|Saas||Chrome Dev Tools||Best Practices|
|React||Python, PHP or Ruby|
|Chrome Dev Tools|
Note: You don't need to do know everything mentioned in the table above. Algorithm and Data structure is very important to crack any interview so you should spend most of the time learning and practice problems.
Yes! All the useful websites, PDFs and article links are mentioned at the end of the post.
Getting shortlisted for the interviews is the toughest part and for that, your resume should be very strong and of very high quality. So what are the different factors that the recruiter would love to see on your resume?
Yes, before applying for an internship make sure that you have some good quality projects to mention in your resume. Upload your code on Github, make it open source and add links to code in your resume. If you're searching for project ideas, I have a list of more than 500 projects.
Search for good projects to contribute on Github improve documentation and fix bugs and do some enhancements. Companies really love it! If you don't have a good GPA then projects and open source contributions really add value to your resume.
Before applying to top companies in US or India, you should do at least one internship in any startup. Startup internships are really a great place to learn a lot of things in a very short time. Don't think of stipend, if you really love their idea just email and ask them about internship positions. There are many websites available for startup internships list of websites can be found at the bottom of the post.
Volunteer in a nonprofit organization and be a part of college committees.
Ok, now you have some good quality projects, you know basics of CS fundamentals and you have a good knowledge of data structure and algorithms. This is time to write a good resume!
Your resume should have following sections.
Degree and stream, College Name, Current year and graduation year. Don't include your GPA if it's less than 7/10.
Be honest here and mention languages and framework only if you really know. Once you get shortlisted for the interviews, the recruiter may ask any questions on that and you'll be messed up badly.
Write sentences in past tense. Use words like 'created', 'implemented', 'designed', 'fixed'. Implemented X using Y or Implemented X using Y to fix Z. Where X = any new feature, Y = language or framework, and Z = issue.
Same points apply to project as well. Don't forget to add links of code or websites if you have any.
Add your volunteering or committee work in this section.
All your competitive programming rankings, awards, and Hackathon related stuff goes here.
You'll be applying to US based companies so don't forget to add this line.
I haven't updated my resume since last two month but have a look at it once. Ignore objective section it's just a waste of space.
Once you created your resume, proofread it 2-3 times. Ask your friends and employees to go through your resume and finally post your resume here. This subreddit is awesome and people are very helpful. It'll be brutal but they'll critique your resume brilliantly.
Now you have a very good resume and you know all basics of CS. The time has come to apply for best of the best internships!
Yes! This is December 2016 and Internship process for Summer 2017 has just started. I have already created a sheet for you! Open this sheet and make a copy for yourself. Edit companies as per your preferences.
Once you get shortlisted for the interviews search the everywhere about past internship interview process, questions on Glassdoor, Geeksforgeeks and reddit. When I got shortlisted for the internship at Slack, I searched everywhere about interview process and questions asked. I couldn't find any except a post on reddit. If you don't find anything and just goto this sub and post questions or search for past interns on LinkedIn add them in your profile and message them directly. Three out of ten people will give you perfect reply and this is enough for you!
Some tips from my side:
Read emails properly and search for keywords.
Be prepared for technical questions which don't require programming knowledge.
Be polite while responding to emails. (Search how to send emails to recruiters :p)
Before interviews read the email properly and make a list of all the questions that can be asked.
Make a list of all the behavioral questions and their answers.
I have collected some interview experiences of top companies from different resources. I hope you find this useful.
The Algorithm Design Manual (Book - PDF)
LeetCode (For Practice)
TopCoder (For Practice)
Elements of Programming Interviews (Book) Amazon
Coding Interview Questions by Narasimha Karumanchi Amazon
Keep talking and asking to people who have more knowledge than you, networking is really important.
Also, if anything is not clear and you want more in-depth information about something, please join our community - Computer Science students group on Fb. There will be open discussion everyday at 9 PM and there are many other people to help and guide.
Summer Internship Course, contains series of articles on Preparation strategy, How to work on your resume, application process and referrals. Everything will be covered from the beginning to the end. Top software engineers of few great companies will be giving their suggestions on interviews. So please subscribe and get notified when we launch this course.
Email Address *
Disclaimer: I am not a recruiter or a brilliant coder who works in your dream company. I am a student just like you and I have spent last two months searching for the internship blogs, articles and interview experiences. I applied to more than twenty companies for summer internship and interviewed with some top companies and I'd be interning at Slack this summer. Read and follow things mentioned in this post at your own risk!