Skip to content
Rain Hu's Workspace
Go back

[Life] July's plan

intervalrain

Next step:

Technical Phone Interview:

Please ensure you have a working internet connection and current web browser :)

There will be about 1-3 different questions (dependent on complexity - e.g. 1 Hard OR 2 Medium problems) related to coding, data structures and algorithms. You will be expected to come up with optimized and production-ready code, free of bugs. You should not write in pseudo-code.

I would highly recommend watching this video first to get a good grasp of the tips/ideas/areas of focus for the interviews here at Google. Do then read the next part to concretise these interview tips.

Refresh yourself with CS fundamentals

Coding Practice + CS review

When you practice, do not use an IDE. You need to be able to write legible, compilable code without help with regards to layout, or spelling of standard library class/method names. I suggest solving similar style algorithmic/ DS problems on a google document or on paper to simulate a real interview. Several sites that provide similar problems to those typically asked in the interview are:

Below are some tips for your Coding Rounds:

Important areas of assessment

Strategy for Success (Framework)

Time Allocation During Interview (Suggestion from Googlers for your reference)

+ Solve 1 question in 20 mins
+ 2 mins for gathering all requirements and asking clarifying questions from the interviewer.
+ Approx 8-10 mins for coming up with a valid solution to the question, discuss with the interviewer about your solution, trade offs, the time and space complexity.
+ 5 mins for coding the solution.
+ 5 mins for dry run (sample test cases) along with discussion with the interviewer.

Breakdown of Framework

Interview Preparation Plan (created by Google Software Engineers)

  1. Revise all concepts on data structures & algorithms- you can also use this gitHub link on CS fundamentals that can serve as a checklist while preparing. This BigO cheat sheet http://bigocheatsheet.com/ could help you as well!

  2. Structured Revision plan on the topics that to cover (Eg. hashtable, hashmaps, trees, arrays, strings, graphs, dynamic programming and more)

    • Practise per category

    • Practice up to a level that you reach competency - Solve the question in 20/40 minutes (for medium and hard problems respectively) and come up with the optimal solutions

  3. Practice Problem Identification by picking random problems and practice identifying “Which category does this problem belong to? Backtracking/Dynamic programming? Solution/Algorithmic design?”.

  4. Practice coding without an IDE, be familiar with the differences in how you should write code in Google Docs. Do practise coding in Google Docs within a set time frame and getting comfortable talking while coding.

  5. In summary: Practise a wide variety of questions, and simulate actual interview conditions! You can also run mock interviews here at pramp.com

Frequently asked topics (in no particular order)

What we are assessing for Data Structures & Algorithms

System Design Tips

System Design assesses a candidate’s ability to combine knowledge, theory, experience and judgement toward solving a real-world engineering problem with significant ambiguity.

Systems Design questions are about learning from your experience and applying those lessons to future projects. We are looking for you to be able to:

Useful Resources

Videos/Blogs:

Coding Practice:

Free Refresher Courses:

  1. Example Coding/Engineering Interview

  2. How to: Prepare for a Google Engineering Interview

  3. Interview tips from Google Software Engineers

  4. Steve Yegge’s Blog (read me!)

  5. Check out this YouTube playlist!

HackerRank

Topcoder

LeetCode

Interviewcake

Kattis

Geeksforgeeks

Pramp - Mock Interview

Interviewing.io

Strategy for algorithmic problem solving - step by step

Intro (https://www.coursera.org/learn/cs-tech-interview/lecture/hYbvm/algorithmic-problem-solving-and-interviews)

What to do first (https://www.coursera.org/learn/cs-tech-interview/lecture/hAbVU/case-study-introduction)

Starting with a naive solution (https://www.coursera.org/learn/cs-tech-interview/lecture/gs7Tg/case-study-a-first-solution)

Optimizing your solution (https://www.coursera.org/learn/cs-tech-interview/lecture/Qu7hy/case-study-going-deeper)

MIT Open courseware - Introduction to Algorithms

All the best with your preparation! Please let me know if you have any questions.


Share this post on:

Previous
[Leetcode] 347. Top K Frequent Elements
Next
[統計] 統計學概要