Home - coleman-word/DevOps-Guide GitHub Wiki

Software Delivery

What is Continuous Integration?

Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.

What CI tools have you used? Example: Travis-CI.

AWS Code-Deploy, Lambda CI, Rundeck, and my own custom tools built on Jupyter Notebooks.

What is Continuous Delivery and why is it important?

Continuous delivery is a DevOps software development practice where code changes are automatically built, tested, and prepared for a release to production. It expands upon continuous integration by deploying all code changes to a testing environment and/or a production environment after the build stage.

What is Continuous Deployment?

Continuous delivery is a DevOps software development practice where code changes are automatically built, tested, and prepared for a release to production. It expands upon continuous integration by deploying all code changes to a testing environment and/or a production environment after the build stage.

Explain the importance of A/B testing and how it relates to software delivery? o

Blue/green deployment involves two production environments:

Blue is the active environment. Green is for the release of a new version. Here are some of the advantages of a blue/green deployment:

You can perform testing on the green environment without disrupting the blue environment. Switching to the green environment involves no downtime. It only requires the redirecting of user traffic. Rolling back from the green environment to the blue environment in the event of a problem is easier because you can redirect traffic to the blue environment without having to rebuild it. You can incorporate the principle of infrastructure immutability by provisioning fresh instances when you need to make changes. In this way, you avoid configuration drift

What are your favorite deployment techniques and why? Examples include: 0 downtime, Canary, or Blue/Green.

Blue/Green is my favorite deployment type since, if performed correctly, it guarantees zero downtime deployments.

Explain a time when a software release has gone poorly

How can you reduce the time to test and Deploy code?

Source Control

What types of source control programs are you comfortable with?

I only have experience with Github.

What are the benefits of using source control?

Give an example of a good commit message?

Testing

Talk about different types of automated testing you have implemented?

What is the importance of software testing?

What testing paradigms do you use, if any?

Explain the difference between unit and end to end testing?

Have you used any testing frameworks? If so, which ones?

Architecture

Explain what a RESTful architecture is?

How would you scale a slow website?

Your application just got millions of users overnight, what do you do?

What are some ways to increase client-side performance?

Can you explain the significance of a primary/replica database architecture?

What are some caching strategies you can implement to increase performance?

What are the advantages and disadvantages of implementing a Microservices architecture?

What is the difference between vertical and horizontal scalability?

Database

What is the difference between a relational and non-relational database?

When do we optimize the database?

Can you give some ways to optimize the performance of a database?

What does A.C.I.D mean?

Explain how you would do Database Continuous Delivery?

Linux

How can you view running processes?

How do you check server uptime?

How do you start/stop services?

How do you display the shell’s environment variables?

What does #!/bin/bash at the top of a script do?

What does "&" after a command do?

What does piping commands mean?

What distributions have you used on servers?Why?

Security

What is the importance of SSL?

What is a SQL injection?

What is cross-site scripting (XSS)?

Why shouldn’t you roll your own crypto?

How are passwords stored on databases?

What is a Man-in-the-middle attack?

How do you safely manage environment variables in a cloud environment?

How do you manage security updates?

How do you keep encryption keys and credentials secure but make them available to machines that need them?

Cloud

Which cloud providers are you familiar with?

Amazon Web Services, Google Cloud Platform, and Microsoft Azure.

What are the benefits of using a cloud provider?

Have you managed production systems in the past?

Yes

Configuration Management

Which Configuration Management tools are you most comfortable with? Examples include: Chef, Salt, Puppet, or Ansible?

I use Ansible for configuration management.

Container

How does Docker improve scalability, distributed computing, and efficiency vs. virtual machines?

List some Docker use cases

Networking

What is the difference between a vlan and subnet?

What is a broadcast domain?

What is the difference between icmp, tcp and udp?

Explain how a tcp session is set up?

How are tcp options negotiated and selected?

How would you use tcpdump to determine if one remote host was making a connection to your server?

General

Which Software Stack do you use and why?

Describe your worst Fear?

What new technology would you like to learn?

Have you worked on any side projects?

Do you contribute to any open source projects?

Reference: http://scalarsoftware.com/devops-interview-questions/#software-delivery-questions