Try to solve these challenges before your next coding interview.

Image for post
Image for post
Photo by AltumCode on Unsplash

Recursion is a useful fundamental theory in computer science and mathematics. In mathematics, it appears in areas such as number sequences and functions. In computer science, it is helpful to solve problems by using the divide-and-conquer approach and dynamic programming. The divide-and-conquer approach decomposes a specific problem into smaller sub-tasks. After that, it solves each decomposed tasks to obtain the final solution. These smaller tasks can be either the same or overlapping. If a particular problem has overlapping sub-tasks, dynamic-programming helps us to reach the optimal solution.

Understanding the recursion theory and solving recursive problems could be difficult sometimes. Also, those problems could be easier for people who improved their analytical thinking skills. Hence, most interviewers frequently ask recursion-related problems during coding interviews to test the candidate’s analytical skills. …

Everyone complains they steal our data. Is it a big deal?

Image for post
Image for post
Photo by Glen Carrie on Unsplash

Whenever a giant tech company acquires another popular platform — or a particular platform updates its privacy policy, people start finding alternatives. Most of the people chose those alternatives based on the current trend rather than analyzing them in-depth. The recent activity regarding WhatsApp’s privacy policy amendment is very popular these days. Many people share a lot of posts about alternatives for WhatsApp: Telegram and Signal. Are you worried about these privacy-related myths than appreciating the quality of the existing popular apps?

Why they need your data?

Data is indeed fuel for modern machine learning algorithms. Machine learning algorithms on these social media platforms are doing two tasks: displaying advertisements based on the user’s behavior and saving the user’s time by automatically doing what the user expects to do. They can enhance the quality of these two tasks when they collect more data. …

Top-notch quotes of pioneer computer scientists in the world

Image for post
Image for post
Photo by Avi Richards on Unsplash

Experienced programmers often make impressive talks about technology and life. I found the following quotes that will make you curious and will change the way you think.

Linus Torvalds

Linus Torvalds initially created the Linux kernel and Git. The Linux kernel powers hundreds of Linux distributions, and it is also the core of the Android mobile operating system. Also, the Git version control system helps almost all software development teams to manage their source files.

If Microsoft ever does applications for Linux it means I’ve won.

His goal was indeed to make a better free operating system, which is better than all commercial ones. …

The facts that you need to realize to become an exceptional developer.

Image for post
Image for post
Photo by Pakata Goh on Unsplash

Programming and software are trending words in the world due to the digitization of things. Every field has a set of fundamental facts that helps everyone to understand reality. People find out these facts when they work in a particular field for a long time. For example, in civil engineering, engineers know that a newly built concrete structure will change its size with time. In their field, that’s an important fact, and they may use some techniques to overcome the side-effects of it.

Likewise, programming also has a lot of facts that every developer should understand. I stepped into the programming field about a decade ago. I experienced a lot of facts and myths in programming. …

Perhaps, you created hundreds of desktop apps. Have you ever thought about internals?

Image for post
Image for post
Photo by AltumCode on Unsplash.

Nowadays, desktop application development is simple. Earlier, we wrote a lot of codes for creating each standard GUI element such as buttons, checkboxes, radio buttons, list boxes, etc. Thereafter, we were able to make the graphical part of desktop applications without writing a single code line with the help of GUI design tools. Now, we can build more stylish desktop apps with hybrid application development frameworks by using web development skills.

Assume that you are developing a desktop application with a modern IDE like Visual Studio or Netbeans. Of course, we simply know that we are using some GUI libraries written with the specific language. For example, If you are using Visual Studio, you already know that there are underlying .NET-based GUI library modules. …

It’s simple with AWS Lambda, Angular, MongoDB, and Github Pages.

Image for post
Image for post
Photo by Fotis Fotopoulos on Unsplash

We all like to build and try new things to get some experience with the latest technologies. As developers who closely work with the web, we often make web applications with our innovative ideas. Most of the time, we do these kinds of things just for fun. After all, we would like to publish our work as an open-source project. Thereafter, we could show your awesome work to other developers and users. If our web app is having old-fashioned monolithic architecture with several PHP source files, there are thousands of free shared hosting services to publish our work. …

We are living in a great digital era, thanks to these innovations.

Image for post
Image for post
Photo by Malachi Brooks on Unsplash

Undoubtedly, we are living in a magnificent digital era. We have surprisingly powerful computers, full-featured programming languages, lightning-speed internet connections, and operating systems/software to do almost anything we want. Countless innovations in computer science made a path slowly for the current state of computer technology. Computer technology didn’t just enhance within a few years. It took around more than 7 decades to convert a room-sized computer to a modern general-purpose computer.

There are remarkable innovations that changed the future of the entire world’s history of computer technology. We will not be able to achieve the success of modern computer technology without the help of these major historical turning points. …

Do you think you are following the right approach?

Image for post
Image for post
Photo by Sigmund on Unsplash

In software engineering, we apply computer science knowledge to solve real-world business problems. Software development has a generic life-cycle known as the SDLC that helps stakeholders to plan the progress of their software products. Also, the steps of this generic life-cycle can be arranged into different structures. We identify these things as software development models. For example, agile, waterfall, incremental, and spiral are well-known models for software development. The agile approach is vastly used because it helps teams to manage their work more efficiently. Also, it helps teams to maintain good customer satisfaction.

We have to decompose each development goal into smaller tasks to get better manageability of our works. The software development goals mainly refer to releases that deliver a set of features to the users of an application or a service. The completion of each smaller task will make the success of your master goal. These smaller tasks require programming and it mainly has two different thinking strategies about the goal. …

Programmers solved many challenging engineering problems except these mysteries.

Image for post
Image for post
Photo by Karla Hernandez on Unsplash

The theoretical fundamentals of computer science are being used to solve various sorts of challenging real-world problems. Every technical solution has underlying computer science fundamentals. For example, the Git distributed version control system was built with the help of theories such as graph theory, data structures, and cryptography. Surprisingly, there are very challenging problems inside each theory too.

Most theoretical challenges have been solved already by great computer scientists. For example, quicksort and mergesort like algorithms were invented as more efficient sorting algorithms for quite larger lists. However, like any other field of study, computer science also has its mysteries. Many computer scientists tried to find solutions for these mysteries. …

Ask these analytical questions to hire the best out of the best.

Image for post
Image for post
Photo by Kaleidico on Unsplash

As a developer, you may conduct interviews with other developers who are willing to join your company. Frequently asked software engineering questions can be categorized into several categories such as domain knowledge, data structures, algorithms, critical thinking, technical experience, etc. Undoubtedly, any developer could grasp technical experience and domain knowledge easily. But all developers won’t become experts in topics such as data structures, algorithms, and critical thinking. Therefore, many interviewers who are hiring developers test these areas more if they need to hire the best out of the best. …


Shalitha Suranga

Software Engineer at 99x | Apache PMC member | Open Source Contributor (Author of Neutralinojs) | Technical Writer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store