

They have tons of problems to help you with the recognition part as well. I can tell you that this site is quite useful. I'm currently prepping for an interview at one of the Big 4. The more types of inputs/outputs you can map between (muscular, visual, aural, etc.), the better. You can get pretty far in life by combining rapid memorization skills with the ability to rapidly develop pattern recognition for a new training set. The problem for most people isn't that they can't develop this pattern recognition skill, it's that they don't realize they need to (and instead focus on just learning how the algorithms work).Ī lot of the time when people say that you can't just "memorize" your way to passing a given test, they're just referring to situations where developing pattern recognition skills instead (or as well) will be more than sufficient.

Basic algorithms interview questions how to#
Just as you can learn pretty quickly how the algorithms work, you can also pretty quickly learn how to recognize which one to use for a given problem - it's basic pattern recognition. > You may learn pretty quickly how these algorithms work and implemented but it may take years of practice to earn ability to recognize them. You simply can't be a good developer without understanding these concepts (I'm not saying that it's the only thing you need). The moment you do something slightly more difficult or at a bigger scale, you are going to need this knowledge. If you feel that you don't need to know about algorithms and data structures, you probably do very mechanic and simple things like CRUD software. In reality, most of the tools we use everyday use all those algorithms and data structures. It's sad to see a general sentiment here on HN against algorithms and data structures. How is it that Google can give us the results of searching on trillions of webpages in just a fraction of a second? When you type `ls -R` in the console, what's happening? Why? How does that work? What are the tradeoffs of the the different kinds of indexes. You know that adding indexes to your database columns makes them faster. When you tell you StarCraft unit to move to a given point, how does the game engine know what path it should follow.Īre you using a Redis cache with an LRU eviction policy, how does that work? Why it's so fast? (hint: it's not only because it's written in C) When you make a click on your web browser, how does the browser know what element you clicked?
Basic algorithms interview questions software#
Here is another simple tip to improve your ability to recognize algorithms: Just look at the software you use every day and ask yourself how does it work. > This is why I'm trying hard to improve my problem solving skills by solving competitive programming problems almost everyday. I really wonder how often Google takes advantage, or even trusts their employees, to make such decisions or exercise such abilities, as opposed to a few superstar Googlers. I also have the suspicion that for companies such as Cloudflare, where there is justification to implement either novel or math-heavy strategies, these kinds of companies trust very few people to make the business and technical judgment call to pursue a strategy aside from simply using off-the-shelf solutions.īut a lot of people may be screened on these matters without the company ever intending to take advantage of the abilities they test for.

In terms of business, I question whether most companies have the financial justification to implement math heavy software strategies, or novel strategies.įor many businesses, I wonder if their software requirements are generally boring with many parts of their problem already solved and implemented in the form of a framework, with a few libraries waiting to be glued together. This is why I'm trying hard to improve my problem solving skills by solving competitive programming problems almost everyday. You can always find their implementation on the Internet after all. In practical non-interview problems, ability to recognize algorithms is much more important than knowing their implementation. It may take a while before you actually have a light-bulb/aha moment when you realize it's a graph problem. They may give you a problem which on surface have nothing to do with graphs. Google won't ask you directly to implement Dijkstra algorithm. You may learn pretty quickly how these algorithms work and implemented but it may take years of practice to earn ability to recognize them. The reason is simple but often overlooked by many people: the most important thing is not these algorithms themselves but ability to recognize them in problems. This is nice list and ability to implement these algorithms certainly won't hurt.īut I have to say that knowing these algorithms alone won't help you much during job interview with smart employer like Google.
