The Ultimate Guide to Prepare for Your Placement/Internship Season

From my own experience, I know how tough the job search can be on a person. After applying to hundreds of companies and getting ghosted or rejected, you’ll start questioning the point of it all. While there’s nothing else to do other than picking yourself up and trudging forward hoping for the best, there are certain things you can focus your attention on that’ll help streamline the process.

There are usually four things you should focus on (might vary depending on the opportunity, but usually they follow similar patterns):

  1. Pre-Job Search Prep

  2. Applying for jobs

  3. OAs

  4. Interviews

Pre-Job Search Prep

Depending on which internship/job you’re aiming for, your prep could vary. Although most of them would have overlapping requirements, the process tends to vary a lot. Broadly, we can classify job/internship opportunities into 3 types:

  1. Startups

  2. Big-Tech/MNCs

  3. Research Opportunities

Based on this, I’ll outline the necessary steps to prepare yourself below.

Startups

Startups usually look for technical capabilities in a particular area in New Grads. They often have strict preferences for the tech stack and area of expertise. If you’re looking to work in a startup, these are things you should be aware of:

1) Picking an area of interest

Picking an area of interest is crucial as it would determine the roles you can apply to. While it’s technically possible to try out different fields to apply for multiple roles, it’s always more fun and exciting if you’re able to figure out your interests and focus on exploring them more. Even if you can’t choose one right now, exploring at least one field deeper is a more rewarding experience and something I would recommend.

The roadmaps in roadmap.sh are pretty useful to get a bird's eye view of all the concepts relevant to the particular domain you're interested in. So once you've picked an area (or even if you’re just going through them to see which one sticks), you can use it to kind of get an idea of all the core ideas related to the field.

2) Language!

Once you've picked a field, the language, frameworks, and tools you use are pretty crucial. A lot of knowledge is transferable; so even if you specialize in a single tech stack, you're never starting from scratch. But a lot of start-ups and companies would prefer having people with knowledge in a particular stack or language, so picking one is crucial. At the end of the day, it would mostly depend on the field you're interested in, the language and stack that's popular there. Getting comfortable with the language is crucial before starting to build things using it. The official docs are a great way to start learning the language. Once you’ve got a hold of the basics, you can try implementing basic programs to get more comfortable with them (Solving DSA problems and looking at other solutions is also a valid way to do this. Whatever floats your boat). Once you’ve mastered the basics, you can try looking at code samples (given in the Docs or other repos) to learn more about the best practices. We’re kind of at an impasse where we need to understand the language better to learn frameworks and other tools, while we need the frameworks and tools to build something to gain proficiency using the language. The best thing to do is to start dipping your toes into frameworks and tools once you start feeling comfortable with the language.

3) Frameworks/Tools

I would suggest reading the docs of the tools you're planning to use to understand how each of them works so you wouldn't be blindly toying around with random things you don't fully understand. That's a mistake I made in the beginning. But I think everyone would stumble around for a bit before they get a grasp of what they're doing so I don't think anyone can really avoid it.
Courses might be a good way to get started initially. Search Reddit for course suggestions or sources to learn a particular field from. Try to stick to a single source that you're comfortable with or find interesting and just use others as supplements if required. Trying to learn from multiple sources won't help and would just make it unnecessarily stressful.

4) Building Stuff

Create something using the things you learned. Don't copy-paste a cookie-cutter project everyone makes. Make something unique, even if it seems aspirational. The thing about making projects is you might end up leaving it half completed as something else came in the way and you just can't invest as much time as you thought you could. Also structuring a project is a whole issue in itself. It might seem easier to figure things out as you go (and you'll have to for a lot of things) but it's always great to have a preplanned structure on how you’re going to approach things. This is not limited to architecture; it also includes the structure of the codebase (the design patterns used, definition of classes and their functionality, splitting up of functionality into reusable blocks, etc). Always start with a small but well-defined structure and iteratively add features to it. There are whole paradigms of things that come with developing and deploying projects like version control, containerization, orchestration, profiling, testing, serving, etc. Don't get overwhelmed by them. Rather just learn them as you go cause they're super interesting topics and the more you explore and use them, the better you'll get and fall further in love with them. I'm pretty sure I took years of stumbling around before I got comfortable, and even then I don't know most of the things well, but that's okay because it's fun and that's all that matters.

Big-Tech

While the above points still apply to big tech, there are certain things they focus on more, which are discussed here:

Core CS

There are certain topics I think are important: Operating Systems, DBMS, Computer Networks, OOPS, Design patterns, Compiler Design (not that much), Theory of Computation (not that much), and Computer Architecture (this is pretty useful but I'm not interested in this either). A good theoretical understanding of these is extremely helpful, not just for interviews, but for understanding how systems work which is extremely important as you dive deeper into advanced topics. I learned most of them by watching a course or reading a really good textbook. Search Reddit for course/book recommendations. I created notes from them too which was pretty helpful when I have to come back to them in the future.

DSA

While DSA is important for most applications, it is crucial for Big Tech. Most of the people I know who got into FAANG or equivalent companies were either Competitive Programmers or people who used to grind LeetCode.

I did the neetcode.io roadmap which had 150 problems. It was a pretty good way to familiarise yourself with common DSA patterns and structure your thinking process to approach similar types of problems in the future. They cover most of the topics that are usually asked in OAs and interviews. Pick a language and just get comfortable with the data structures, syntax, and individual quirks of that language (While it’s better to choose a language you’re comfortable with, some companies might require you to know CPP/Java, so it’s always a good idea to learn one of those too). Whenever you solve something, try to reduce it to a problem you've seen before. Think of the things a solution would need and try to come up with an algorithm based on that. Try to implement it and calculate its time complexity and try explaining your rationale for the choices you made (being able to walk others through your solution is crucial during interviews). If you don't get a solution, read the other solutions and understand them. Think of how they might've approached the problem which would be useful when you see similar problems in the future. Write down the questions with unique approaches or ones that stumped you so you can refer to them later.

💡
I’ve taken DSA courses as part of my CS Degree which probably helped a lot in my preparation. Reading Intro to Algorithms and understanding the mathematical proofs, Time Complexity Calculations, and concepts like amortized costs will probably help a lot.

Research Opportunities

Research opportunities prefer if you have past research experience or show interest in the field. The above steps (especially finding an area of interest and working on it) still apply. Other than that, getting a research opportunity usually depends on building a rapport with the research guide you’ll be working under (through your network or by directly contacting them) and proving your interest and capability through your motivation letter. I’m not well-versed in this area so I won’t be discussing it in much detail.

Applying for jobs

Resume

To apply for jobs, you'll need a proper resume. Get a resume template like Jake's Resume which is pretty standard. A lot of people would say add random numbers to pass ATS, but I would advise against that because personally, things you add like that would mostly be random and you wouldn't be able to answer for them at all during interviews where an actual person would be reading it. I guess it might make sense for more experienced people, but if you don't have actual metrics, don't make up fake ones. Look at resumes of good seniors or experienced people and frame your points like them.

Cover Letter and Prompts

A lot of companies would want you to make Cover Letters or answer common questions like "Why should we hire you?" during the application. I usually write them down once and store them in case I encounter them again. For cover letters, I make a ChatGPT prompt template that takes my resume info and job description, and other company info I copy from the company website to make a cover letter (Always cross-check and verify the output. Don’t blatantly copy and paste it). This helps make applying more hassle-free.

Job Sites

There are a lot of sites you can apply on: Wellfound for startups, Indeed, Monster.com, Instahyre, ycombinator job, hiring cafe, etc. Set alerts for jobs that match certain keywords you're looking for like sde, software developer intern, etc and filter based on the most recent. I think applying to jobs posted a few days ago isn't beneficial cause it would be flooded with applications, but it's just an observation that could be wrong. But always try to apply to the most recently posted jobs first. You're more likely to get a callback. Look at the Glassdoor ratings of the company. Any company less than 3.5 is usually bad (just read the reviews there to get an idea). You can also cold mail HRs of startups. You can find the HR of a start up from LinkedIn using its search functionality and get their contact details. There's a site called hunter.io that finds email addresses of people based on their companies that can help. You can make a cold mail template that you can pass to ChatGPT to tailor to the roles and company you're cold mailing to.

💡
Girls should also look out for diversity hiring opportunities or Women in Tech programs specifically tailored for them

Research Opportunities

There are a lot of Github repos and websites that curate research opportunities (Example: https://github.com/himahuja/Research-Internships-for-Undergraduates). Application for each of them would have its unique process, so it’s crucial to pick 1 or 2 and focus on learning about their process in-depth. It might not be possible to mass apply to multiple opportunities, so it’s better to find one that fits you and prepare accordingly. Often your communication capabilities, the rapport you can build with the mentors, and your genuine interest in the area are important factors when applying to them. Writing a good motivation letter (or equivalent proposals) is also crucial. You can refer to other sources to get a better idea regarding this.

OAs

Never copy solutions during an OA. Most likely you'll hit a plagiarism checker. Try to solve it on your own. Read past OA experiences to get an idea of the type of questions asked. LC has questions labeled by the company it was asked by. Other platforms might also have past questions. Solving them is a great way to prepare for the actual OA. Doing LC Contests (or equivalent contests) is a great way to prepare.

Interviews

Always know the JD and what the company is looking for. Learn more about the company and know what they do and how they work. Check Glassdoor for previous interview experiences. Based on the JD, prepare those areas. Be ready to answer questions on your resume. Prepare an introduction beforehand depending on the role because they always ask for an introduction before an interview. Don't be too stressed out while interviewing. Your communication abilities play a huge role in determining whether you'll be selected. If you're warm and cordial and can communicate with the interviewer properly, you'll be more likely to be selected. Even while answering technical questions, you should be able to communicate with the interviewer and be comfortable in asking questions when you're stuck or need clarification and replying to their queries confidently. Prepare common questions you'd expect to hear beforehand as it could be useful in future interviews too. Treat the interview like a friendly conversation and not an uptight formal process. Doing mock interviews (with your friends or with the help of platforms that set up one for you. There are also discord servers where you can schedule a mock interview with other members of the server) is probably a great way to understand your weak points to work on them.

PS: This is just meant to be a guide to underline some of the things I learned through my experience. This is in no way meant to be a comprehensive or exhaustive checklist that you should aim to complete before you begin your job search. It took years to figure out most of this stuff and trying to accomplish everything would be extremely stressful and ultimately unproductive. Instead, take note of the tips that seem useful and figure out your journey. In the end, the most important thing is to make sure you’re never too stressed out and doing things you enjoy along with the job prep. Your loved ones and your life matter more than your dream job (and might be the key to getting it!). Be kind to everyone, and more importantly, be kind to yourself. All the best for your journey!

0
Subscribe to my newsletter

Read articles from Neeraj P Yetheendran directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Neeraj P Yetheendran
Neeraj P Yetheendran