Best Tips and Strategies to Prepare for a Coding Interview
Preparation for acing a coding interview starts months before the interview itself. You will have to get the right experience, build projects outside of school, find internships, do mini-projects to solidify your understanding of key concepts, practice explaining code, and a lot more things. We know that it’s hard to prepare for tech interviews, and we all need some guidance to start preparing in the right direction. To resolve this problem and clear your doubts – in this article, we are going to talk about some points which are going to help you tackle the coding interview preparation process effectively. Below are some basic things that a person need to get a job in an IT company
1. Creating a Good Resume: Creating a good resume means your resume should be able to pass the initial screening of an applicant tracking system (ATS) that is programmed to match keywords from the job description. Your resume should contain only information which is relevant to the job description and that too should be highlighted as the recruiter will go through your resume for few seconds. For example — put the job title of the job description right under your name at the top so that ATS ranks your resume higher and the recruiter can immediately observe it.
You cannot assume that your past roles and responsibilities are exactly what your future employee is looking for. Review 6-7 job descriptions and mark the most common responsibility, skills, and qualifications required. Only then, create a resume that speaks to that research. In your employment history description try to show what you did, how you did it, and what the results were (results should be measurable). Don’t cut technical lines in order to put your non-technical hobbies.
While uploading your resume on online portals make sure your resume PDF is having your name and year of experience. If you’re experienced, the experience section in your resume should be above all sections, and in the education section, mention only your recent qualifications. In the skill section, don’t put the obvious thing that means if you have written you know Python then only put libraries which are specifically needed for the job, not everything.
The project section is really important for college students or recent graduates, think properly before making it. Many candidates make the mistake of adding many projects which are small and non-impressive, don’t do that and try to include few (2-4) but good projects which you’ve built yourself. You must know everything about your project like “what problems you have faced while making the project and how you resolve them?”, “In how much time you were able to come up with the solution and what was the reason to come up with this solution?”, “How is this efficient?”, “Which technology is used while making this project?” You will be able to tackle these questions only if you have made it on your own and by giving it proper time. It is not necessary that you must have some very good project but whatever you’ve made you should know everything about it, and it should be useful in the real world.
Learn and include multiple programming languages in your resume. It is true that you only need one programming language to clear any coding round but when it comes to interviews you should know multiple programming languages. It is obvious that the more time you spend coding, the more things you’ve built, you must have worked with multiple languages – so if you are too focused on one language it might cause a problem as when interviewers see a resume with one language, they make the assumption that candidate hasn’t experienced many problems, and it might be hard for him/her to learn new technologies in the required time.
2. Creating a Good LinkedIn Profile & Standing Out on Your Online Job Application: Create a good LinkedIn profile that can be found by recruiters. Your profile must have a good profile picture in which you are clearly visible. Many people make the mistake of not including profile picture or picture which is not clearly visible. It decreases the chances of your profile being read by recruiters, and it will also affect making connections (it is a concern of trust).
Be sure to update your headline from the default. Put relevant skills and keywords in your headline so that LinkedIn’s search software ranks your profile high for recruiter searches. Try to use your LinkedIn profile for telling the story as you cannot write everything in your resume, but you can clearly mention the problem you’ve faced while making any project, you can showcase your certificates, test score, and a lot more in your LinkedIn profile which you cannot provide in your resume as it should contain important facts and preferably have one page.
Networking plays a major role while searching for any job, so you should make sure that you expand your network on LinkedIn. Target 10-15 companies you want to work for, go to LinkedIn and find senior managers/directors who are working there. Send them a customized LinkedIn invite and set calendar reminders to stay in touch with them every two weeks (Staying in touch means offering value to your network. It’s not “Hi”,” How are you”,” Thanks for connecting”). Contact the hiring manager directly when you feel like you are prepared.
Create a cover letter that tells about common problems in your industry, and how you’ve solved that problem in the past. Tell them why you want to work with them by expressing your excitement, and thank them for reading your letter.
3. Acing the Job Interview: At most of the top tech companies, software engineering interviews generally consist of: (a) Coding (focused on data structures and algorithms which includes the largest part of the interview process), (b) Object-Oriented Design, (c) System Design and Scalability, (d) Knowledge of Core Subjects, (e) Behavioral interview. In coding round, interviewers will make an assessment of your performance on the basis of your analytical skills (How optimal was your solution, How much time you took to arrive at a solution, Did you need much help while solving the problem), coding skills (your code was clean or not, did you think about boundary cases) and technical skills (your computer science fundamentals are clear or not, etc.).
Your approach of tackling questions that are asked in Coding Round should be like this:
1. Pay Close Attention to the Problem Statement: Listen or read carefully to the problem and ask if you are not sure about something. Many times you can get hints from the problem statement itself. Suppose the interviewer says that you are given a sorted array then you can guess if you’re required to search any element in the problem then for this problem, the optimal approach will be using binary search instead of linear search. Similarly, you can get hints to solve problems optimally by just listening to problem descriptions carefully.
2. Draw an Example on the Whiteboard: Drawing an example can help you solve a question fast by increasing your observation skill regarding the problem. While drawing an example, don’t use a special case, and make sure your diagram is sufficiently large so that you can find errors (if any) in your algorithm easily.
3. State Brute Force Solution: State a brute force solution as fast as possible, don’t try to give an optimal approach first. Some candidates think this is obvious, and they start trying to give an optimal approach from the start, but you should understand that if you don’t state brute force approach and start struggling then your interviewer might think you’re not the right candidate as you’re not even able to find simple approach.
4. Optimize Your Solution: After getting a brute force solution, start optimizing your solution. To optimize, you can look if there is any unused information, make time and space trade-off, see if the hash table can be useful, use a different example, if you’ve got a solution having O(N^2) complexity, don’t try to reduce it O(N) first, think if you can find a solution having complexity O(N log N) by using a sorting algorithm or something and then think if you can find more optimal solution like having complexity, O(N). Sometimes even solving problems incorrectly helps in finding optimized solutions.
5. Check If There is Any Error/Dry Run: Don’t start coding yet, first check if your algorithm is working for all test cases (special, boundary cases and cases having large input/output).
6. Implement and Test: Now you can implement your code in the code editor. If you don’t want to show that you’re a bad developer then write good clean code which means your code should operate correctly on all expected and unexpected inputs. It should be efficient in terms of both asymptotic and practical efficiency, constant factors should be considered. It should be simple and readable (Readable code doesn’t mean it should include lots of comments, write comments only where necessary otherwise variable and function name should be self-explanatory.) Code needs to be adaptable to changes. It should be easy to maintain by other developers. You shouldn’t “submit” code without testing it in the interview. Test all conceptual, special, edge cases and If you find any bug while testing your code, fix it carefully.
If you want to prepare for these kinds of rounds, you should have knowledge of these topics:
- Data Structures: Linked Lists, Trees, Graphs, Stacks, Queues, Heaps, Vectors/ArrayLists, Hash Tables, etc.
- Algorithms: Breadth-First Search, Depth-First Search, Binary Search, Merge Sort, Quick Sort, etc.
- Concepts: Bit Manipulation, Memory(Stack vs Heap), Recursion, Dynamic Programming, Big O Time & Space, etc.
Some Points ForYour Preparation Strategy for Coding Interview
1. Mock Interviews With Friends: You can form a mock interview group with friends (having the same knowledge as you or more than you) to interview each other. You can give feedback to each other and improve your technical skills as well as communication skills together. Always make a group of people who motivate you to improve yourself and gives you the right advice.
2. Create a List To Track Your Mistakes: Create a list to track mistakes you have made while solving any problem so that you do not repeat the same mistakes during the interview. Also, keep track of mistakes you’ve made while making projects and how you resolve them so that if the interviewer asks about them, you can easily explain. Many companies take behavioral rounds and one of the famous questions is to tell about your mistakes/failures, so you can also write down the answer to these questions as it is hard to come up with the proper answer at that time.
3. Start Timing Yourself: You should be able to solve the problem under a given timeframe in the actual interview. You can improve your efficiency by solving as many problems as you can.
4. Solve Targeted Questions: Solve questions of the company you’re interviewing for, using sites such as Glassdoor, GeeksforGeeks, etc. Talk to friends who may have interviewed at that company before.
5. Make Cheat-sheets and Flash Cards for Revision: Make short cheat sheets for problems you have done before and concepts with which you’re not very comfortable. Use them to revise problems quickly later.
6. Don’t jump from Site to Site: Just pick one or two good resources and stick to them. Jumping from book to book or website to website takes a lot of unnecessary time and many times, candidates skip hard level questions while moving from site to site and only solve easy level questions which doesn’t help much.
In the end, you need to remember that all the programming fundamentals and basics (as per your resume) should be clear to you along with a decent knowledge of other important areas like Data Structures & Algorithms, and other Core CS Subjects to ace in the Coding Interview!!