Technical interviewing is truly a skill. Like all skills, to get better at technical interviews, one must practice technical interviewing. For candidates looking to move into new software roles, there exist a myriad of resources on the internet to aid interview preparation. However these resources offer a self-paced approach to improving one’s technical skills. They are not a true representation of an interview environment. Similarly, for working professionals looking to get better as interviewers, one option is to experiment with new questions in a real-life interview setting. However this runs the risk of jeopardizing candidates’ experiences and performance in the hiring process. Enter mock interviewing. In this post, I will share some valuable resources that helped me refine my interviewing skills via mock interviews.

If you’re a software engineer looking to land your next tech role, chances are that you’ve heard of, or perhaps have already been using platforms such as Leetcode and Hackerrank to practice common interview problem types. These platforms are fantastic for getting your skills up with Data Structures and Algorithms, as they have a wide range of question variations that cover anything you might be expected to know in a coding interview. Whether you’re someone that’s just breaking into tech and have little to no background with coding, or you’re someone that’s been coding professionally for several years, it is common knowledge that to be successful in technical interviews, there really are no shortcuts around practicing coding questions. Of course, depending on the seniority of the role that you’re applying to, you might want to also prepare for System Design questions, behavioral/culture-fit questions, as well as domain-specific preparation about your area of speciality.

The internet is chock-full of great resources to help individuals get prepared for technical interviews. There are tons of engineering blogs, websites, and professional interview prep shops such as Exponent, where dedicated preparation roadmaps are available to help get you as prepared as you possibly can be. I recommend Leetcode’s Top Interview 150 Questions and Neetcode, as they feature category-based preparation plans, providing interview candidates with a decent sampler of the types of questions they can expect in a technical interview. Additionally, Grind 75 (previously Blind 75) provides cherry-picked Leetcode questions, taking into consideration the number of weeks and number of hours in a day you have available before your interview day. And of course, no tech interview checklist can truly be complete without mentioning Gayle Laakmann’s Cracking the Coding Interview.

If you’ve gotten to the point where you’re able to solve easy-to-medium Leetcode problems comfortably, then congratulations! You’re already part of an elite club of coders who are able to take the most abstract problems and demonstrate a thorough, accurate understanding of how to implement well-crafted solutions. Despite this, one of the most challenging aspects of interview prep is getting a true feel for how you’re doing in the eyes of another engineer. Specifically one who is tasked with being critical towards your problem-solving abilities. You might have friends or roommates who can time you or even challenge you in an interview setting. But the familiarity bias, and the tendency for the ones closest to us to want us to succeed, and perhaps go easy on us, might not work in our favor. After all, as an interviewee, you will almost never be interviewed by someone you already know, and you can, and should, expect the unexpected.

This is where mock interviewing really shines and pushes candidates to get into the right mindset ahead of their big day. Mock interview platforms help users practice their interviewing and problem-solving skills to underscore their strengths and weaknesses. In a mock interview session, there is usually one interviewer interviewing the candidate. The interviewer will have a question prepared ahead of time from the realm of Data Structures & Algorithms. The interviewee will then have about 40-60 minutes to solve this question as they would in a real interview setting. Sometimes, if the candidate is able to demonstrate proficiency, the interviewer might raise the bar with follow-up questions, or change up the question’s parameters to push the candidate. Time and space analysis is also expected to take place within this time-frame. Towards the end of the session, either the interviewer will give the candidate direct feedback with respect to their strengths and/or weaknesses, or the system will ask the interviewer to fill out written notes regarding the candidate’s performance. This feedback will then be made avilable to the candidate in post. Two mock interviewing platforms that I have used and thoroughly enjoy using are Pramp and Interviewing.io. Both platforms have their own unique quirks, but the concept is the same: you schedule a time that works for you, and the systems match you with an anonymous interviewer and/or interviewee.

Pramp

Pramp is essentially Exponent’s “free tier” for mock interviews and coding interview preparation. When you sign up, you create a profile that records what programming languages you are proficient in, as well as some basic information regarding your career aspirations and years of experience. You can then, at your own convenience, schedule mock interviews through the system. It does a great job at identifying what days and times of the week its user base is highly active. This lets you get a good feel for how likely you are to find a match at your preferred day and time. Pramp’s platform is particularly interesting because of two reasons. First, Pramp interview sessions are a two-way street. This means that for a given mock interview session, not only do you get interviewed by an anonymous user, you also get to interview the very person who interviewed you! This is great because it adds accountability to the session – each user is more likely to take the session more seriously if they also have something at stake throughout the process. The users are likely in the same boat as you, either looking to improve their skills as a candidate, or get better as an interviewer. This duality of roles adds a bit of give-and-take to each session. The users are given the freedom to decide amongst themselves the order in which each role is to be assumed. The other reason why I like Pramp is because it curates the question that you will ask your mock interview candidate ahead of time. As a mock interviewer, this gives you ample time to attempt the question yourself, trying out different approaches to solve it. It also provides you with the full solution, as well as hints that you can provide to the mock candidate in case they are stuck. Pramp uses this approach to ensure that the questions that are being rotated in the mock interview sessions are high-quality and are solvable within the time constraints of the session.

By default, Pramp gives you a handful of sessions (I believe 6) for free. If you would like to continue using the platform, you may purchase more sessions. From my experience, Pramp will automatically give you additional free interview sessions as you use up existing sessions. Your mileage may vary. Pramp’s interview platform features a browser-based IDE that allows users to switch between programming languages easily. Sessions typically last 2 hours, where both you and your matched peer get one hour to interview and get interviewed respectively. One of the dowsides of Pramp’s platform is that the level of difficulty of the questions that it hand-selects for its users is not always consistent. In one particulat session, the interview question that I received as a candidate was medium difficulty at worst. The question that I was given to ask the peer was a challenging, dynamic programming problem that really could not be brute-forced. As a result, when it came time to interview my peer, they had a very hard time with solving the problem without sufficient hints. After closing out the session, the platform asks you to provide written feedback regarding your peer’s performance, and also gives you the option to connect via email or LinkedIn. All in all, a really useful platform for practicing technical interviews.

interviewing.io

Interviewing.io is another great platform that allows for more flexibility with your mock interview sessions. As a user, you create a profile that contains basic information such as years of experience, primary expertise and so on. From there, you have the option to schedule various types of interviews. These interview types include the Data Structures and Algorithms category, System Design, Behavioural and Culture Fit interviews, as well as senior level interviews (Level 6 and above) with real employees working at FAANG or FAANG-adjacent companies. The only catch is that all of these sessions are paid. Through this, the interviewing.io platform ensures that all the paid interview sessions will be conducted by actual engineers who know a thing or two about interviewing, so quality is always guaranteed. They also have excellent customer support, so if you pay for an interview and there are any issues throughout the process, they will happily refund you with more sessions almost immediately. Otherwise, it does a good job at automatically scheduling you with a peer ahead of time. Interviewing.io also offers a free-tier! Interviewing.io offers Peer-To-Peer interviews with anonymous users of the platform, which means that although the users might not be working in well-known tech companies, you can still schedule these peer-to-peer interviews for free, at your own convenience. Their model works a little something like this: if you conduct two interviews as an interviewer, you get one interview as a candidate. The system also keeps you accountable by recording your no-shows and enforcing mutual respect for the candidate and interviewer’s time.

What interviewing.io does differently is that as an interviewer, you are allowed to bring your own interview questions. Ahead of a scheduled interview, although your peer’s information is kept hidden and anonymous, the system shows you the number of years of experience they have in their field. This gives interviewers the flexibility of preparing a question with the right level of complexity to match their candidate’s skill levels. As an interviewer, you can choose to either pick one of several thousands of tried and tested interview questions on the internet, or try your hand at rolling-your-own. Either way, this platform also provides a browser-based IDE that is language agnostic. The sessions on this platform feel more free-style, where you must show up with a gameplan and time limit to provide the candidate with. Interviewing.io also penalizes users if they do not show up for a scheduled interview session, or if they cancel without providing sufficient notice. If you are a no-show for 2 interviews, the platform blocks your account. As mentioned previously, you get a free peer-to-peer interview for every two interviews you conduct. Once you unlock interviews, you can schedule mock interviews with other peers. Interviewing.io records feedback and ratings from your matched peer after every session, and maintains a ranking system. If your performance is consistently good, you also get the option to request company introductions and match with recruiters. Similar to Pramp, after each interview session, you get the option to connect with your matched peer. You also have the option to share a recording of your mock interview session with the community. Overall a robust, well-implemented platform for mock interviewing!