Here, I am going to provide Google Interview preparation guide. Google mainly focus on your speed of coding, approach to solve the problem and corner cases at initial rounds.
I’m trying to post types of questions or reference which helped me during interview preparation for google.
Interview tips from Google Software Engineers:
My Unlikely Path To Becoming The 1% At Google:
Suggestions on reading material include:
Google Style Guides:
Several site that provide similar problems to those typically asked in the interview are (medium-hard questions):
- HackerRank (highly encouraged)
- Geeksforgeeks (highly encouraged)
- Leetcode (highly encouraged)
- InterviewBit (highly encouraged)
- Problems from Cracking the Coding Interview Book
- List of ACM-ICPC questions/ codejam questions
This will help get you into the problem-solving mindset.
Here are a couple of extra videos which are definitely worth watching before your interview:
How to work at Google – Example Coding/Engineering Interview:
How to: Prepare for a Google Engineering Interview
Google expect you to know a lot about algorithms and data structures so there is given belowt bigocheatsheet that may also help you!
During the interview, Ask yourself!
- Do you feel confident with CS fundamentals?
- Do you listen well?
- Do you know what to ask to clarify the questions?
- Can you find the optimal solution of the complicated coding/algorithm problems, present it in a very efficient/clean coding (no/less bug), and share your thoughts logically?
- Is your problem solving and coding speedy and efficient with your profound knowledge in CS fundamentals?
- Have you covered off edge cases?
Interview Preparation Plan:
- Revise all concepts on data structures & algorithms (Geekforgeeks)
- Structured Revision plan on the topics that to cover (Eg. hashtable, hashmaps, trees, arrays, strings, graphs, dynamic programming and more)
- Practising per category
- Practice up to a level that you reach competency – Solve the question in 20 minutes, come up with the optimal solutions, with close to zero hints, no bugs
- Practice Problem identification by picking random problems and practice identifying “Which category does this problem belong to? Backtracking/Dynamic programming? Solution/Algorithmic design?”.
- 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 and timing yourself and talking and coding at the same time!
- Advice: Practise a wide variety of questions, and also to simulate the actual the interview condition!
- Tip 1: Think out Loud & Communicate your Thought Process
- Google interviewers are accessing you based on your problem solving skills, and want to know your full thought process behind why and how you derived the final result
- The best approach I can share is to Talk through your entire thought process & explain about your approach, how you derive a certain algorithm, explain the trade offs, and discuss the complexity of the solutions you are proposing and explain your code (Talk and Code).
- Most important would be to pick the right data structure and algorithm for a specific problem! Talk about how they’re implemented and why you’d choose one implementation or data structure instead of another.
- Do not mumble to yourself or keep silent when thinking.
- Tip 2: Ask Clarifying Questions (Very Important!):
- Never jump straight and code up the solution. Always take a pause, look at the interview question and ask some clarifying questions
- These clarifying questions should enable you to cover for edge/boundary cases better and to define the scope of the question
- Eg:”Describe a good algorithm for sorting a million numbers”
- Good Clarifying Questions:
- What is the range of the numbers? How are they distributed? Are the numbers integers or floating points? How much memory is available? Are there duplicates?
- Tip 3: Discuss algorithmic complexities & Identify all Edge Cases Independently:
- For Algorithms, you need to know big-o notation very well.
- Always state time complexity and space complexity upfront.Think of how you can reduce the complexity further to reach an optimised solution!
- Distinguish between average case/worst case runtime
- Consider amortized time complexities!
- The goal is to reach the most optimised solution at the end of the interview, and to have a complete working solution.
- Tip 4: Test your Code:
- Check for boundary conditions!
- Stress tests to ensure that the code runs within time constraint
- Create tests that have 100% code coverage
- Rectify any bugs in your code before the interviewer points it out
- Tip 5: Ensure Good Code Quality on Google Docs:
- You are expected to code in Google Docs. Since it does not have any IDE, you are expected to type out your code from scratch
- Type as close to real working fully functional code as possible. This code should be maintainable and readable by a large database of engineers
- Your code is supposed to be very readable. Code in the latest version of your preferred language and use appropriate language constructs. Take care of variable names and syntax.
- Do not code Pseudo code or shortcuts, it is not good enough.
- Always cover for Edge/Boundary cases
- Tip 6: Positive & Independent Attitude & Being Open to Feedback:
- If you get stuck, stay calm, asking questions can help to reduce the scope of the problem.
- Aim to solve as much independently as possible, ideally with as few hints as possible.
- Always take initiative in the interview, and treat it like a technical discussion.
- Listen attentively to the interviewer, and integrate the hints/suggestions by the interviewer to your solution.
India Inspires India | #GoogleForIndia
How to: Work at Google – How We Hire
Frequently asked topics (in no particular order):
- Binary search
- BFS/DFS/Flood fill
- Tree traversals
- Hash tables
- Linked list, stacks, queues, two pointers/sliding window
- Binary heaps
- Dynamic programming
- Union find
- Ad hoc/string manipulations
- Other good to know topics: Trie, segment trees/fenwick trees, bitmask
- In C++ STL, It would be good to have knowledge on lists, maps, stacks, priority queues, binary trees, graphs, bags, and sets.
- For algorithms you’ll want to know greedy algorithms, divide and conquer, dynamic programming, recursion, and brute force search.
- You’ll definitely want to be conversant with bigO notation, timespace complexity, and real world performance of all of this.
Strategy for Success (Framework):
- Step 1: Clarify the problem
- Step 2: Define your approach
- Step 3: Propose a solution
- Propose a solution before coding. Faster to find mistakes verbally than coding out a solution that may be incorrect
- Feel free to say that your first solution will be refined later
- Run through at least one or two examples to check for correctness
- Use reasonable variable names or clean up the code after the first pass
- Ask if the interviewer has any questions before refinement
- Step 4: Propose an alternative solution
- Ask your interviewer if you have time to find a better solution/ If so, clarify assumptions (e.g., improving performance)/ Rinse, repeat/ Compare the solutions
- Step 5: Implementation
Google Technical Interview Workshop:
Prepare for Your Google Interview: Coding
Prepare for Your Google Interview: Systems Design
Prepare for Your Google Interview: Leadership
Coding questions ot sites:
To learn more about golang. Please follow given below link.