Google VO interview experience: Easily avoid pitfalls to get offer | Google proxy

1,151Views
尚無留言

After passing the OA, you need to prepare for the Google VO interview, also known as the Virtual Onsite (VO) interview. The interview styles of North American companies vary. The Google interview skills summarized by CSCODEPRO below may not be able to cope with all companies, but they are stress-free for interviews with most North American companies.

Google VO interview experience: Easily avoid pitfalls to get offer | Google proxy

As for Meta, there is only one way: buy a LeetCode membership and practice questions with the company’s tag over and over again.

In addition, some small and medium-sized companies may require you to write code in a real coding environment and then run it, which requires special treatment. Most large companies provide a document platform with highlighting but no code completion, which is equivalent to coding on a whiteboard, so the following Google interview skills can be applied.

Differences and characteristics of interviews at large companies:

  • Meta has many original questions and a huge question bank. It focuses on results rather than optimization process. The questions are difficult and require optimal solutions right from the start.
  • Microsoft is relatively easy to test, and requires rapid implementation of basic algorithms and data structures;
  • Amazon has many original questions, the question bank is updated slowly, and there are many graph theory questions;
  • Google focuses on the problem-solving process and ideas.

Google VO Interview Tips:

The core of the interview:

Show your problem-solving ability and let the interviewer feel that you have a colleague who you can work with, rather than completing the interview as a candidate and an examiner. Therefore, communication is very important. Google even has a special column for communication scoring, which is as important as algorithms and data structures. Excellent communication will add a lot of points.

Technical interviews usually last 40-45 minutes. Once you start, you need to talk non-stop and don’t be silent for too long. Some companies have hard targets, such as firing you if you don’t speak for 15 or 20 seconds. However, most companies don’t have such a ridiculous time limit. It mainly depends on the interviewer’s subjective feelings – whether your thinking and silence time exceeds the expected value.

Google’s interview questions are frequently changed, that is, the interview questions you see on the post today may be seen tomorrow, but the questions may be changed the day after tomorrow. Unless you are really lucky to see the original questions, it will be a test of your basic literacy. Only by grasping the essence of the questions can you pass the Google interview smoothly.

At the beginning of the interview, the interviewer will basically introduce himself, and then tell you that there will be a coding session in the next 45 minutes (or 2 coding sessions, in which case the time of the following process should be compressed and adjusted accordingly), and then the interviewee may be asked to give a brief self-introduction, or he may not. If the interviewer asks for a self-introduction, you can say a little more, otherwise it would be more appropriate to ask for a self-introduction yourself, such as “Shall I have a quick self introduction? I am XXX from XXX university and am looking for XXX.”

This step usually takes 1-2 minutes to complete.

Google VO interview case sharing:

Usually the question and 1-2 examples are given, like this:

The next greater element of some element x in an array is the first greater element that is to the right of x in the same array.
You are given two distinct 0-indexed integer arrays nums1 and nums2, where nums1 is a subset of nums2.
For each 0 <= i < nums1.length, find the index j such that nums1[i] == nums2[j] and determine the next greater element of nums2[j] in nums2. If there is no next greater element, then the answer for this query is -1.
Return an array ans of length nums1.length such that ans[i] is the next greater element as described above.

Google’s questions are rarely Hard, and are mostly Easy and Medium. Therefore, how to analyze the questions and show the solution ideas becomes the top priority, rather than just writing a code that can run.

For those who have done many questions, this question is not too difficult. Many details may have been reviewed in their minds, and they already feel that they can write code. But this is an interview, and the interview is to show your problem-solving process and ideas, so those flashed through the content need to be said.

Solution:

  1. Brute force method (not recommended, high time complexity):
    • For nums1 each element in , traverse nums2 to find whether there is a larger element in the element behind it. If so, record the larger element, otherwise record -1. The time complexity of this method is O(n^2), which is not suitable when nums2 the length of is 1000.
  2. Monotone stack (recommended, time complexity optimized to O(n)):
    • Use a monotone stack to optimize the search for the next larger element. The specific steps are as follows:
      • Traverse nums2 and use the stack to record the next larger element of the current element.
      • When the top element of the stack is smaller than the current element, it means that the current element is the next larger element of the top element of the stack, so the stack is popped and the result is recorded.
      • If the top element of the stack is greater than the current element, the current element is pushed into the stack and traversal continues.
  3. Result map (hashmap):
    • Use a hash table to nums2 store the next larger element of each element in.
    • Then, traverse nums1 and get the result of each element directly through the hash table.

Code implementation (using monotone stack):

def nextGreaterElement(nums1, nums2):
    stack = []
    next_greater = {}
    for num in nums2:
        while stack and stack[-1] < num:
            next_greater[stack.pop()] = num
        stack.append(num)
    result = []
    for num in nums1:
        result.append(next_greater.get(num, -1))
    
    return result

explain:

  • The function of the stack is to store nums2 the elements in a monotonically decreasing order. When a larger element is encountered, we pop the small element in the stack and record its corresponding “next larger element”.
  • Hash tablenums2 Store the next larger element of each element in next_greater the dictionary. Then, we only need to traverse nums1 and find the corresponding result from the dictionary.

This part is the soul of the entire interview in my opinion. If you do poorly in this part, you will basically have no chance of the entire interview. This is usually difficult because there may not be much clarification to ask when you first read the question. So you might as well start with the data range, because the data range can often hint at the time complexity range of the final algorithm. For example, for an array of length 500,000, a brute force solution of O(n2) may not be very likely.

In the example above, the original question has some constraints (LeetCode 496), but as an interview question, these constraints may not be shown at the beginning, because the interviewer needs to examine the ability to find and analyze problems. If we start asking questions from the data range, the first thing we can ask is:

Anything I can know about the range of these values? Can you tell me the size of the array? What is the maximum possible number in this array?

For this question, some clarifications are already implied in the title, so you can just paraphrase it, or a better way is to rephrase it in your own words, and then ask the interviewer if his or her understanding is correct and whether it is the same as yours:

  • Since the problem says nums1 is a subset of nums2, we can know that all the integers of nums1 also appear in nums2, so if we iterate the elements in nums1, it is promised that we can find at least one elements in nums2 to be equal to that value.
  • And by saying the “distinct”, does it mean all integers in nums1 and nums2 are unique? Is this understanding correct?

Another question that can be asked is what if the answer does not exist? Is it guaranteed that the answer exists?

  • What should I do if there is no valid answer? Do you want me to throw and exception? Or simply return a special value such as zero/negative one or negative infinity?
  • Oh in this problem, this sentence tells us if we can’t find the next greater element, we should return a special value -1.

Then the interviewer will say an answer like “Oh to save our time you can assume the answers exist. / Our inputs are promised to have one and only one valid answer. / It’s up to you, you can simply throw an exception if you find the answer doesn’t exist.” Then you will know what to be careful about in the subsequent code.

The code is not too long, so it should be finished within 10-15 minutes, but the time is 25-30 minutes. After writing the code, immediately take the initiative to spend 1-2 minutes to run the code again with the previous example, or use a new example: because XXX, we are in the loop here, because of this edge case, XXX is 0, so break…

A 45-minute interview, so there are still 15-20 minutes left.

Normally, the following is a Follow Up. Generally, the interviewer will prepare 1-2 Follow Ups of different difficulty levels or even directions, and give different questions based on the interviewee’s performance.

Follow Up usually involves adding or subtracting a condition, or changing a condition, or requiring optimization, so the routine is the same. Understand the meaning of the question, then point out the parts of the previous Clarification that are still valid, and point out the parts of the Clarification that are no longer valid after modifying or adding or deleting the condition. For example:

  • Without the constraint of XXX, we can’t …
  • Since the elements is not unique now …
  • The array is XXX so we can do it in a simpler way, but we need to care about two more edge cases.

Same process, briefly describe the algorithm and data structure, explain the reasons and ideas, use an example to run the steps, make sure the interviewer understands, and then write the code.

For example, the Follow Up of this question can be LeetCode 503, and the array becomes a circular integer array. The common way to deal with circular arrays is to take the remainder in a loop, or to directly connect the ends, turning [1, 2, 1] into [1, 2, 1, 1, 2, 1] to ensure that one traversal can cover all predecessor and successor relationships.

Or it could be a simple optimization: Can you solve it in O(n+m) time complexity?

Or: What will happen if the integers are not unique? You can provide any (or all) possible solutions. Or You should return the first element showing in the second array and so on.

Just treat it the same, but since it is not a completely new topic, it will take less time, just over ten minutes.

The last 3-5 minutes are for the Q&A session, where you can ask questions to the interviewer.

Feel free to play, depending on your personal habits.

However, there are two minefields that you should never ask: ① Don’t ask about interview performance: Where do you think I can improve? How do you think I performed? ② Don’t ask about the purpose of the question: What is the correct solution to this problem? How to ensure O(log⁡n) complexity?

Because you may not get a job after the interview, and many people may not have any contact with the company in the next few years, so this is a good window to learn about the company, and the company is also happy to use this opportunity to promote it, which is the original intention of Q&A. But remember that the interviewer can only write good feedback if he is happy, so try to ask topics that can be exchanged and can keep the conversation going.

In addition, depending on the interviewer’s age and the number of years he has worked at the company, I might also ask: Is the work from home experience different? If you can go back to work on campus, what do you want to do most? Will the company have activities? No matter what he answers, if he likes hiking, I like hiking, and he likes escape room, I like escape. I don’t care what I liked before, anyway, it’s only three minutes, what you like is what I like.

End the interview happily.

According to this technique, the worst result should not be lower than Weak Hire, and can even hit Strong Hire.

I have seen people who did hundreds of questions and the VO said they had done them all, but still failed. I have also seen people who didn’t do many questions and felt they would fail, but finally got an offer. The reason is that the interview is not about how beautiful your results are, but about showing your thinking and problem-solving ideas, how you analyze step by step, and how you demonstrate your ability. If you fail to show that, then even if you write code, you will fail, and you won’t complain at all.

Programehelp helps you get the interview

In short, as a fast-growing technology company, DoorDash is quite attractive in terms of benefits and career development opportunities. Our Programehelp team is well aware of the difficulties in job hunting, especially facing a difficult interview like Doordash. Our professional interview services and comprehensive interview assistance are to help you avoid detours. Whether it is the headache of OA or the subsequent interview process, we have rich experience and professional skills to provide you with all-round support.

If you want to get our professional interview assistance, interview services, or want to learn more about Doordash job search related information, please feel free to contact us!

Contact information, consult Google VO interview service immediately:
– WeChat: www521314net
– Email: azn7u2@gmail.com
– Whatsapp: +86 17282592082
– Telegram: https://t.me/codework520

author avatar
azn7u2@gmail.com
END
 0
Comment(尚無留言)