Disclaimer: To succeed in an interview, you do not need to finish all LeetCode questions. But solving all of them could be fun and satisfying.
I finished all LeetCode questions and was able to get offers for most of the companies I interviewed. The coding interviews have been pleasant experiences after all the grinding. Here I want to share my timeline in solving all LeetCode questions in a year as a data point for you. Happy LeetCoding!
As I do not major in CS, to gain some background knowledge in data structure and algorithms, I watched Berkeley CS61A and CS61B. You may want to watch MIT60001 (Python) or other courses of interest if you are still struggling with the programming language. After finishing the homework and exercise questions, I was able to solve ~2 questions in the LeetCode contest.
I started practicing by solving questions in each tag for Question 1 - 400. Some of the tags are more basic, such as Array, Linked List, Hash table, and Binary search. Some of the tags are more challenging in general, such as Dynamic Programming, and Divide and Conquer. Pace yourself, and hang in there. Some of the questions were too difficult, such as Q4 Median of Two Sorted Arrays and Q37 Sudoku Solver. I skipped them at that time. At this stage, I practice four questions every day.
For Question 401 - 800, I solved them in numeric order to figure out my weak points and review more of such questions. At this stage, my contest rating is ~1800. It could be frustrating that what I learned was not tested, or what I learned does not come to my mind quickly during the contest.
For Question 900 - 1600, I solve ~8 questions per day by working on two virtual contests. Each contest takes ~1 hour and 30 minutes, and another 30 minutes to review the solution. At this stage, my rating was increased to 2100-2200.
If everything works as planned, it will take ~60 days to finish the two courses and ~300 days to finish 1600 questions. But in reality, I get too busy with my daily work, or I am not in the mood from time to time. It took me ~1 year and two months to finish.
During the interview season, I try to either solve ~10 medium questions every day or try to solve ~3 hard problems, which boosted my ranking to ~2400. Sometimes, I need to prepare for system design and machine learning, so the number of questions was reduced from time to time, but overall, I can quickly solve most of the interview questions.
To gain the most out of practice, I believe the key is to compare and contrast.
Here are some examples of my previous post on
1. Link questions together
[One branch cutting trick to solve three LeetCode questions]
https://leetcode.com/problems/find-minimum-time-to-finish-all-jobs/discuss/1009817/one-branch-cutting-trick-to-solve-three-leetcode-questions
2. Identify the subcomponent of questions
[Simple Python Solution - Subproblem of LeetCode 321]
https://leetcode.com/problems/largest-merge-of-two-strings/discuss/1053678/simple-python-solution-subproblem-of-leetcode-321
3. Step by step optimization
https://leetcode.com/problems/count-ways-to-distribute-candies/discuss/975483/python-step-by-step-optimization
https://pastebin.ubuntu.com/p/zhBszdVGRv/ (For non-premium users)
Last year, I was luckily invited as one of the official solution writers for LeetCode, and I am very excited to share with you more thoughts and ideas in the future.
I hope we can all get our dream offers! Good luck and have fun!
Suggested Resources
CS61A: https://cs61a.org
CS61B: https://www2.eecs.berkeley.edu/Courses/CS61B/
MIT60001: https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-0001-introduction-to-computer-science-and-programming-in-python-fall-2016/
Reply to @msrashid1995: My rating went like this along the way (I have a different account for joining contests), because at first I wasn't good at it, and bad rating used to have a long-term impact (luckily, not any more).

A few extra tips:
In the beginning, it is important to work on questions by tag instead of in numerical order, as you can build up your understanding of each tag. You can also use LeetCode Explore cards (https://leetcode.com/explore/) to solve multiple related questions.
After you have finished 600+ questions, it will save you a lot of time if you choose to solve problems in the form of virtual contests. Without any limitation in time, people can easily get lost by spending hours in a single question or start reading Facebook/Twitter/WeChat, etc. Click the "Virtual" button in the contest page (https://leetcode.com/contest/) to start.
Another thing that I think would be very helpful, but did not end up doing, is to make a recording of yourself while typing solutions in a virtual contest. It turns out to be too stressful for me. Ideally, you can listen to your recordings and identify your problems. For example, did you explain your approach clearly? Did you walk through the logic of your solution clearly or just read out your code word by word loudly? Did you verbally go through a few test cases?
Sorry guys, I am too busy recently. Tons of things to do, so I won't post follow-ups on system design and machine learning.
Overall, I believe the key is to read and practice (talk out loud), think indepth and try to connect ideas together.
Good luck and have fun!