Hola!
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 know 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 here. 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 second year and you'll be applying for your dream internship in 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 this post 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 completion of 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).
Data Structure | Algorithms | Networking | Operating System | Database |
---|---|---|---|---|
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 | STMP and POP3 | Starvation | |
Binary Search Tree | Robin-Karp Algorithm | Working of PING | Critical Section | |
Priority Queue | Dijkstra's Algorithm | TCP Handshake | IPC | |
Trie | Prim's Algorithm | Inode | ||
Suffix Tree | Divide & Conqure and DP |
Here you go!
Frontend Devs | Backend Stuff | Android Devs | iOS Devs (I don't know much) |
---|---|---|---|
HTML5 | HTML | Java | Objective C |
CSS3 | CSS | Android Versions and changes | Swift |
JavaScript | Server configs | Working with Android Studio | App Store Guidelines |
JQuery | Working with APIs | Android UI and UX | Common App Rejections |
Saas | Chrome Dev Tools | Best Practices | |
React | Python, PHP or Ruby | ||
Angular | |||
Chrome Dev Tools |
I'm not listing here very basic stuffs like Working with Ubuntu, Curl and telnet command etc.
Note: You don't need to do know everything mentioned in the table above. Algorithm and Data structure are very important to crack any interview so you should spent most of the time learning and practicing 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?
-
College
-
Projects
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.
-
Open Source Contributions
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.
-
Past internships (If any)
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 mail 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.
-
Leadership Qualities
Volunteer in a non profit organization and be a part of college committees.
-
Programming Skills
-
GPA (rare)
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.
-
Education
Degree and stream, College Name, Current year and graduation year. Don't include your GPA if it's less than 7/10.
-
Skills
Be honest here and mention languages and framework only if you really know. Once you get shortlisted for the interviews, recruiter may ask any questions on that and you'll be messed up badly.
-
Technical Experience (If you have any)
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.
-
Projects
Same points apply to project as well. Don't forget to add links of code or websites if you have any.
-
Open Source Contributions (If you have any)
Mention what projects you have contributed to, what your contribution was and provide links to your commits so that recruiters can easily verify your contributions and have a look at your code.
-
Leadership Experience
Add your volunteering or committee work in this section.
-
Extra-Curricular
All your competitive programming rankings, awards and hackathon related stuff goes here.
-
Work Authorization
You'll be applying to US based companies so don't forget to add this line.
This is my latest resume (Oct'16), have a look at it once. You can use cls code to create similar resume.
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 and Internship process for the next summer 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.
Apply everywhere! Don't think that you don't have a perfect resume, just visit their career website or LinkedIn internship posts and fill the form. I applied to more than 20 companies this year.
Once you get shortlisted for the interviews search 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.
- Geeksforgeeks (Website).
- 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
- HTTP - The Definite Guide (Book - PDF)
- Basics of Networking (Website)
- Computer Networks (Book-PDF)
- Operating system concepts (Book - PDF)
- FreeCodeCamp
- Best JavaScript tutorial (It's a Russian website use Chrome to translate)
- W3Schools
- Awesome (This contains everything you need!)
Last thing:
Keep talking and asking to people who have more knowledge than you, networking is really important.
P.S. : Create issues if you can have any questions regarding internship, interview or resume, that will help everyone!
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!
Run..Run fast!!