[0:00] Today I'm going to explain to you how I [0:01] mastered data structures and algorithms [0:03] quickly without hating my life. Now I [0:06] say that because a lot of people that [0:07] get into this topic do it completely [0:10] wrong. It takes up a massive amount of [0:12] time and they just hate doing it. It's [0:14] brutal. And let's not lie, no one enjoys [0:16] data structures and algorithms. But [0:17] there's a way to do it that's a lot less [0:19] painful that I want to break down in [0:21] this video. Okay, so let's get right [0:23] into it. First things first, do yourself [0:25] a favor and pick an easy language to do [0:27] this in. Now, most people are going to [0:29] be learning this either because they're [0:31] in a computer science degree or because [0:33] they're preparing for technical coding [0:34] interviews. Now, I'm mostly speaking to [0:36] that latter group there, people that are [0:38] doing this because eventually they're [0:39] going to be quizzed on this type of [0:41] stuff and have to answer these le code [0:42] style problems. So, I highly recommend [0:45] use a language like Python when you're [0:47] learning this and when you're going to [0:49] be practicing these DSA style problems. [0:51] The reason for that is it's a much more [0:53] elegant language. It's way easier to [0:55] write code in it and it's much easier to [0:57] follow. So if you had to answer a [0:59] question in Java, for example, it's [1:00] going to take you just longer to write [1:02] the code due to the syntax style of [1:04] Java. Doesn't mean Java is a bad [1:06] language, but for the purpose of passing [1:08] coding interviews, you're just doing [1:10] yourself a favor if you pick a language [1:11] like Python. Okay? Even if you don't use [1:13] it or it's not your primary language, [1:15] it's very easy to learn enough of it to [1:17] be able to answer coding questions in [1:19] it. So I recommend that you pick [1:21] something like Python, maybe even [1:22] something like JavaScript. Anything that [1:24] has relatively simple syntax and dynamic [1:27] typing is going to help you a lot. Okay, [1:29] moving on. Step number two. Now, I [1:31] learned the theory quickly. A lot of [1:34] people spend months learning the theory [1:35] of data structures and algorithms. [1:37] That's not necessary. There's three main [1:39] things that you need to learn or kind of [1:40] three main topics. I'll quickly go over [1:42] them, but the point is don't spend too [1:44] much time here. You need to understand [1:45] the algorithms and data structures. Know [1:47] the time complexity of the operations, [1:49] but that's about it. You don't need to [1:50] implement these from scratch. Sure, if [1:52] you have extra time, it's a good idea, [1:54] but it's not necessary. You're not going [1:55] to be asked to write a heap, or at least [1:57] very unlikely that they'd ask you to do [1:59] that. It's more so understanding how to [2:00] use the data structures and what the [2:02] time complexity of the operations are. [2:04] So, what I did is I started by learning [2:06] bigo notation and time complexity [2:08] analysis. This is the most fundamental [2:10] thing. You need to understand this. Then [2:12] I started looking at data structures. So [2:14] I won't go through an entire exhaustive [2:16] list because there's a lot of resources [2:17] online that cover those better than this [2:19] video can. But things like stack, Q [2:21] linked list, trees, etc. I skipped the [2:24] super complex stuff. So things like B [2:26] trees, for example, red black trees, AVL [2:28] trees, tries, if you're going for more [2:31] senior positions, maybe you need to know [2:32] those, but in my case, for internship or [2:34] kind of entry level roles, you're just [2:36] probably not going to be quizzed on [2:38] those. Then I started looking at [2:39] algorithms. So obviously famous [2:41] algorithms, your sorting algorithms, [2:43] your searching algorithms and I didn't [2:45] implement all of these on my own. I just [2:47] understood what they were enough that if [2:49] I were asked a question about them, I [2:50] would know the time complexity or I [2:52] would know that they exist. I looked at [2:54] things like graph algorithms and then I [2:56] started looking at some more niche [2:58] algorithms that come up in coding [2:59] problems a lot. So things like dynamic [3:02] programming, greedy algorithms, things [3:04] like the two-pointer approach, the [3:06] sliding window, and again not memorizing [3:09] these, but just knowing that they exist [3:11] and having some basic theory [3:12] understanding so that when I start [3:14] getting into solving problems, I know [3:16] enough that I can at least reference [3:18] back to that topic and then learn it [3:20] more by applying it directly. Now, in [3:22] terms of how I learned these, I pretty [3:23] much just searched for a bunch of [3:25] resources online. I found a solid road [3:27] map that walked through a bunch of those [3:28] topics and then I followed it and I [3:30] looked up YouTube videos and used [3:32] websites like Geeks for Geeks. Now, [3:33] quick pause here because you'll probably [3:35] find this relevant. If you are a [3:36] software engineer right now or you are [3:38] looking to become a software engineer [3:40] and something like technical interview [3:41] prep is holding you back, then consider [3:43] applying for my program at Dev Launch. [3:45] In this program, we take on a very small [3:47] group of developers. Yes, it is [3:49] expensive. It's a high ticket program, [3:51] but it's designed to give people [3:52] one-on-one guidance to help them land [3:54] their next role. And we've already had a [3:56] lot of success. For example, we had a [3:58] senior software engineer come in really [3:59] struggling with this topic specifically. [4:02] We gave him the correct guidance, helped [4:03] him with all the mock technical [4:04] interviews, and he just landed 180K per [4:07] year role and is interviewing with Meta [4:09] right now where we expect him to receive [4:10] an offer because he's in the final [4:12] rounds. We have a lot of other examples [4:14] like that. But if you're serious about [4:15] this and you want someone to hold your [4:17] hand through this whole process, then [4:18] you can apply from Dev Launch down [4:20] below. We don't just do technical [4:22] interview prep, but obviously that's [4:23] relevant to this video. Okay, [4:24] continuing. Let's get into my prep when [4:27] it came to the questions. So, I saw so [4:29] many articles online of people saying [4:31] they did like 400 lead code questions or [4:33] 300 lead code questions or even 200. [4:36] That is insane to do that many [4:37] questions. First of all, that will take [4:39] you like four, five, six months unless [4:41] you're doing five a day or something [4:42] along those lines. And I want to tell [4:43] you for myself, I only did 60 lead code [4:47] questions and I did about 50 algo expert [4:50] questions. Okay? So my process when I [4:52] was practicing these questions first of [4:54] all was to always emphasize quality over [4:57] quantity. Now yes you do need to put in [4:59] sufficient volume. I think getting to [5:01] about 75 to 100 questions for most [5:03] people should be enough if they're [5:05] practicing correctly and picking the [5:06] right questions. But for me I started [5:08] with a platform like Algo Expert. Now [5:10] this is before I worked for Algo Expert [5:12] in case you guys think this is like a [5:13] sponsor. I don't actually make any money [5:15] if you buy that uh platform so I don't [5:17] care if you use it. But for me, I liked [5:19] that platform because it had really [5:21] in-depth video explanations of all of [5:24] the questions. Now, I think Lead Code [5:25] may have those now as well. It's been a [5:27] while since I did this. But for me, when [5:29] I was starting out, I really struggled [5:31] with these questions. Like, I could [5:32] hardly answer some of the easy [5:33] questions. So what I would do is I would [5:35] struggle at a question, but when I [5:36] wasn't getting anywhere at all and I had [5:38] put in the time and I had struggled, I [5:40] would go and I would watch through the [5:41] video explanation and really make sure [5:43] that I understood it and then reattempt [5:45] the question right after to see if I [5:47] could actually do it on my own. So [5:49] that's how I started getting good really [5:50] fast was failing essentially watching [5:53] the solution and then not just moving on [5:55] to the next question, but doing it again [5:57] after watching the solution. And then I [5:59] might even revisit it another time, [6:00] maybe the next day to make sure that I [6:02] actually comprehended it. So even though [6:04] I only did maybe 50 questions, I would [6:06] do the same question multiple times [6:08] until I actually got it correct. Okay, [6:10] so that was where I started with Algo [6:12] Expert, right? But they only have maybe [6:14] 150, 200 questions on the platform and [6:16] by the time you get through 50 or 60, [6:18] you've done a lot of the easy medium [6:20] ones, which is what I was targeting for [6:22] kind of the internship level roles. So [6:24] after that, I switched over to leak [6:26] code. Now, leak code is a lot more [6:28] challenging in my opinion because you [6:29] don't have the same level of guidance or [6:31] the same kind of quality of video [6:32] explanations, but it's good when you [6:34] want to put in more volume. So, then I [6:36] switched over to leak code and again, [6:38] same thing. I would do the questions. I [6:40] would try to check the answers, but it [6:42] wasn't always as good as Algo Expert. [6:43] And that's when I put in more volume. [6:45] Now, I was typically doing about two [6:46] questions per day when I was preparing. [6:49] And again, I was making sure that when I [6:51] did these questions, I was emphasizing [6:52] quality, which I'm going to move on to [6:54] next. Okay. So, while I was doing these [6:56] questions and especially in those last [6:58] leak code questions, I made sure that I [7:01] was practicing like I play, which I [7:03] think is the number one mistake that [7:04] people make when they do these types of [7:06] problems. You can do as many problems as [7:08] you want, but if you don't emulate a [7:10] real coding interview, you're not going [7:12] to succeed when you're just thrown into [7:13] that environment. Now, I did a lot of [7:15] research online. I knew people in the [7:17] space, so I knew I'm probably going to [7:18] have to write this out by hand. I'm [7:20] going to have to verbalize my solution, [7:22] and I'm going to have to walk through [7:23] this very strict framework that I [7:25] actually made a video about, which I'll [7:26] put on screen right now. So, what I did [7:28] is when I answered these questions, I [7:30] literally bought a whiteboard, put it in [7:32] my room, set up my camera, and recorded [7:34] myself pretending I was in an interview [7:36] environment. So, I would solve the [7:38] question actually on the whiteboard. I [7:40] would speak the entire time. I would [7:42] time myself. And while I couldn't do as [7:44] many questions when I did this, I really [7:46] got comfortable in this environment [7:48] where when I actually went into the real [7:49] interview, it was the exact same thing [7:51] that I've been practicing countless [7:52] times. So, in my room alone like a crazy [7:55] person, I would do that and I would [7:56] highly recommend you do that because [7:58] it's going to expose to you really [7:59] quickly the other parts of the coding [8:01] interview that most people end up [8:03] failing, right? That are related to the [8:04] communication. All right. Now, after I [8:06] did a bunch of reps sitting in my room [8:07] like a crazy person answering questions, [8:09] I decided I should do some real mock [8:11] interviews. So what I did is I reached [8:13] out to people that I knew. For example, [8:15] Clement, you guys might know him from [8:16] Algo Expert. We did a mock interview on [8:18] YouTube actually with him and I did a [8:20] bunch of interviews using a platform [8:22] called Prampt. Now I'm not sure if that [8:24] platform is still around. This was a [8:25] while ago, but essentially you could go [8:27] on and you can volunteer and you ask [8:29] someone a question and then they ask you [8:30] a question and you're kind of both, you [8:32] know, acting as the interviewer and the [8:33] candidate. So I did a bunch of those. I [8:35] probably did 15 mock interviews just to [8:37] make sure again I was really really [8:39] comfortable and I was not just worrying [8:41] about memorizing all of these algorithms [8:42] but actually how I presented them and [8:44] how I spoke through the problem which is [8:46] where I see most people failing. So just [8:48] make sure you do as many interviews as [8:50] you can. I even had some of my friends [8:51] who are non-technical ask me a question [8:53] that I had prepared for them to ask me [8:55] that I didn't know the answer to and [8:56] then I ran through it and I kind of got [8:58] their opinion as a non-technical person [9:00] on how well they thought I did. Okay, so [9:02] those are the main things I did to [9:03] prepare. The last point that I want to [9:05] put on here, which is the reason I [9:06] believe I succeeded in all of the [9:08] interviews that I did, because I didn't [9:09] fail any of them, is that I had [9:11] confidence when I walked into the [9:13] interview. Now, the reason I was [9:15] confident was because I knew no matter [9:17] what happened, I had done as much as I [9:19] possibly could to prepare. I put in the [9:21] time. I studied correctly. I did this [9:24] properly, right? I was putting in [9:25] quality. I wasn't just kind of wasting [9:26] my practice. And I knew that even if I [9:29] failed this interview, there's nothing [9:30] more that I could have done. I prepared [9:32] as best as I could. If you have that in [9:35] the back of your mind and you know no [9:36] matter what happens, it's honestly not [9:38] your fault. You've done the preparation, [9:40] you've done what you can and the result [9:42] will be what it will be, then I think [9:44] you just have some underlying confidence [9:45] and kind of the way you present [9:47] yourself, the calmness you have wears [9:49] off in the interview. And at least for [9:50] me, that's what I felt happened. And I [9:52] knew doesn't matter if I fail, whatever. [9:54] It's all good. I move on to the next one [9:55] because I prepared as much as I can and [9:57] there's just nothing more I can do. So, [9:59] I challenge you, get to that point [10:01] before you walk into some of your [10:03] interviews and just know in the back of [10:04] your mind, you've done everything you [10:06] can. And if if you fail, you fail. Is [10:08] what it is. You move on to the next one, [10:09] right? There's nothing to be worried [10:10] about. You did everything that was [10:12] possible. Okay, that's all I have for [10:14] this video. Again, if you guys want [10:16] assistance with this, this is exactly [10:17] what I do in Dev Launch. I literally [10:19] teamed up with someone who's an ex [10:20] Google, ex Amazon employee who's given [10:22] hundreds of these technical interviews, [10:24] who's really nailing the process for our [10:26] students in this program. If you want [10:27] help, apply from the link below and I [10:29] will see you guys in another video. [10:31] [Music]