Published in · 6 minute reading · 24. august 2019
6 minute reading
24. august 2019
This article is also available atmy blog
I started Leetcode as a daily routine in early November 2018 while attending Georgia Tech's online Master's Machine Learning course part-time and maintaining a full-time job. It was very difficult to find enough time to solve a single question from scratch. So my strategy was to read the most positively rated questions and answers in the discussion to understand the questions in each tag. I found it extremely helpful to read the solutions before troubleshooting the issues myself. It saved me time and allowed me to read more questions in one go. This way I could easily recognize variations of a certain type of question in the future. It also avoids unnecessary frustration at an early stage. Many people may feel frustrated because they cannot solve even easy problems at first. This is actually very common. Knowing the solution beforehand can really help you avoid this. I know some may disagree on this point. YMMV. (In addition to leetcode, I compiled thisresource listit helped me)
In my opinion, this is more efficient for most people who are not algorithm gurus. But don't get me wrong, I still have to get up early at 6 to leetcode for those days.
Note: If you are very new to the interview process at large tech companies,interruption of the encryption interviewhe is your friend It describes the recruitment process in detail and outlines the preparation strategy. Personally, I started with this book a few years ago. It helped me set expectations for the interview so that I didn't get any big surprises along the way.
Around New Year 2019, I started the semester with two hard courses Reinforcement Learning and Advanced Operating System. These two courses consumed more than 30 hours per week. By then I have briefly "solved" most tags and can recognize types of problems just by looking at the question. Then I started trying to solve the problem without reading the solutions. My posts were much less between January and April. This slowdown is very important to me when it comes to converting rote learning into practical interview problem solving skills. Writing the code strengthened my understanding of the algorithms I was learning.
From January to April I tried to do as many weekly contests as possible. I never managed to solve all four questions in the competition. In most cases 2 questions are solved, sometimes 3. The advantage is that the competition provides an interview environment because it has time limits.
Luckily I have a friend who was preparing for interviews and we leetcoded together. We often talked about LC and shared resources such as interview preparation materials. An example is when I tried to understand the DP questions even howChange currency, a friend of mine can share with me a summary of the DP questions he found online. The summary tells about the difference between bottom-up and top-down solutions. In addition, with a friend you won't feel lonely on the journey, so you won't give up easily.
I did Leetcode questions and contests on screen most of the time. To simulate a more realistic conversation, I periodically solve problems on the board.
Time to put my hard work to the test. My hectic semester is coming to an end. Meanwhile, I was slowly getting calls from recruiters from some companies. I had the opportunity to interview company A, Microsoft and Uber. I realized this was the perfect time to review my practice and accepted all phone screens every hour. It was pretty easy to get through the hr screen for all 3 companies.
Phone calls are processed very quickly. The phone rounds were pure leetcode questions. I conducted all coding interviews during online interviews or assessments. This part of leetcode helped a lot. After reading the questions I was able to decide which algorithm or data structure to use. Sometimes I had problems with the application. But I felt pretty confident during the match.
Uber sent me only after invitation on the spot. Amazon and Microsoft then accelerated the process on the spot. Got 3 on the spot in 2 weeks. Until I get the installation on site, I bought leetcode premium so I can learn question groups with these companies. It's $159 a year or $35 a month. I continued my adventure with leetcode. But this time my strategy is only focused on leet coding the most important questions from these 3 companies. Leetcode has a feature to display questions marked by the company in different recent periods, 6 months, 1 year, etc. Questions from the last 6 months should be the most relevant. When I found out there were about 350 Uber questions, I planned to fill out at least half of them. This means I have to practice about 10 questions every day because of the limited time I had. This time, instead of going straight to the solution after I got stuck, I tried to solve it with a naive solution and then tried to optimize. (this should also be done during the interview if you cannot come up with an optimal solution right away). I have always analyzed the time and space complexity of my solution, which is very important during the interview.
Flying to the West Coast twice from the East Coast was kind of brutal for me. but YOLO. To my surprise, out of 5 interview rounds, I got only one leetcode question. The next two rounds of coding are pretty open. It seems to me that they initially checked the candidates' ability to ask questions about requirements and OOdesign. And of course the management principle was used in all 5 interviews.
In contrast, the Uber and Microsoft coding questions are exactly the same as the leetcode questions. The questions were clearly formulated, examples of input and output were given. The complexities of space and time are expected to be explored.
Note: If you are new to data structure and algorithms, I found itAlgorithms,interruption of the encryption interview, iStanford online courseit's great to start. For a candidate with very little knowledge of design,Main Design Patternsit's a good start to understanding many different patterns. I highly recommend it for more advanced usersDesign patterns: elements of reusable object-oriented softwareby GoF. I still use it as a reference while studying or working. Last but not least, the design of the system, you can find itSystem design grokkinguseful if they were new to system design. This covers many of the topics you will see at work or in an interview. It teaches you how to analyze requirements. Next, how to choose a plan based on your business requirements.
I finally got a job with one of the FAANGs. All in all, Leetcode premium is still worth the money. This does not guarantee that you will see exactly the same questions during the interview, but you may have much better logic to take the right direction in solving problems. It also boosted my confidence when I got stuck on a question.
Preparing for System Design Talk: How to handle asynchronous, long-running work with long-running polling, PubSub, and queuing
Ace System Design Interview at FAANG
How can I have LeetCode for 6 months and get a FAANG offer
These are all resources to help me find a job with FANG
Follow the steps for the system design interview
Ace interview FAANG System Design: Database, NoSQL, SQL
Preparing for System Design Talk: Cache
My posts on economics and technology
From CRUD web app developer to SDE to voice assistant, my ongoing machine learning journey
Full Stack Development Guide: Integrer AWS Lambda Serverless Service i Angular SPA
Complete Developer Guide: Sharing Transactional Data with a Serverless REST API Running on AWS Lambda
Full Stack Development Guide: Transaktionsdatavisualisering i Angular SPA