Interview at a big tech in Vietnam
In this big tech company, whether you're junior or senior, all candidates always have to go through two online tests. One is about algorithms on Codility, and the other is an IQ and personality test on Criteria. Incorporating algorithms to assess candidates' problem solving and coding skills is likely familiar if you've worked in other big tech companies before. For me, this is the first time experiencing this. Since it's an online test, we can't describe our solutions in pseudo-code. We have to write a complete program that can run in any language supported by the Codility platform. The challenge here is that the provided test cases are too simple, and we need to test our solutions with additional cases we think of ourselves. After submission, the system will score based on a secret set of test cases. One notable aspect is that Codility's test cases always include edge cases and large inputs to test performance, and we only get one submission attempt. Therefore, to pass this, we need a solid grasp of knowledge and extensive practice beforehand. Personally, I think I prepared well by solving several dozen medium-level problems on Leetcode over the past two weeks. For such algorithmic challenges, I prefer using Python due to its convenience and simplicity. Time management during the test is crucial, and Python has served me well in this regard.
The second test seems like there won't be much to discuss. It's presented in the form of questions with very short answer times for each question, aimed at assessing candidates' English proficiency, mental arithmetic skills, IQ, and personality traits. I think in this test, we just need to focus as much as possible. It's not a technical test, so the number of questions we can answer depends on each person's strengths in these areas. And these aspects, in my opinion, cannot be significantly improved in a short period. Therefore, in this test, we just need to try our best according to our abilities.
There's one thing I forgot to mention. For most of my friends who have applied to this big tech company, the two tests mentioned earlier constitute the first round. However, for me, they are the second round after a phone screening with a member of the Talent Acquisition team (or in Vietnam, commonly referred to as HR - Human Resources). Personally, I think this round is quite similar across different companies, so I won't delve too deeply into it. In this round, we just need to be sincere and focus on our own experiences. Whether we pass this round depends largely on how well we fit with the company, and that's something I believe can't be trained in a short period. So, in this round, we just need to do our best according to our capabilities.
Finally, after passing the two aforementioned rounds, we move on to the third round, which is also the deciding round. In this round, candidates will have a total of 2 hours to answer questions from two Seniors, Engineering Leads, or Engineering Managers who will work directly with them, as well as the opportunity to reverse roles and ask them questions if there are any doubts. One special aspect here is that I have experience both as a candidate and an interviewer in this round. Basically, this round is divided into 4 main parts: Cultural fit, System design, Live coding, and finally time for candidates to ask their own questions.
Regarding cultural fit, I think it's quite similar to the phone screening round mentioned earlier, so I'll will skip to the system design section. In this section, the question is quite simple, that is to design a system with a specific purpose. To answer this question, candidates are free to present their ideas on a whiteboard using Excalidraw, and the interviewer will only answer the candidate's questions to clarify the requirements and then discuss further about some parts in the design. As a candidate, I have thoroughly studied nearly all the important chapters in Alex Xu's System Design Interview Vol 1, and I've also watched YouTube videos for mock interviews in this area to prepare for this interview. Because candidates will be the one who lead the section, the ability to ask the right questions and present them in an understandable way is a very important skill. Later, when in the role of an interviewer, I don't find it too difficult to ask questions and evaluate candidates because the company's documentation already has sample questions, some sample topics to discuss, and bullet points to evaluate candidates' answers. These evaluations will mainly focus on aspects such as whether the candidate's solution is suitable for a system with a large number of users and the level of detail in these solutions. Thus, being overly optimistic about your design or having only a superficial understanding of the used technologies may indicate that your abilities do not align with the requirements of this position. In fact, there are more specific things I would like to share about this part, but my professional ethics and company security policies do not allow me to do so. So, I apologize if you still feel unclear about my description.
The later parts of the interview are live coding and the time for candidates to ask questions. There isn't much to say about these because I believe they follow the same format as interviews in any other tech company. My personal experience as the interviewer in the last live coding section was disappointing because the candidate didn't understand the requirements and couldn't write even a pseudo-code function.
Alright, that's all for today. See you next time! Maybe in our next chat, I can delve into the intriguing differences between working for a startup and the dynamic environment of a big tech company such as this one.
Comments
Post a Comment