Placements 101 – #1(Continued)

The Coding Rounds are slightly harder to crack. The difficulty of the questions depends on the Company- you cannot expect just simple ‘solvable-by-brute-force’ type of questions from PayPal or Microsoft. They are going to be slightly tricky and they’re most likely going to involve dynamic programming or graphs or trees. And to some of you it might seem daunting at first and make you think it is not for you, but listen up people: it’s not true. It’s all about preparing smart. We are going to apply the most useful programming technique used to solve large problems to help tackle our preparation too:

Divide and Conquer.

It really is that simple. If you were like me and slacked off active competitive coding all your college years, getting your coding up to scratch will appear to be a huge task, because where do you start? Heaps? Sorting? Dynamic Programming? More often than not, it will appear as though all your friends around you have a much better knowledge and a grasp of all the concepts you’ve neglected. Never fear though. Divide the mammoth domain of ‘coding’ into smaller topics, gather resources and crack them one by one. I’ll talk about some very basic topics which you simply just have to know inside out. Believe me, you do not want to be anything less than thorough in these topics. Thorough enough that if someone calls you at 3 am in the morning and asks you to explain it, you should be able to (after scolding them, of course).

Recursion. I cannot stress enough on the importance of recursion. Know how it works. Know why the stack overflows. Visualize it so that every time you write a recursive function you can immediately imagine what would go on inside the computer. www.mycodeschool.com is an excellent resource I came across for learning this. I believe it was a video about Merge Sort, which not only explains that method of sorting, but also visualizes recursion beautifully. Drill the concept of recursion into your head and learn to apply it. It’s the most practically useful concept you will come across for placements.

Basic Data Structures. The mycodeschool website gives excellent theoretical background for data structures. Linked lists, stacks and queues are the staples, followed by trees and some knowledge about the more advanced topics. www.geeksforgeeks.org is a popular resource that gives you full featured algorithms, explanations and an embedded IDE for trying the snippets out.

Graphs and Dynamic Programming(DP). Once you’re comfortable with recursion and data structures, the natural progression is towards DP and Graphs. GeeksForGeeks is an excellent resource, and if you are interested in the mathematical foundations, check out the Dynamic Programming lessons in Massachusetts Institute of Technology’s OpenCourseWare (MIT-OCW) Channel on YouTube, under the Introduction to Algorithms course.

Of course, the most important part of preparing is practising. Popular choices include leetcode.com and spoj.com. I have a soft corner for SPOJ, but leetcode is more user-friendly, according to a lot of people I talked to. Leetcode sorts questions by topics, by companies where they were asked, and by difficulty level. It also shows you the exact test case where your code goes wrong. Apart from this, there is a little trick before attending the placement process- reading up about the company and how it conducts the process in GeeksForGeeks. This gives you a better picture of what to expect. It is also useful to familiarize yourself with the test environment (for e.g. Microsoft uses CoCubes, Directi uses CodeChef and a lot of others use HackerRank). HackerRank sometimes allows code completion when you’re using Java and it is a crucial thing to know and take advantage of it. In a nutshell, prepare smart and stay sharp.

Interviews are the final frontier, the last barrier standing between you and that blessed job offer. They are perhaps the toughest to crack, because a quite a bit of it depends on how lucky you are. Whether you know the domain they’re questioning you about, whether the interviewer is in a pleasant mood… there are a lot of things that could go wrong. Technical interviews, especially, are designed to find reasons not to hire you. So it is up to you to convince the interviewer that he needs to hire you. While there are things out of your control that could influence the outcome, focus on the things that you can control.

Be prepared. GeeksForGeeks has a very useful article: Top 10 Algorithms in Interview Questions. While this does not ensure you complete safety, it’s a good starting point. Dress smart and know all the basic algorithms. Know the basics of your databases, networks and operating systems. Improve your English (unless it is Zoho, where everyone’s cool and has no problem with conducting interviews in Tamil). Even though technical skills trump your language skills, good communication might make the difference when they’re trying to decide between two similar candidates.

Think on your feet. An interview is an active process. Don’t switch off due to fear. Interviewers are mostly friendly and will help you out. Always be aware of their body language. Ask yourself what type of answer they are expecting. When you’re stuck on a problem, think out aloud. Ask them questions and let them know how you’re approaching the problem. They’ll often drop hints (learn to identify these!) and sometimes, even if you do not solve the problem, they might still be impressed with your approach for solving it.

Handle tough situations gracefully.  There will always be that one question that is beyond you to answer. You may have absolutely no idea how to even approach it. Try to calm down and crack it, and if you can’t, tell your interviewer that though you’re stuck this time, you’ll make every effort to learn what you didn’t know. It might not earn you too many points, but at least the interviewer knows that you work hard to learn things you don’t know, and it may work out in your favour.

Make HR conversations interesting. Don’t stick to general statements like “I am a team player” or “I am a natural leader”. Instead, talk about situations where you displayed your team playing or leadership skills. Talk about the challenges you faced, what you did to overcome them and what you learnt as a result of those experiences. Show them why you as a person would be a good fit for the organization. Because that’s what the HR interviewer wants to know. How well you’ll work in the company.

The entire placement process is going to be hard. Juggling this preparation, along with your grades and other people’s expectations is not a simple task. You’ll find yourself really tired after those trips to the Guindy Campus and wonder how exactly you’ll find the time to study. You might screw up interviews and feel really bad about yourself. You might see your friends get placed and feel inadequate. Know that it happens to everyone and in spite of all the negativity you find yourself surrounded by, everything is going to be okay. Things have a way of working out in the end. Don’t lose hope because you failed a few times. This line from Karate Kid has always spurred me to not give up:

“Life will knock us down, but we choose whether or not to get back up.”

Choose to get back up. Every time. Good luck folks.

Nivedhitha loves to play with words, and is currently doing her final year in Information Technology.