For many, Linux is merely the cute little penguin you see when searching for driver downloads or other software. But for seasoned developers and programmers, Linux is a powerful open-source operating system that covers a wide range of hardware – from your personal computer to your Android device, to supercomputers and mainframes.
But what makes Linux different from Windows or Apple? The most distinct difference is that Linux is built for developers, and was created to be the most flexible operating system when it comes to system changes. The OS is not made to be user friendly or to have an easy-to-understand interface. Instead, the development power is put into the hands of the user, which over the years has allowed Linux to grow because of its ability to foster community involvement.
If you’ve worked with Linux then you probably already know all of that. What you may not know is that, as a developer, it’s likely you will be expected to answer specific questions about the operating system or programming language used in the job you are applying for. Sometimes this means building the groundwork for an application in front of the person interviewing you, other times it means answering concise questions that were prepared prior to the interview. Regardless, it’s important that you are ready for the potential questions thrown your way.
Here are 10 Linux interview questions and answers (don’t worry; it starts getting technical here).
10. How do you locate kernal modules?
This question will show your familiarity with Linux in addition to the drivers and other software required for essential tasks. Kernal modules can be found in the /lib/modules/kernel-version/ directory. Additionally you can use the command ‘lsmod’ to bring up all installed kernal modules.
9. How do you check memory stats and CPU usage?
Knowing the memory statistics on a device is crucial during development. You can use ‘vmstat’ to see the virtual memory usage, or ‘free’ to see the free physical memory. Additionally, by using the command ‘sar,’ you can see the CPU usage and other useful statistics.
8. What is /etc/passwd and /etc/shadow and what information do they store?
/etc/passwd and /etc/shadow are used to store a user’s password and username information. /etc/shadow holds the encrypted user password and includes fields like username, password, last password change, minimum and maximum password change requirements, and expiration date.
7. What’s a UNIX Shell? Name one.
A UNIX Shell is a user interface that communicates with the underlying operating system. BASH is a very popular UNIX Shell.
6. What’s an INODE?
An inode is a file description that contains information like the file’s size, and permissions as well as access and modification logs. It also shows you where specific pieces of data exist that compile into the file.
5. How can you monitor the log file for a service that’s running?
By using the ‘tail -F $LOGFILE’ you can continuously monitor a log file of a service that is running. ‘tail’ gives you the last 10 log file lines where ‘-F’ will continuously update the log in real time and allows the file to grow.
4. How would you increase the size of an LVM partition by 5GB?
First you would use ‘lvextend -L +5G /dev/<Partition>’ then use ‘resize2fs /dev/<Partition>’ where “partition” is the directory of your partition. Finally you can use the command ‘df -h’ to double check the size of the partition.
3. Why do you love developing software?
Not every question you encounter will be highly technical. After all, the company looking to hire you isn’t looking for an automated compiling machine. While knowledge about how to navigate Linux is important, it’s also crucial that you have a clear vision for why you wanted to get into development in the first place. Did you see a need for a new piece of software to be created? Do people benefit from what you are creating? Does it save time and money?
2. What other programming languages are you familiar with?
At the heart of Linux is its free open-source kernal, which makes the OS so unique. The interviewer wants to know that you are open and discovering new languages as they are developed. This means having knowledge of other languages like Ruby on Rails or Apache Zookeeper.
1. Why should I hire you?
Being a developer doesn’t mean being a coding machine. You have to remember that on a development team, you’ll most likely be working with different people who approach challenges in different ways. Collaboration and the ability to communicate are also important tools to have when creating a cohesive vision for what you are developing. The way you solve problems and the methods, strategies, and tactics you use to do so are important for the interviewer.
In the end, if you have the appropriate knowledge then you won’t have a problem. Make sure you are practicing consistently so that you can answer the more technical questions thrown your way.