Google | L3 | Bangalore [Offer] | Multiple Offers
Anonymous User
13900

Hello Community,

I want to express gratitude and thank Leetcode Team and Members Community to provide excellent platform from which I benefited alot.

Background

* Graduated in 2018 in CS from BITS PILANI.
* I used to do competitve coding on Codechef with college friends, ~20 long challenges participated.  
* Although I never made notes or anything to retain that(which I regret), I still retain some sense when I look at the problem(specifically mathematical problem).
* For college placements, gone through famous websites and targeted 20-30 questions from each topic. Leetcode was not known at that time very much.
* Working as SMTS in Oracle since 3 years

Motivation:

* Although I was blessed with great team at present company, I wanted to get access to company with more scale.
* Customer oriented products and less of enterprise products

Preperation:

For experienced people, you may skip, for freshers or low experience people, hope this helps you a litle :)

DS ALGO:
* I started Leetcode 1 year back with easy questions. 
* Solved 356 Total que with 144 easy, 192 medium and 20 hard 
* Focussed on  Top interview questions and understood different ways of implementing same question. 
* Made myself comfortable with concepts and tried to solved 1 or 2 questions based on the concept
* I used to revise like this: 
	* Eg. If I want to revise graph, I used to write/scribble everything I know about graph on rough papers. 
	* Initially it used to take 30-40 minutes, later I used to write most of the ideas in 10 minutes.
	* Ideas includes, famous algo of graphs, some ideas absorbed while solving any coding questions.
	* This revision for all topics helped me retain all the things that I did which was my main focus.
	* Retain and revise as much as possible(even though you did few questions).

SYSTEM DESIGN
* 	System design primer is the start, go through it in creative way. 
* 	Understand it with curiosity and not like syllabus. search any key word you don't understand
* 	Study every topic and its relatable topics in one sitting to get a basic sense.
* 	Get familier with all the major components and start drawing them on any drawing online app or notebook. 
* 	For eg I used to do this for any design, eg. Design Some Web service for some product
	* 	Draw the user , think whether you want to build as an App or Web
	* 	Draw the initial entry of the user into the system, eg. Gateway.
	* 	Draw some service, Web service to serve the user
	* 	Draw some storage a generic database to store the data.
* 	After doing above, think how end to end user requests will flow. Get familier with communication technologies.
* 	Get familier with storage database technologies. 
* 	If you don't understand something, go to any extent or depth to satisfy yourself .
* 	Understand such that you should be able to explain eg. how whatsapp works to someone from non-tech background.
* 	In the flow of learning, I came  across many exciting technologies which I didn't studied in college to just understand how bits data move from one place to another:
	* 	electrical techonologies, 
	* 	firmware, 
	* 	satellite communication , 
	* 	physics.
* 	I never felt to gave a mock interview, because I was satisfied with basic components and if anyone wants to know in depth(to a certain extent) I was happy to do that.
* 	Study in BFS fashion, know many components, know one or two areas in depth and apply your sense to other areas.
* 	I am fascianted with databases and their use cases. I got familier with many of them to feel satisfied.
*   Start from history like how each technology evolved from 1990s to 2000s to 2022. 
*   For eg. for database I became aware like this:
	* 	 there are only sql databases
	* 	 there are sql and no-sql databases for different use cases
	* 	 there are database which can offer sql like consistency and no-sql like availability
	* 	 database need not be in disk, they can be in memory
	* 	 messaging queues can also be database
	* 	 Anything which stores data temporarily with one storage area and one compute area, qualifies as a database !
* 	 LLD is must to know for any service.
	* 	I used to make a mind map of any service. For eg. cricket related service:
		* 	 imagine a hierarchy of entities like tournament, teams, innings, etc...
		* 	 players, baller, batsman, umpire, etc...
		* 	 ball, run, etc...
	* 	Some of  physical  entity will have corresponding entity related to your service. Eg. a physical seat in theatre will correspond to  show seat in bookmyshow app. You will lock show seat and not physical seat.
	* 	Most of the entities will always have: id , status(ENUM), createdAt, type(ENUM). 
	* 	Practice on a board/big paper to quickly come up with entities. Later you can decide the relation.
	*  If I give you a question, all entities should pop up in your mind in 2-3 minutes. Obviosuly , you will explain that in 20-30 minutes.

MACHINE CODING
* 	This area I lacked the most as I didn't had experience in JAVA. That's why I started coding, system design and machine coding everything in JAVA to feel comfortable.
* 	After looking at many solutions online, I created my format and practiced few questions I found out in interview experience based on that.
* 	You should create your own format to feel confident , but I will share mine.
* 	If you give me any question for eg. Design a service where user will register and then perform some actions(say hello to other user). Later show who said hello to whom.
	* 	I start with Driver Service, create a Main class and in Main method take input from console.
	* 	Later I wrote some customer Test class for more sophistication.
	* 	After Driver Service, write a service specific to what questions says, eg. User Service.
	* 	Create User Repository(having a hashmap as in-memory storage) and write CRUD APIS.
	* 	Create User Model with basic id, name, address that question is asking.
	* 	For every requirement I used to create a Service, A Repo(if required) and A model(if required).
	* 	Quickly, test one service before you go to second requirement and implement that.
	* 	Initially, I used to take 2 hours for complete implementation. 
	* 	Later due to increased practice, I automatically memorized what I need to do and did all machine coding interview questions (without bonus questions) in 1 hour 15 minutes.
	* 	Machine coding became my greatest strength in two weeks from complete weakness.
	
BEHAVIOURAL
* 	I gave mostly honest answers as I had a lot of experience in my current company with good projects
* 	For people with less experience, understand the Product you are building/testing/or deploying in your team
* 	Think that you are Product Manager and want to enhance your current product with the project that you are doing. All of your behavioural preparation will be covered if you think like this.
* 	Irrespective of what you or your team do, try to get an eagle-eye view on these things as soon as you get 2-3 months in your job :
	* 	Strategy of the product, 
	* 	Business of the Product, 
	* 	Competition for the Product,
	* 	Different implementation of the product(in technical sense),
	* 	Testing of the product,
	* 	Deployment and CI/CD of the product,
	* 	All the teams associated with the product. Get a very superficial overview of what they do.
* 	By doing this for my product at current company, I cruised in behavioral questions easily. 
* 	In some cases they asked hypothetical questions which I was unkowingly prepared like:
	* 	 if you are manager, or lead , what will you do to enhance the product. 
	* 	 estimate the size of cache in xyz company
	* 	 what you think lacks in your team/product/manager/colleagues/project

INTERVIEW EXPERIENCE
I will generalize the interview experience due to NDA and bla,bla....
* 	Coding questions: 
	* 	LC Medium 99%, LC Hard in Google for one interview based on Graph
	* 	Common topics I experienced:
		* 	Trees: 
			* 	Sending some values from child to parent and returning something vice-versa.
			* 	Practive all order traversals and their basic questions
		* 	Arrays:
			* 	From leetcode 100 top interview questions.
		* 	Binary search:
			* 	Painter's partition problem is must to know. Understand how binary search helps in dividing the search space
		* 	Graph:
			* 	Strong grasp should be on BFS vs DFS. 
			* 	If I tweak the original question, you should be able to tweak your most optimal solution and explain clearly TC and SC.
			* 	eg. If original question can be implemented by Dijkstra, and if later I restrict the edges with only two types of values, then you should come up with 0-1 BFS
			* 	all basic algo implementations should be so smooth that if I run your code on LC, it should give AC in first attempt with all corner cases. Remember, their are red flags assocaited based on this.
		* 	DP:
			* 	simple 1-D and 2-D dp.
			* 	matrix questions, calculate minimum and maximum of some values
			* 	knapsack variations and general sense to indentify knapsack works in this question
* 	System design:
	*  always famous questions like  cab service, booking service, food delievery service
	*  LLD was focussed which I practiced thoroughly and some generic HLD diagram consisting of microservices, messaging queue and database.
	*  sometimes creative questions were you need to design a service which sits in between two highly scalable services.
		*  focus on API contracts
		*  SLA estimation , specifically QPS
		*  database choice and schema
*  Machine Coding:
	*  design bill sharing service
	*  design cab sharing service
	*  design coupon service for customers

OFFERS
* 	I got offers from some startups and two MNC, Amazon and Google.
* 	I didn't got Amazon numbers yet, although they confirmed the positive response from all interviews. As they are too late and I have some biased view for them, I will not even wait for their offer.
* 	Since last two years, I was looking at other career opportunites and appeared in some exams held in India for different domains(both private and govt.). 
* 	I didn't got the results I expected in these exams, so thought of changing the current company and team and get new scalable team where I can impact more people.
* 	I have decided to accept Google offer with decent TC (although some startups were delighted to increase TC 1.5 times, after I told them about me joining Google).
* 	I have broader interests in diferent domains and I think that Google would help me in long run.
* 	Offer links:
	* 	https://leetcode.com/discuss/compensation/1811425/MakeMyTrip-or-SDE-2-or-Bangalore
	* 	https://leetcode.com/discuss/compensation/1811448/Oyo-or-SDE-2-or-Bangalore
	* 	https://leetcode.com/discuss/compensation/1811457/Acko-or-SDE-2-or-Bangalore
	* 	https://leetcode.com/discuss/compensation/1811461/PhonePe-or-Software-Engineer-or-Bangalore
	* 	https://leetcode.com/discuss/compensation/1811484/Google-or-Software-Engineer-or-Bangalore

Last thoughts:

  • Focus on satisfaction of knowledge rather than the TC, it would keep you sane in long run.
  • Be prepared always, even if you get your dream offer. Be interview ready such that, If you had a rough conversation with manager today, within two weeks, you should get a good offer.
  • Believe me, As I got this confidence now, I feel very relaxed and can focus on projects to impact more. I would never trade this priceless confidence for any TC or any promotion, as I know what was life without that.
  • Don't depend on motivation, get inspired rather than motivated. It's hard in young age, but try to read 3-5 minutes daily about spirituality or any sacred texts of your religion/faith and do meditation. Your chaos won't be any less, but you will feel more centred and relaxed.

All the Best :)

Comments (28)