I've come to realise that trying not to understand something fully at first is a useful skill. I've often stumbled learning certain math concepts by trying to fully understand everything upfront - this is best done after having experience with using the math first.
It's useful if you're planning to interview at a place that cares about it, which includes Google, Amazon, and Microsoft. If you want to work at one of those places it's undeniably useful.
This may be a stupid question, but why is the ability to write pre-existing sorting algorithms from the top of your head necessary in those places? Don't they use standard libraries? Or is it just used as a general test of understanding of the concepts?
I think its a test for the candidates capability to grasp the concepts and coding those basic algorithms with out bugs is to demonstrate their ability for diligence.
I'd focus more on graphs and trees, and having a passing familiarity with the algorithmic and space trade offs of sort algorithms. One could argue over whether it's important philosophically, but from a practical standpoint they expect candidates to know it.
Thanks for the tip! Anki looks like really useful software. Do you put asymptotic complexity of various algorithms and data structures on the flash cards or do you do more than that?
I'm not interested neither in Competitive programming nor in companies who do these kind of interviews, so I can't really give you any advice here. Another advice - just skip over those places. There are tons of companies which don't do this SV-bubble whiteboard stuff.
This method of interviewing may not be perfect, but i think this is really a good way to filter the candidates out. Whats your ideal(or near to ideal) interview would be which can filter the candidates out.
It might be more or less suitable for fresh grads. But not for self-taught and especially not for mid-career professionals. The best interviews I had was concentrating on discussing previous projects and experience. Paid projects also could be a good way for some. A very simple fizzbuzz like task can be used as a first step for contacting - to eliminate CV flood.
Mapping the right algorithm to a real world need is lot more difficult as real world needs always have differences with the problems that the published algorithms solve. This is my experience. So, I end up most of the time devise my own method to solve things. When you are hard pressed for time, it is often difficult to run through books and find the right ones. The mind to read and understand complex algorithms is often overtaken by the mind to just go and solve the problem in hand in your own way.
i find these lectures difficult to watch, in the same way i found real lectures difficult to sit through
it is too raw
a 2 hour video for maybe 20 minutes of actionable content?
youtubers may be mocked for lacking credibility but at least they seek to develop a skill for editing their content
this(o) is the best source i've found on getting an understanding of the np-complete problem sphere
this in conjunction with karp's very digestible original paper(i) describing his process of reduction can help you develop a full understanding of hard problems
1. I study, fully understand topics, solve some problems.
2. Time passes, I don't really need most of this knowledge in my real world engineering.
3. I forget most of what I've learned.
I've iterated this several times, so I no longer have that motivation to (again) study algorithms without a real world need... :)