From zero to Google programmer: my interview experience

Time:2021-11-30
  • Author: Yi Xiao
  • Her GitHub: https://github.com/lilyzhaoyilu

Hello, I’m Yi Xiao, who is also a familiar dog head in the 91 algorithm group. Recently, the application and interview are basically over, just passedGoogle HC

My undergraduate study is business, so it isLiberal arts transcodingand0 basic transcodingA member of. Here I would like to share with you my experience in the face of interview questions~

Note: Google’s recruitment model is quite special. After HC, it can be regarded as accepted by Google and all technical interviews have been completed. Specific information about applying for Google will be provided inFollow up articlesPlease look forward to sharing with you.

My problem brushing

During the Google interview, I brushed about 550 questions: about 150 are simple, 310 are medium and 90 are difficult. There are some sword fingers in China station and classic repetitive questions in interview. For the first 200 and some high-frequency questions, I brushed them more than twice or more.

From zero to Google programmer: my interview experience

As shown in the figure above, I brush the template problem of graph theory. On the left is my submission record and on the right is my code.

I brushed about 60 questions intermittently before April, and then I started a new process in April and began to brush questions well. The last interview is July 20.

From zero to Google programmer: my interview experience

Experience of brushing questions

Start to brush questions according to a tag / topic based plan

Definition of tag / Topic: different tags can be seen at the top of the force button question bank interface. Click in to enter the list of each tag.

The advantage of brushing questions according to labels is that it can help you consolidate your understanding of a data structure and make continuous correction and progress.

There are many big guys on the Internet who have shared the order and list of questions, or you can create a list yourself. I don’t think it’s necessary to worry too much about “which list is the best”. As a person who just starts to brush questions, learning a or B first today generally won’t have much impact – anyway, we have to learn in the end. The most important thing is to “start learning”. Don’t be afraid of imperfect plans. The plan will certainly not be perfect, but will be revised with their own cognition and progress.

Personally, I was lucky to participate in the 91 day algorithm held by Li Kou Jia. 91 algorithm requires to punch in one question every day, and the questions every week are around a data structure. suchBrush questions according to a tag set to verify their knowledge of a data structure and correct some of their wrong perceptions.

Create a ToDo list with positive feedback

Another reason why I recommend writing questions according to the plan is that todo list is a very convenient tool for establishing positive feedback. Why is it important to build positive feedback – if you’ve played a game, you must have had the feeling of “ah, why is the game so much after playing for a while”. Time flies when playing games, because most designed games will continue to give positive feedback to players. Similarly, if we want to brush questions all the time, we should create a meaningful one for ourselvesContinuous positive feedbackEnvironment.

Todo list is such a tool. When I brush the questions, I useipad + goodnotes + ElenaLin_ Qingqing’s electronic manual account template + Apple pencil。 Generally speaking, every day I make what I need to do the next day, and try to break it into small and easy steps. For example, if I want to learn the dictionary tree, I will split the plan into:

  • Look at the dictionary tree topic of 91 algorithm
  • Dictionary tree template problem lc208 of write 91 algorithm
  • Dictionary tree recommendation of writing 91 algorithm

    • LC211
    • LC212
    • LC472
    • LC648
    • LC820
    • LC1032
  • (if you still have energy) do your best to button up the high-frequency 5 questions in the label of the dictionary tree

Generally speaking, in addition to learning a certain topic, I will have some other things in my day, such as punch in 91 algorithm, one question a day, punch out one question a day, read emails, deliver applications, etc. Most of the time, when I get up and sit in front of the computer, I instinctively feel “too difficult” so that “I don’t want to do it”. Whenever I feel this way, I choose one of my to-do items that I think is the easiest to complete and start doing it. In other words – don’t think so much, brother, it’s over! Well, I’m an FPS player. I usually choose to do 91 daily questions first, because it won’t be too difficult, and other partners will see it after I punch in, which makes me feel great. Just start building“Overcome difficulties” – > “perform tasks” – > “feel great after completion”After the behavior pattern, everything will become simple.

From zero to Google programmer: my interview experience

Elena Lin’s electronic manual account tutorial can refer to this video https://www.bilibili.com/vide…

Post my mid-term schedule. At this time, I have established a better cycle, so I will see more tasks completed every day, and I don’t rely on the action of “cross out after completing each task”. My notes are not very neat or beautiful, as long as I can understand them.

Of course, you don’t have to be like me in tools. Books and pens are OK. However, I strongly recommend using a notebook, because a review at the weekend and the end of the month will continue to deepen the above-mentioned behavior patterns with positive feedback.

Learn to stand on the shoulders of giants

Look at a question10 minutesIf you don’t have ideas, don’t waste too much time on the wrong methods. Learn to read and learn other people’s solutions.

General force deduction problem-solving areaHigh ticket solutionAll very good. It doesn’t matter if you don’t understand a problem solution. First write it according to it, and then find out what each line of code is doing through various printing and debugging; If you still don’t know why, you can comment out a piece of code and click Submit. At this time, the system will report an error. You can take this and enter the line by line analysis solution, and you can understand what this piece of code is doing and why it must exist in the solution. (in this way, the submission success rate will be lower, but what if it is lower? Our goal is not to become the one with the highest submission success rate).

Of course, it’s OK to ask others, but I prefer to ask questions with specific purposes rather than the broad question of “how to do this question?”. Generally speaking, the more specific the question, the better the answer, and the higher the probability of being answered.

Quantity or quality?

Actually. A certain number is the guarantee of proficiency and the basis of seeing most question types.

Proficiency is very important in the interview: the interview lasts so long, other conditions remain the same, and the faster you write code, the more other things you can do. Other things can be to communicate with the interviewer, answer some follow up, do some optimization, etc. These are interview bonus items.

It’s also important to see most of the question types: see those with many question typesIn fact, the essence is whether a certain kind of problem can be better abstracted。 For example, for heap, 91 algorithm always emphasizes that its essence is “dynamic extremum”. Just after reading, I don’t understand. I may have a little understanding after doing one question. After doing three questions, I will feel “Wow, it can still be like this, oh, it can be like this!” the ability to have abstract problems is equivalent to the ability to respond to changes with invariance. I can not panic when I encounter problems I haven’t seen before. The probability of meeting the original question in the interview is really small, so it is very important to exercise your abstract ability.

Of course, the quality of brushing questions is also important. When we talk about the quality of problem brushing, what are we talking about? I think quality refers to whether a problem really understands what it is asking for. For each possible idea of this problem, what data structures are used, and what are the advantages and disadvantages of using this data structure. For example, two numbers and hash table are common time optimization solutions. The hash table can obtain the value of the corresponding key in O (1) time, which sacrifices the spatial complexity and optimizes the time complexity.

Review and repeat

Review and repetition are very important. After all, “who can make perfect”. For me, I write the most template questions for each data type. I have to brush them every once in a while on the basis that I can read them over and over again. Before the interview, I have my favorite template writing method for each common data type, and can improve the template according to each question.

I remember when I was learning heap, I felt it was too difficult. I wrote it for a week according to the heap written by Xiao Yang, a 91 algorithm lecturer – that is, the kind of week I wrote from morning to night. After that, I often joked“Even if you pull me up at three in the middle of the night and let me write a pile, there won’t be any bugs.”.Coincidentally, when I was interviewing a pre IPO company, I got the knowledge related to pile. At that time, the running environment was hacker rank, and the code needs to be run out and passed through examples (Note: not every company requires the code to run in the environment, and some companies interview more like writing code on a whiteboard). I immediately performed a sketch for the interviewer. Because I was too familiar, I finished it at one go. After writing, I found that the eyes of the two interviewers were shining. Later, the recruiter actively fed back that the interview results were very, very good. When I gave the offer, I gave it a little higher than the level I applied for, and when I finally talked about salary, I took the initiative to increase it by 12%.

There are many partners who brush questions together

It is difficult to brush questions, especially at the beginning. Most of the time, it’s not difficult, but this feeling of “how difficult” is what really hinders us from starting. When there are many small partners, with the pressure and encouragement of the people around, this feeling will weaken.

I often feel confused and anxious in the middle and later stages of brushing questions. Having many small partners can also reduce the sense of confusion. Even many times, because many bosses in the question brushing group and technology group have landed, they will share position information, which can be said to kill two birds with one stone.

For me, I added a lot of technology groups and question brushing groups on the Internet at the early stage of deciding to brush questions. Most of the time I brush questions, I open my eyes every morning to see that wechat is a page of unread messages. Every time I see this, I have a sense of urgency that I have to get up and brush questions. Every time I brush questions, I feel depressed. I go to the group to chat with everyone and encourage each other. I will feel full of vitality for a while.

Where can I find these groups? There are some active leaders in the problem solving area, and the problem groups are good. People often pull the problem groups in the discussion area.

Adapt to the interview environment

Even if it is an algorithm interview, it is still different from the feeling of leisurely brushing questions at home. Algorithmic interview requires fast locking of ideas and accurate attack. (ER, it seems that there are too many games…) in this regard, I strongly recommend the weekly competition of Likou and some simulated interviews. Simulation interview can find friends, and there are some websites that provide similar services. I simulated it three times in interviewing.io, which is still very useful.

My current competition score is about 1780. Once I was anxious to ask Lucifer what to do if she was nervous about the competition / interview. Lucifer’s reply was simple and effective: “play 20 games first.”.

From zero to Google programmer: my interview experience

Just do it

“Play 20 games first” is the most important guiding ideology in writing questions for interview.It’s always very difficult at first, but things are often not as difficult as they think. I often waste a lot of time looking for the “perfect” starting method because I’m afraid I can’t do well – in fact, when a person starts learning a skill, it’s probably not perfect. So if you also want to start writing questions for the interview, please think of it as a game – start playing first, then adjust your way of playing the game according to the needs and online strategies, and you can gradually become a great God.

Love triple strike

  1. See here, just point it with the support of your reading. Your reading is the driving force of my creation.
  2. Focus on the official account, and get more algorithms for hard core articles. Add a star sign and don’t miss every opportunity to grow.
  3. If you think the content of this article is helpful to you, please forward it for me.
  • Backstage reply: “e-book”, get my elaborate algorithm problem brushing e-book (200000 + 10000 words)
  • Backstage reply: “backpack”, automatically obtain the PDF of “backpack nine lectures”
  • The background replies: “brain map”, and automatically obtain the algorithm brain map summary I made
  • The backstage replied, “question brushing plug-in”, which automatically obtains the question brushing plug-in used by tens of thousands of people

In addition, you can reply to specific algorithm topics to obtain corresponding articles, such as “bisection”, “heap”, “tree”, “linked list”, etc

Recommended Today

Changes of paging plug-in after mybatis plus version 3.4

file 1、 Mybatisplusinterceptor Starting with mybatis plus version 3.4.0, the old version of paginationinterceptor is no longer used, but mybatisplusinterceptor is used instead. Mybatisplusinterceptor is a series of interceptor chains that implement innerinterceptor, which can also be understood as a collection. Some interceptors can be included as follows Automatic paging: paginationinnerinterceptor (most commonly used) Multi […]