Junior System Administrator Interview Questions: Complete Guide

Milad Bonakdar
Author
Master essential system administration fundamentals with comprehensive interview questions covering Linux, Windows, Active Directory, troubleshooting, and core IT concepts for junior sysadmin roles.
Introduction
System Administrators are responsible for maintaining, configuring, and ensuring reliable operation of computer systems and servers. As a junior sysadmin, you'll need foundational knowledge of Linux, Windows, networking, and troubleshooting to support IT infrastructure.
This guide covers essential interview questions for junior system administrators, focusing on practical skills and core concepts.
Linux Fundamentals
1. What are the most common Linux commands you use daily?
Answer: Essential commands for system administration:
# File and Directory Management
ls -la # List files with details
cd /path # Change directory
pwd # Print working directory
mkdir folder # Create directory
rm -rf folder # Remove directory
cp source dest # Copy files
mv old new # Move/rename files
# File Viewing and Editing
cat file.txt # View file contents
less file.txt # View file with pagination
tail -f /var/log/syslog # Follow log file
vi/nano file.txt # Edit files
# Permissions
chmod 755 file # Change permissions
chown user:group file # Change ownership
ls -l # View permissions
# Process Management
ps aux # List all processes
top/htop # Monitor processes
kill PID # Terminate process
systemctl status service # Check service status
# System Information
df -h # Disk usage
free -h # Memory usage
uptime # System uptime
uname -a # System informationRarity: Very Common
Difficulty: Easy
2. How do you troubleshoot a Linux server that's running slowly?
Answer: Systematic approach to performance issues:
1. Check CPU Usage:
top
# Look for processes using high CPU
# Press 'P' to sort by CPU usage
# Or use htop for better visualization
htop2. Check Memory:
free -h
# Check if swap is being used heavily
# Find memory-hungry processes
ps aux --sort=-%mem | head -103. Check Disk I/O:
iostat -x 1
# Look for high %util
# Check disk space
df -h
# Find large files
du -sh /* | sort -rh | head -104. Check Network:
netstat -tuln # Active connections
ss -s # Socket statistics5. Review Logs:
tail -f /var/log/syslog
journalctl -xe # Systemd logs
dmesg | tail # Kernel messagesRarity: Very Common
Difficulty: Medium
3. How do you schedule automated tasks using cron?
Answer: Cron is a time-based job scheduler in Unix-like systems.
Cron Syntax:
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday=0)
│ │ │ │ │
* * * * * command to execute
Common Examples:
# Edit crontab
crontab -e
# Run backup every day at 2 AM
0 2 * * * /home/user/backup.sh
# Run script every Monday at 9 AM
0 9 * * 1 /home/user/weekly-report.sh
# Run every 15 minutes
*/15 * * * * /home/user/check-status.sh
# Run on first day of every month
0 0 1 * * /home/user/monthly-cleanup.sh
# Run every weekday at 6 PM
0 18 * * 1-5 /home/user/end-of-day.sh
# List current cron jobs
crontab -l
# Remove all cron jobs
crontab -rSpecial Strings:
@reboot # Run once at startup
@daily # Run once a day (0 0 * * *)
@hourly # Run once an hour (0 * * * *)
@weekly # Run once a week (0 0 * * 0)
@monthly # Run once a month (0 0 1 * *)
# Example
@daily /home/user/daily-backup.shCron Job Logging:
# Redirect output to log file
0 2 * * * /home/user/backup.sh >> /var/log/backup.log 2>&1
# Send email on errors only
0 2 * * * /home/user/backup.sh 2>&1 | mail -s "Backup Failed" admin@company.comWindows Task Scheduler:
# Create scheduled task
$action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\backup.ps1"
$trigger = New-ScheduledTaskTrigger -Daily -At 2am
Register-ScheduledTask -TaskName "Daily Backup" -Action $action -Trigger $trigger
# List scheduled tasks
Get-ScheduledTask
# Run task immediately
Start-ScheduledTask -TaskName "Daily Backup"
# Disable task
Disable-ScheduledTask -TaskName "Daily Backup"Best Practices:
- Use absolute paths in scripts
- Set PATH variable in crontab
- Test scripts manually first
- Log output for debugging
- Use locking to prevent overlapping runs
Rarity: Very Common
Difficulty: Easy-Medium
Windows & Active Directory
3. What is Active Directory and what are its main components?
Answer: Active Directory (AD) is Microsoft's directory service for Windows networks.
Main Components:
Key Concepts:
- Domain: Administrative boundary
- Domain Controller (DC): Server hosting AD
- Organizational Units (OUs): Containers for objects
- Users/Groups: Identity management
- Group Policy: Centralized configuration
Common Tasks:
# Create user
New-ADUser -Name "John Doe" -SamAccountName jdoe -UserPrincipalName jdoe@domain.com
# Add user to group
Add-ADGroupMember -Identity "IT Staff" -Members jdoe
# Reset password
Set-ADAccountPassword -Identity jdoe -Reset
# Find locked accounts
Search-ADAccount -LockedOut
# List domain controllers
Get-ADDomainController -Filter *Rarity: Very Common
Difficulty: Easy-Medium
5. How do you create and manage user accounts in Linux and Windows?
Answer: User management is a core sysadmin responsibility.
Linux User Management:
# Create user
sudo useradd -m -s /bin/bash john
# -m: create home directory
# -s: set shell
# Set password
sudo passwd john
# Create user with specific UID and groups
sudo useradd -m -u 1500 -G sudo,developers john
# Modify existing user
sudo usermod -aG docker john # Add to group
sudo usermod -s /bin/zsh john # Change shell
sudo usermod -L john # Lock account
sudo usermod -U john # Unlock account
# Delete user
sudo userdel john # Keep home directory
sudo userdel -r john # Remove home directory
# View user info
id john
finger john
cat /etc/passwd | grep johnGroup Management:
# Create group
sudo groupadd developers
# Add user to group
sudo usermod -aG developers john
# Remove user from group
sudo gpasswd -d john developers
# Delete group
sudo groupdel developers
# List user's groups
groups johnFile Permissions:
# Change ownership
sudo chown john:developers /var/www/project
sudo chown -R john:developers /var/www/project # Recursive
# Change permissions
chmod 755 script.sh # rwxr-xr-x
chmod u+x script.sh # Add execute for user
chmod g-w file.txt # Remove write for group
chmod o-r file.txt # Remove read for others
# Special permissions
chmod 4755 file # SUID
chmod 2755 dir # SGID
chmod 1777 /tmp # Sticky bitWindows User Management:
# Create local user
New-LocalUser -Name "John" -Password (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force)
# Create AD user
New-ADUser -Name "John Doe" `
-GivenName "John" `
-Surname "Doe" `
-SamAccountName "jdoe" `
-UserPrincipalName "jdoe@company.com" `
-Path "OU=Users,DC=company,DC=com" `
-AccountPassword (ConvertTo-SecureString "P@ssw0rd" -AsPlainText -Force) `
-Enabled $true
# Add to group
Add-ADGroupMember -Identity "IT Staff" -Members jdoe
# Modify user
Set-ADUser -Identity jdoe -Department "IT" -Title "System Administrator"
# Disable account
Disable-ADAccount -Identity jdoe
# Reset password
Set-ADAccountPassword -Identity jdoe -Reset -NewPassword (ConvertTo-SecureString "NewP@ss" -AsPlainText -Force)
# Remove user
Remove-ADUser -Identity jdoeBulk User Creation:
#!/bin/bash
# Create multiple users from file
while IFS=, read -r username fullname; do
sudo useradd -m -c "$fullname" "$username"
echo "$username:TempPass123" | sudo chpasswd
sudo chage -d 0 "$username" # Force password change
echo "Created user: $username"
done < users.csvRarity: Very Common
Difficulty: Easy
Networking Basics
6. Explain DNS and DHCP.
Answer:
DNS (Domain Name System):
- Translates domain names to IP addresses
- Hierarchical system
- Uses port 53
DHCP (Dynamic Host Configuration Protocol):
- Automatically assigns IP addresses
- Provides subnet mask, gateway, DNS servers
- Uses ports 67 (server) and 68 (client)
DNS Troubleshooting:
# Test DNS resolution
nslookup google.com
# Query specific DNS server
dig @8.8.8.8 google.com
# Check DNS cache (Windows)
ipconfig /displaydns
ipconfig /flushdns
# Check DNS cache (Linux)
systemd-resolve --statistics
systemd-resolve --flush-cachesDHCP Troubleshooting:
# Release and renew IP (Windows)
ipconfig /release
ipconfig /renew
# Release and renew IP (Linux)
sudo dhclient -r
sudo dhclient
# Check DHCP lease
cat /var/lib/dhcp/dhclient.leasesRarity: Very Common
Difficulty: Easy-Medium
Backup & Security
7. What backup strategies would you implement?
Answer: 3-2-1 Backup Rule:
- 3 copies of data
- 2 different media types
- 1 copy offsite
Backup Types:
- Full: Complete copy (slow, large)
- Incremental: Changes since last backup (fast, small)
- Differential: Changes since last full backup (medium)
Example Backup Script:
#!/bin/bash
# Simple backup script
BACKUP_DIR="/backup"
SOURCE_DIR="/var/www"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="backup_$DATE.tar.gz"
# Create backup
tar -czf $BACKUP_DIR/$BACKUP_FILE $SOURCE_DIR
# Keep only last 7 days
find $BACKUP_DIR -name "backup_*.tar.gz" -mtime +7 -delete
# Upload to remote server (optional)
rsync -avz $BACKUP_DIR/$BACKUP_FILE user@backup-server:/backups/
echo "Backup completed: $BACKUP_FILE"Rarity: Common
Difficulty: Medium
8. How do you secure a server?
Answer: Multi-layered security approach:
1. Keep System Updated:
# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL
sudo yum update -y
# Windows
Install-WindowsUpdate -AcceptAll2. Configure Firewall:
# UFW (Ubuntu)
sudo ufw enable
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# firewalld (CentOS)
sudo firewall-cmd --permanent --add-service=ssh
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload3. Disable Root Login:
# Edit SSH config
sudo vi /etc/ssh/sshd_config
# Set:
PermitRootLogin no
PasswordAuthentication no # Use SSH keys
sudo systemctl restart sshd4. Monitor Logs:
# Install fail2ban
sudo apt install fail2ban
# Configure fail2ban
sudo vi /etc/fail2ban/jail.localRarity: Very Common
Difficulty: Medium
Troubleshooting
9. A user can't access a shared drive. How do you troubleshoot?
Answer: Systematic troubleshooting steps:
1. Verify the Problem:
- Can you reproduce the issue?
- Is it affecting one user or multiple?
2. Check Network Connectivity:
# Ping the file server
ping fileserver.domain.com
# Test SMB connectivity
telnet fileserver.domain.com 4453. Check Permissions:
# Windows: Check share permissions
Get-SmbShareAccess -Name "SharedFolder"
# Check NTFS permissions
Get-Acl "\\server\share" | Format-List4. Check User Account:
# Verify user is in correct group
Get-ADUser username -Properties MemberOf
# Check if account is locked
Get-ADUser username -Properties LockedOut5. Check Drive Mapping:
# Windows: List mapped drives
net use
# Remove and remap
net use Z: /delete
net use Z: \\server\share /persistent:yes6. Check Server:
- Is the file server running?
- Is the share still available?
- Check server logs
Rarity: Very Common
Difficulty: Easy-Medium
10. How do you manage and analyze system logs?
Answer: Log management is critical for troubleshooting and security.
Common Log Locations (Linux):
/var/log/syslog # System logs (Debian/Ubuntu)
/var/log/messages # System logs (RHEL/CentOS)
/var/log/auth.log # Authentication logs
/var/log/kern.log # Kernel logs
/var/log/apache2/ # Apache web server
/var/log/nginx/ # Nginx web server
/var/log/mysql/ # MySQL databaseViewing Logs:
# View entire log
cat /var/log/syslog
# View last 50 lines
tail -n 50 /var/log/syslog
# Follow log in real-time
tail -f /var/log/syslog
# View with pagination
less /var/log/syslog
# Search in logs
grep "error" /var/log/syslog
grep -i "failed" /var/log/auth.log # Case insensitiveSystemd Journal:
# View all logs
journalctl
# View logs for specific service
journalctl -u nginx
journalctl -u ssh
# Follow logs
journalctl -f
# View logs since boot
journalctl -b
# View logs for time range
journalctl --since "2024-01-01" --until "2024-01-02"
journalctl --since "1 hour ago"
# View by priority
journalctl -p err # Errors only
journalctl -p warning # Warnings and above
# Export to file
journalctl -u nginx --since today > nginx-logs.txtLog Rotation:
# Configure logrotate
sudo vi /etc/logrotate.d/myapp
# Example configuration
/var/log/myapp/*.log {
daily
rotate 7
compress
delaycompress
missingok
notifempty
create 0644 www-data www-data
sharedscripts
postrotate
systemctl reload myapp
endscript
}
# Test logrotate
sudo logrotate -d /etc/logrotate.d/myapp # Dry run
sudo logrotate -f /etc/logrotate.d/myapp # Force rotationWindows Event Viewer:
# View Application logs
Get-EventLog -LogName Application -Newest 50
# View System logs
Get-EventLog -LogName System -Newest 50
# Filter by error level
Get-EventLog -LogName System -EntryType Error -Newest 20
# Search for specific event
Get-EventLog -LogName Security | Where-Object {$_.EventID -eq 4625}
# Export logs
Get-EventLog -LogName Application | Export-Csv -Path C:\logs\app-logs.csvCentralized Logging:
# Install rsyslog client
sudo apt install rsyslog
# Configure remote logging
sudo vi /etc/rsyslog.conf
# Add: *.* @@log-server:514
sudo systemctl restart rsyslogLog Analysis Tools:
- grep/awk/sed: Command-line parsing
- GoAccess: Real-time web log analyzer
- ELK Stack: Elasticsearch, Logstash, Kibana
- Splunk: Enterprise log management
Rarity: Common
Difficulty: Easy-Medium
Conclusion
Preparing for a junior system administrator interview requires hands-on experience and understanding of core concepts. Focus on:
- Linux: Commands, file permissions, process management
- Windows: Active Directory, Group Policy, PowerShell basics
- Networking: DNS, DHCP, basic troubleshooting
- Security: Firewalls, updates, access control
- Troubleshooting: Systematic approach, log analysis
Practice in a lab environment and document your learning. Good luck!




