Companies looking to hire software engineers expect their candidates to have an understanding of the basics of computer science. Having gone through some interviews recently, I have had to polish up on some of the basics I had forgotten about.
The foundations of computer science are data structures, algorithms, system design and the basics of object oriented programming. Software engineers are expected to know enough of all this to be able use what is appropriate to solve a problem as efficiently as possible. Learning the concepts is easy, the tricky part is knowing how to use these concepts to solve a problem. These are tools that a software engineer would need through out their entire career.
Here is a platform I have used for a while now and I swear by it.
Leetcode
Since discovering leetcode, I have not used another platform since. It has problems of “easy”, “medium” and “hard” level of difficulty.
How to use
Leetcode have a very straightforward platform. With problems categorised in topics; Algorithms, Database, Shell and Concurrency and the level of difficulty; hard, medium and easy. And they can
You can find solutions to a problem under the “Solutions” tab. Various solutions from different people in different languages that will lead to the same desired result.
Performance of a solution
The performance of an algorithm provided by the problem solver is also measured. This way you’re able to know whether your algorithm was efficient or not, despite getting to the answer. Efficiency is measured in use of memory and speed.
Testcases
There are pre-set test cases, but the user is able to add more under the testcase section of the problem.
Conclusion
I very much like how Leetcode is structured. It has almost everything thought out on and it’s basically very easy to get through. I definitely would recommend it being used to any software engineer who is looking to practice their programming and problem solving skills.