Job Recruitment Website - Zhaopincom - Google Job Diary: It took me eight months to prepare for the Google interview

Google Job Diary: It took me eight months to prepare for the Google interview

Exactly as the title says, I spent thousands of hours reading, writing code, and watching computer science lectures in preparation for my interview as a software engineer at Google.

If you are interested in my interview plan, you can view the plan from my github project.

丨How did this plan come about?

I started programming in middle school, but chose economics in college. This is because I worry that there will be too many programmers looking for jobs when I graduate. Now that I think about it, I was wrong about Dafa.

Later I joined the army in order to become a programmer, but the recruiter sent me to the Military Intelligence Service instead, so I spent a year learning Chinese and served in South Korea for two years.

Before I retired, I tried to pick up the keyboard again, but I found that things have changed and people have changed. The difference is huge. I used BASIC through middle school and high school. But after returning, I used C++. The difference between the two was so big that I couldn't adapt to it for a while.

But I loved making websites, and I was still using WordPress at that time. I don’t know how to build a website from scratch.

After retiring, I decided to stay in South Korea for another year and teach English. At the same time, he never forgot his original intention and spent his evenings and weekends learning web development, using Perl, HTML, CSS (which was a new creature at the time), JavaScript and SQL.

After a year of intense study, I got a job programming in Seattle, and I've been in Seattle ever since.

I have since been a web developer for 15 years. I started three companies, two of which are still profitable today. Over the years, I have worked in both large and small companies, witnessed and assisted the startup and growth of startups, recruited and managed teams, and served as product manager, designer, marketer and CEO.

I gained a lot in this process, and it can be considered relatively successful. But it's still far from enough.

丨Change in career direction

Do you still remember the part where I chose economics by mistake and didn’t get a degree in computer science? Eventually something changed.

After working for a few years, I feel that I am mature and can go to any company. After all, I am a "full stack engineer".

However, when I was looking for a job in 2013, I realized how bad I was.

In the past few years, I spent too much time chasing money, and even running companies in my spare time, which made my skills stagnant. My technology stack is a bit out of date.

In the past few years, my skills have always been sufficient. Although the technical field is relatively broad, no one can be called an expert in any direction.

Don’t get me wrong, I think it’s okay to find a job, but it’s just not the technology or field I want to go to. I could still be hired by companies whose technology stacks weren't very new, and the pay wouldn't be bad, but I couldn't get excited about that prospect.

My "much worse" self-perception reached its peak when I was looking for a job last year. I'm interested in working for a local venture-backed startup. But since I didn’t have a computer degree and didn’t have the skills and knowledge to master this degree, I ultimately didn’t have the chance.

I was working full-time at my company at that time.

At the beginning of 2016, I decided it was time to make a change, from web developer to software engineer. In order to master the knowledge of computer science degree in a few months, I need to study hard and practice hard. Although it is a long way to go, I believe that once I succeed, I will enter a new career.

Some people may think that there is no difference between web developers and software engineers. They both require programming and technology, but software engineering requires more knowledge, such as data structures and algorithms, compiled languages, attention to memory, and understanding the impact of different code and architecture on the machine running it.

When large companies recruit software engineers, they expect candidates to have this knowledge.

I asked a friend who works at Google about working at Google. I also read "How Google Works" and had a certain understanding of Google.

By chance, I also got a copy of the guidance notes for Google interview candidates, which became the basis of my study plan.

Google is a great company and it was already a goal of mine before I knew it.

丨Why my goal is Google

Set the goal to the moon, even if you fail, you can still fall among the stars.

Google's threshold is very high. They only want to recruit the best talents, so I set my goals higher. Even if I don't go to Google in the end, it should be no problem to go to other companies.

And the more I learned about Google, the stronger my desire for it became.

Google has a very good "recruitment, training and retention" atmosphere. Simply put, Google takes smart, creative people and takes good care of them. Google rewards people who create value, encourages bold innovation, and gives employees the freedom to make good decisions for users.

Google's hiring process has been fine-tuned over the years to hire based on intelligence and passion. Brain tests are no longer needed. Candidates’ programming skills, technical knowledge, and whether they are “Google enough” (this word contains too many things...).

Google's management is also unusual. Their management is very relaxed and they trust their engineers to make the right decisions. Trust in employees makes management roles at Google different from those at ordinary companies. In addition, management cannot unilaterally decide to hire, fire, or promote an employee. Most important decisions need to be decided by committee votes, which can reduce risks.

Google's human resources department has been making progress. They use data and employee feedback to improve the evaluation system, which includes recruitment, promotion, rewards, etc.

Oh my God, there are so many great things about Google. I went to the Google offices once and I had high expectations, but it turned out to be even better than I expected!

丨About Google Interview Academy

Do you still remember the interview guidance notes that told me what to learn? Although I don’t understand much of the above, at least it gives me a goal.

I turned the topics in my notes into outlines and studied them one by one by watching MIT and UC Berkeley lectures on YouTube. Each link may have multiple learning contents, and many videos will basically lead to the next video. In this way, I kept learning, and the learning outline gradually enriched.

Since the business and work codes I wrote before were all confidential, my Github was basically empty, and it looked like I was not typing code at all, so I uploaded this study outline. . I needed to create a project, and I initially called it "Project 9894" because Google was founded on September 4, 1998. I later renamed it “Google Interview Academy.”

In the process of learning, I added all the topics I discovered one by one.

In the past, I always thought that “knowledge is enough”. In my career for so many years, I have no idea how the CPU processes a program, how the memory works, or other knowledge. I really admire how I managed to get through it all these years.

My little Github project gradually started to get some attention, and I even wrote an article to celebrate the project getting 20 stars.

One morning I found out that my project had 120 stars! A well-known person in the industry shared my project on Twitter the night before, and my project received a lot of attention and even entered the Github trending list of the day. I was number one on the Github trending list for several days haha.

Many kind-hearted people took the initiative to encourage and thank me, which made me discover that there are thousands of people like me who not only want to work at Google, but also want to become a software engineer. I listed The learning content is exactly what they need to learn.

It has over 21,000 stars so far, which is incredible.

丨What if I can’t work at Google

As long as the sky doesn’t fall, it doesn’t matter.

I put in a lot of time and effort to become a software engineer at Google, and even if I unfortunately failed, I learned enough knowledge and skills to take a job at any other company.

No matter how it ends, at least I will become an entry-level software engineer. I don't think I have 15 years of experience as a software engineer because I really didn't have that ability in the past and I'm just as new as a freshly graduated CS student.

This is a new journey for me, it has just begun. Even if I will make a lot of mistakes, I am not afraid because I have the enthusiasm to learn new content and I want to learn all the knowledge I need. , become an excellent part of the team.

丨Tips: Don’t study too much like me

I spent eight months preparing for the interview, but in fact I could have shortened a lot of time. Just like doing any other complicated things, it requires trial and error and detours at the beginning. There are always some things I want to go back and do again.

I learned a lot of content that I didn’t need. Some of it was because I thought it was needed for interviews, and some of it was because I thought it would be used at work. I don’t want to be a burden on the team. But it turned out that I worried too much, and there was no need to learn a lot of content.

I spent three weeks reading a book about C++ with about 1,000 pages. I didn’t remember much of the content, but at least I learned a little more about C++. Originally, I thought I would use C, C++, or Java, but it turned out that I was going to use Python during the interview. Remember this lesson: Don’t guess, ask! Go check it out!

I discovered later that I only needed to read three or four books. I had read too many.

I compiled a summary of algorithms that I reviewed repeatedly, which recorded many questions that I did not want to encounter in the interview. This is actually a waste of effort and you don’t have to do it.

I spent a lot of time watching videos, but I should have watched less and slowly added more content over time.

I should stop reading books as soon as possible, switch to watching videos, and start programming verification and problem solving as soon as possible. Get an early start on hands-on practice of what I’m learning.

Reviewing knowledge at intervals is a key method of memory. Don’t learn a piece of knowledge at once and leave it alone, otherwise you won’t be able to truly master it. Review it every once in a while. Each time you repeat it, you will deepen your understanding. The more times you do it, you will understand every detail and become a true expert.

To help review knowledge, I made a knowledge point flashcard for mobile phones. There are 1792 pieces of knowledge in it. Now I think the content is a bit too much. I review the above knowledge points whenever I have time, such as Christmas shopping or waiting in line for the bus. When I can answer the questions on the flashcard correctly, I mark it as "understood". Otherwise, I can see the answer from the flashcard and wait until I answer the question correctly next time before marking it.

My inner fear made me learn too much unnecessary knowledge, such as "What if they test me on red-black trees?"

But I don’t want to study for interviews, I want to study to work at Google and solve heavyweight problems. This means that learning algorithms are still useful, and they can improve the time and space efficiency of computers.

Maybe I will never use the Ford-Fulkerson algorithm (a type of greedy algorithm that calculates the maximum flow of network flows), but after studying it, I at least know how to solve similar problems if they arise.

丨Summary

Now I understand the history of computers, the greatest part of programming - data structures and algorithms, and how the underlying computer system works.

Before I started preparing for a Google interview, I always wished I could skip all the preparation stages, apply directly, and then learn the languages ??and tools used at work.

But in this process, I realized how important this knowledge is. Although they may not be applied in daily development, I believe that my efforts will bring inner improvement to myself.

I submitted my application right away, something I had been preparing for for almost a year (it started in January, but it wasn’t until April that I was able to commit to studying full-time).

I feel that I am almost ready. It is time to submit the application and test my study during this period.

This will be a leap in my life. I see a bright future ahead.

Thank you for taking the time to read my story. Text | Compiled by John Washam | shixinzhang