13 ms·
The Intuitive Guide to Data Structures and Algorithms
- gameguy43 9y agoThanks for the post! Original author here. Happy to answer questions.
- namanyayg 9y agoThis is something I've entered my email into after at least a year or so. Great presentation and design and I'm sure it's good content too -- I'll get to know over the coming week :)
- tenaciousDaniel 9y agoI really love this. Frustratingly few articles/posts/courses actually follow through on their promise to make difficult material intuitive. I'm only halfway through your Big-O post but it's already obvious that you've put a lot of care into really making it accessible. Well done!
- gameguy43 9y agoThat is soooo great to hear because every time we "finish" writing a new piece we end up spending literal /months/ obsessively polishing it before taking it live. I always worry that we're just spinning our wheels. But it's great to hear that the extra effort is showing through :)
- notjackson 9y agoI really liked how you've added the option to select between many programming languages in the snippets! Did you write each of them yourself or is there a way to automate such simple code already?
- gameguy43 9y agoWe have a team of like a dozen and a half contractors from around the world who do the translations. It was important to us to not just translate our Python into C++, but to have C++ that was actually good, C++-style C++. So we hired C++ experts to do all the C++ translations. And same for the other languages. Now, none of us are C++ experts. So how did we know if the contractors we hired were any good? That's a whoooole blog post for another time. In short: Noah (an engineer on the team) came up with this clever system where we hired a bunch of people to translate the same code sample (as a paid trial task), then we hired a bunch of people to rate those people's translations (again, as a paid trial task). Then we hired the translator who had the best ratings, and we also hired the /rater/ who was most /thorough/--they do code reviews of the translator's code.
- foota 9y agoCurious, how did you measure thorough-ness?
- gameguy43 9y agoDefinitely the least rigorous part of the process :) Some combination of: - Did they catch stuff that the other reviewers didn't catch? - Of the stuff they did catch, does it look to us like that's actually stuff that'll help make our code better, or is it just unhelpful pickiness?
- faitswulff 9y agoIs this actually a blog post? I'd read it.
- gameguy43 9y agoNot yet! Edit: but it'd make a good one, right?
- faitswulff 9y agoAbsolutely!
- xenihn 9y agoHappy customer since 2015. Any plans to add Go or Rust translations?
- gameguy43 9y agoNo specific plans yet. But notes like this are how we decide which languages to add next! Curious: what language do you currently use on the site? And how painful is it for you to not have Go or Rust? (Also, you're talking about having the /content/ in those languages, right? Or supporting those languages in our code editor?)
- xenihn 9y agoYep, I'm talking about the content. I use Swift and Objective-C, but I've consulted InterviewCake content for every other language except PHP at some point. The sample data structures and question answers are nice code samples when I need a quick reminder for how to do basic things in languages that I don't use on a regular basis. Not having Go or Rust isn't a big deal, if I could choose one it'd be Go. I want to learn Go for myself, and asking for a friend for Rust. I also never use the editor on the site, I write/run the code on my machine. I never liked using the editor the few times I tried it. I see in another comment you made in this thread that a new one is coming soon, so I'm excited to try it. Any chance I could beta test? :)
- gameguy43 9y agoShoot me an email :)
- vvanders 9y agoShoutout for including the bit about constants in O(n) notation, 99% of things I see cover it gloss over it. I've seen radix sort walk all over quicksort for common datasets many times. Knowing your dataset is at least as important as knowing the right algorithm.
- deleted 9y ago[deleted]
- gregable 9y agoThis is really beautiful. I love that the images are SVGs as well, makes perfect sense for these line drawings. Though it is a little bit of a bummer that all of them have embedded fonts, even those that don't use text.
- gameguy43 9y agoOh iiinteresting I guess we are doing that! Probably not too hard to fix. Thanks for pointing that out! They used to be just inline svgs (instead of img tags), but (at least a couple years ago) our research suggested using img tags was better for SEO and screen readers and even page load time. edit: (Of course, when they were just inline svgs, they got the fonts for free from the surrounding webpage). So far I'm thinking we'll just turn off the embedded fonts for images that don't have text. Definitely not expert on this stuff though--open to other advice!
- cbzehner 9y agoInterview cake is amazing. The way the problems are presented and the hints are given is often better than what you'll get in an actual interview setting. After using it myself, I could not recommend it any more highly.
- irl_zebra 9y agoSame here, actually helped me in real life a lot, worth the money. No affiliation with them. Their IDE sucks though.
- gameguy43 9y ago:) New one is on the way! It's taken a while, but it's getting close.
- irl_zebra 9y agoAre you "Parker" from the site?
- gameguy43 9y agoYep!
- irl_zebra 9y agoNice! Actually in all seriousness the site was pretty awesome and helpful. Six different companies are flying me out to SF in a few weeks for final interviews with them all. Can't say what percentage of that was due to your site and what was general study, but I found your questions intuitive and super helpful. For real, thanks!
- gameguy43 9y agoAwesome! Good luck with the onsites! When you get stuck, don't get worried or frustrated. Get excited about getting to play around with a hard problem.
- andrei_says_ 9y agoA small thing: the slide in subscription popover contains language which is dangerously close to the dark pattern of framing refusals as guilt/shame inducing. A simple no thanks would do. Because “they won’t remember what you did but hey will remember how you made them feel” and this made me feel “eww”.
- gameguy43 9y agoYeah, agreed. I'm thirsty for that install rate but more importantly I want us to be a force for good. Fixed in master. Not freaking pushing while we're sitting at #1 unless I have to tho :P Edit: Thanks for the note!
- andrei_says_ 9y agoYou’re very welcome.
- MattRix 9y agoAgree completely! It almost made me leave the site without looking at any of the content, it felt gross.
- partycoder 9y agoI think these styles of puzzles borrow a lot from competitive programming (e.g: ACM, IEEE). And while competitive programming requires skill, what you do most of the time is collaborative programming: create software that interoperates with other software, with a user, that is maintainable, etc. Software without these skills quickly becomes really expensive and hard to maintain.
- Veedrac 9y agoOne thing I find generally worth improving with these sorts of introductions is that they always seem to introduce data structures as a pick-and-mix bag of prebuilt parts, rather than a set of techniques which allow you to enforce properties which allow you to build objects that do what you want efficiently. Teaching the former is like teaching a physicist all the different kinds of gear systems, rather than the math that lets you model them. Knowing how binary heaps and hash maps work is great, because binary heaps and hash maps are very useful data structures, but knowing the fundamental reasons behind them in a way that composes to building new things is much more useful. What happens when you want properties that someone hasn't already built a data structure for, at least as far as you can find? (Pet example: ordered container with efficient append and the ability to query the maximum of any subslice length k in O(log k). Extension: what are the minimal assumptions you need to do better, eg. amortized O(1)?) I think this contributes to the attitude where programs are built out of monolithic, ill-fitting parts rather than actually looking at the problem and building the solution which does the right thing, the right way. (Pet example: if you designed websites as data structures and the browser to support doing so efficiently, 90% of requests on a site like Reddit would be a single `memcpy`.) What I would attempt is rather than saying "Here's one way we could do it: <explaination of pre-baked hash table>." talk about the underlying tool first "One tool that can help us is hashing: <explaination of general technique and why its properties are useful>. In this example we want <these properties> but can't immediately get it because our data has <these properties>. But we can apply hashing to get <technique that looks decent but has caveats>. Handling the caveats by doing <hash table things> gives us a data structure called a hash table." Yes, this is probably a harder way to handle things, but I'd like to think it'd be worth the trouble.
- chrisweekly 9y agoThat was a clearly-written, knowledgable, info-dense and effective bit of writing you just did, @Veedrac. Ever considered doing more of the same, and delivering the kind of educational material you just described?
- Veedrac 9y agoI was expecting a far more mixed reaction, so I'm glad to hear this engaged people. Writing educational material to takes more work (and expertise) than I'd be willing to guarantee, but I'll keep the sentiment in mind :).
- quickben 9y agoA beautiful, amazing, and informative set of knowledge. Sadly, an experience tarnished by the three, full page prompts for email subscription, right in the middle of the information flow.
- deleted 9y ago[deleted]
- neeleshs 9y agoThis looks good, but I prefer my copy of Algorithm Design Manual by Skiena.
- victorhooi 9y agoI was tempted to buy this - howevever, what turned me away was the subscription fee - it says: > No subscriptions to cancel—this is a 1-time charge. > Access lasts (3 months) 1 year. So sure - the fee may not automatically renew - but then you lose access to all the material after a year. Is there not simply a way to pay for the course, and own a copy?
- yawboakye 9y agoI've had the same concerns but I think--this is all my thoughts, no official sanction--Interview Cake started by catering to people who had interviews coming up, and so it didn't look like they will need more than a year's access. Neither would they need the material after they got the job. But I think @gameguy43 will see your comment and hopefully take it up with his team. I'd love to have eternal access, but then the 1-time charge might be bumped up too. Who knows?
- nixgeek 9y agoWhat kind of 'annual renewal' rate do you get at $199/yr? Is there a good reason not to just do $199 lifetime?
- hbk 9y agoTake it easy with that email stuff. You say "no spam" but its literally spammed all around the page.
- codingninja15 9y ago@gameguy43, this is great guide. What resources were most helpful when constructing this guide? Any specific books?