3 ms·
I’d recommend trying the graded exercises in https://www.coursera.org/specializations/data-structures-algorithms https://www.coursera.org/specializations/data-s
by lstamour 7y ago
I’d recommend trying the graded exercises in https://www.coursera.org/specializations/data-structures-algorithms https://www.coursera.org/specializations/data-structures-alg... or https://www.edx.org/course/data-structures-an-active-learning-approach https://www.edx.org/course/data-structures-an-active-learnin... — unfortunately, for the most benefit (online automatic grading), you’ll have to pay either EdX or Coursera, but EdX offers a small sample of exercises to start, if I recall correctly. And there are a few more courses after those.
If you’re anything like me, you’ll learn better if someone doesn’t ask you to do the impossible, but instead leads you through enough solutions that you can get an immediate confidence boost from the first few easy ones, then the intermediate ones require more thought, and if you really get stuck, there are discussions about how to solve some of the problems. Usually you have to think algorithmically, not just write code, and some problems might just be harder for you to understand because you haven’t done as much work in that area. I won’t say it’s a complete look at algorithms—there’s a whole other course on strings if I recall, but it’s a good start.
Also, here’s my cheat to pass those employer questions — if they let you use JS, do EVERYTHING you can with ES6 Map and Set classes. Folks rarely look at the code and don’t care if you’re using for loops or advanced classes, but it’s way easier to use a Set than to worry about how many times you have to loop over some result to reduce duplication, or sort things, or what have you. If you need a unique sorted set, there are faster algorithms, but a simple (new Set(arr.sort())) gets the job done, because Set is insertion-ordered by default and any native JS function is generally faster than you writing your own code, so it’s impossible to mark this solution as wrong unless you exclude native functions (but who does that?). A bonus tip, if you need to figure out the difference between sets, just get creative with .filter and .map. There’s not much to memorize beyond that because there’s not much advanced functionality, just building blocks flexible enough to do anything, relatively expressively. https://exploringjs.com/impatient-js/ch_sets.html#missing-set-operations https://exploringjs.com/impatient-js/ch_sets.html#missing-se...
- lstamour 7y agoA follow up, if ES6 JS doesn’t come easy to you — pick a language you like best and look for its equivalents to Set, Map, .filter (or select) and .map (or collect). Bonus tip, look for .find or .first, to short circuit looping and stop at the first thing that matches. Yes, you can memorize for loops or why one thing is more efficient than another, but if you start with Set and Map where each makes sense, you’ll solve 80-90% of algorithm questions pretty easily and usually in a way that’s straightforward to read and understand later, especially if you start naming some of your functions to make them a bit easier to read. (Like naming selectors in Redux...) If writing SQL as part of a quiz, learn the different joins because usually the question is worded in a way where picking the correct join will deliver huge performance benefits by reducing how much data you’re going through or making things more efficient than looping through multiple subqueries. Left vs Inner vs Right vs Outer vs Cross... remember that the less data the server has to go through (the fewer records in the earliest sub query), the faster everything will run, in these quiz scenarios. Yes, in real life how you store data matters, what you index, but it’s rare you’ve any control over the index or schema in these tests.
- jpeg_hero 7y agoAgreed, but as OP was alluding to lots of people need solid business logic written that doesn’t have to hyperscale. Just lame that all the shovel-sharing apps interview as if they want to process petabytes of requests :)
- toop43 7y agoI'm taking the princeton algorithms 1 course now, and it is proving helpful. It has automatic online grading and is free. The only gripe I have is that at the end of the day, the litmus test for whether or not I'll pass an interview really is leetcode.com While the coursera course is great, and provides fundamentals I'm clearly lacking ... It's tangential to the actual solving of these riddles.