Blog

Build And Release Engineer Interview Questions And Answers

  • (4.0)
  • | 915 Ratings |
  • Last Updated February 24, 2018

Build and Release Engineer Interview Questions

Build And Release Engineer Interview Questions And Answers 2018. Here Mindmajix presenting 15 Software Configuration Management (SCM) interview questions. These build engineer questions were asked in various companies and prepared by experts. This list will help you to crack your next SCM job interview. Learn Now!
 

Build And Release Engineer Interview Questions

  1. What do you know about Software Configuration Management?
  2. What are the goals of SCM? Why do we use Software Configuration Management?
  3. Why do we need Software Configuration Management?
  4. What are the advantages of Software Configuration Management?
  5. What is Continuous Integration?
  6. What are the configuration management tools?
  7. What are different version control tools?
  8. What are different continuous tools?
  9. What is meant by build automation?
  10. What are the different build automation tools?

 

Are you interested in taking up for Build & Release Engineer Training? Enroll for Free Demo on Build & Release Engineer Training!
 

 

Build And Release Engineer Interview Questions And Answers

 

1) What do you know about Software Configuration Management?

 
A) Software configuration management (SCM or S/W CM) is the task of tracking and controlling changes in the software, part of the larger cross-disciplinary field of configuration management. SCM practices include revision control and the establishment of baselines.
 
 
2) What are the goals of SCM? Why do we use Software Configuration Management?
 
A) We can achieve various goals using SCM, they are:
 
Configuration identification - Identifying configurations, configuration items and baselines.
Configuration control - Implementing a controlled change process. This is usually achieved by setting up a change control board whose primary function is to approve or reject all change requests that are sent against any baseline.
 
  • Configuration status accounting - Recording and reporting all the necessary information on the status of the development process.
  • Configuration auditing - Ensuring that configurations contain all their intended parts and are sound with respect to their specifying documents, including requirements, architectural specifications and user manuals.
  • Build management - Managing the process and tools used for builds.
  • Process management - Ensuring adherence to the organization's development process.
  • Environment management - Managing the software and hardware that host the system.
  • Teamwork - Facilitate team interactions related to the process.
  • Defect tracking - Making sure every defect has traceability back to the source.
 
 
3) Why do we need Software Configuration Management?
 
A) Configuration Management focuses on establishing and maintaining, the consistency of a system or product throughout its lifetime. CM is a collection of competencies, techniques, and tools whose purpose is to ensure the consistency of the system's requirements, functional attributes and physical properties
 
 
4) What are the advantages of Software Configuration Management?
 
A) The advantages of software configuration management (SCM) are:
 
  • It reduces redundant work
  • It effectively manages simultaneous updates
  • It avoids configuration related problems
  • It simplifies coordination between team members
  • It is helpful in tracking defects
 
 
5) What is Continuous Integration?
 
Continuous Integration (CI) is the process of automating the build and testing of code every time a team member commits changes to version control.
 
 
 
 
6) What are the configuration management tools?
 
A) There are various configuration management tools available in the market but the main CM tools are:
 
Chef - Chef is one of the most popular SCM tools. It is basically a framework for infrastructure development. It provides support and packages for framin one's infrastructure as code.
 
Puppet - Puppet was first introduced in 2005 as an open source configuration management tool. It is written in Ruby. This CM system allows defining the state of the IT infrastructure, and then automatically enforces the correct state.
 
CFEngine - CFEngine is one of the most popular open source and fully distributed CM systems and provides automated configuration compute resources. 
 
Ansible - Ansible is an open source platform for CM, orchestration and deployment of compute resources.
 
Juju - Juju is an open source configuration management and orchestration management tool. It enables applications to be deployed, integrated and scaled on various types of cloud platforms faster and more efficiently.
 
SaltStack - SaltStack is an open source multitasking CM and remote execution tool. It has a Python-based approach to represent infrastructure as a code philosophy. 
 
Vagrant - Vagrant is an open source CM tool for building and managing easy-to-configure, reproducible and portable virtual development environments.
 
Docker - Since launching back in 2013, this industry newbie has taken the DevOps and software development world by storm. The key to Docker's success is its lightweight containerization technology.
 
Rudder - Rudder is an open source CM tool for managing IT infrastructures. It is written in Scala and works on top of the CFEngine. 
 
 
7) What are different version control tools?
 
A) Version control tools are a great way to enable collaboration, maintain versions, and track changes across the team.
 
CVS, SVN, or Subversion, GIT, Mercurial and Bazaar.
 
 
8)  What are different continuous tools?
 
A) There are many Continuous Integration tools out there in the market you have to choose the best one as per your project requirements.
 
Jenkins is a cross-platform CI tool and it offers configuration both through GUI interface and console commands.
 
TeamCity is the mature CI server, coming from the labs of the JetBrains company.
 
Travis CI is one of the oldest hosted solutions out there and it has won the trust of many people.
 
Go is the newest Cruise Control incarnation from the ThoughtWorks company. 
 
Atlassian BAMBOO - Modern and fast cloud  CI tool integrated into Bitbucket.
 
GitLab CI is fully integrated with GitLab and it can easily hook projects using the GitLab API.
 
CircleCI Flexible cloud CI tool that offers parallelization up to 16x.
 
CODESHIP - Powerful hosted solution with docker support, flexible plans suited both for small teams and enterprises alike.
 
CODEFRESH - Easy to use tool with Docker containers at its core and very nice feature of launching the built Docker images to the hosted environment.
 

Build Engineer Interview Questions And Answers

 

9) What is meant by build automation?
 
A) Build automation is the process of automating the creation of a software build and the associated processes including: compiling computer source code into binary code, packaging binary code, and running automated tests.
 
 
10) What are the different build automation tools?
 
A) There are many Build tools available in the market they are: Maven, Hudson, Gradle, SBT, and Rake.
 
 
11) How Settings.xml different from pom.xml?
 
A) settings.xml is your user preferences. It lives in your main Maven directory (usually $HOME/.m2) and holds your own settings, like listings for non-public repositories, usernames, and other personalized configuration.
 
pom.xml is the control file for each Maven project or module. It tells Maven which dependencies the project needs, what processing to apply to build it, and how to package it when it's ready. The POM is part of the project itself, and so information that's necessary to build the project (such as listing which plug-ins to use when building) should go there.
 

Software Configuration Management Interview Questions

 

12) How do you incorporate SNAPSHOT version into Maven?
 
A) Incorporating SNAPSHOT versions into the specification
 
Resolution of dependency ranges should not resolve to a snapshot (development version) unless it is included as an explicit boundary. There is no need to compile against development code unless you are explicitly using a new feature, under which the snapshot will become the lower bound of your version specification. As releases are considered newer than the snapshot they belong to, they will be chosen over an old snapshot if found.
 
 
13) How to add local .jar file dependency to build.gradle file?
 
 Adding my local .jar file dependency to my build.gradle file:
 
apply plugin: 'java'
 
sourceSets {
    main {
        java {
            srcDir 'src/model'
        }
    }
}
 
dependencies {
    runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.jar')
    runtime fileTree(dir: 'libs', include: '*.jar')
 
But the problem is that when I run the command: gradle build on the command line I get the following error:
 
error: package com.google.gson does not exist
import com.google.gson.Gson;
 
 
A) If you really need to take that .jar from a local directory,
 
Add next to your module gradle (Not the app gradle file):
 
repositories {
   flatDir {
       dirs 'libs'
   }
}
 
 
dependencies {
   compile name: 'gson-2.2.4'
}
However, being a standard .jar in an actual maven repository, why don't you try this?
 
repositories {
   mavenCentral()
}
dependencies {
   compile 'com.google.code.gson:gson:2.2.4'
}
 
 
14) I want to package my project in a single executable JAR for distribution. How can I make Maven package all dependency JARs into my JAR?
 
A)
 
   
      maven-assembly-plugin
     
       
         
            fully.qualified.MainClass
         
       
       
          jar-with-dependencies
       
     
   
 
 
and you run it with
 
mvn clean compile assembly:single
Compile goal should be added before assembly:single or otherwise the code on your own project is not included.
 
See more details in comments.
 
Commonly this goal is tied to a build phase to execute automatically. This ensures the JAR is built when executing mvn install or performing a deployment/release.
 
 
  maven-assembly-plugin
 
   
     
        fully.qualified.MainClass
     
   
   
      jar-with-dependencies
   
 
 
   
      make-assembly
      package
     
        single
     
   
 
 
 
 
15) If you have java.io.InputStream object, how should you process that object and produce a String?
 
Suppose I have an InputStream that contains text data, and I want to convert this to a String. For example, so I can write the contents of the stream to a log file.
 
What is the easiest way to take the InputStream and convert it to a String?
 
public String convertStreamToString(InputStream is) { 
    // ???
}
 
 
A) A nice way to do this is using Apache commons IOUtils to copy the InputStream into a StringWriter... something like
 
StringWriter writer = new StringWriter();
IOUtils.copy(inputStream, writer, encoding);
String theString = writer.toString();
or even
 
// NB: does not close inputStream, you can use IOUtils.closeQuietly for that
String theString = IOUtils.toString(inputStream, encoding); 
Alternatively, you could use ByteArrayOutputStream if you don't want to mix your Streams and Writers
 
 
15) Is there any way to make maven look for new versions of dependencies?
 
For example, i have commons-lang commons-lang 2.3, version 2.4 could be out, I dont know. i'd rather not check is manually(by writting 2.4 in this case), because i have many dependencies. I think i saw some trick to make maven use latest version.
 
A) I think i saw some trick to make maven use latest version.
 
Yes, there are special version numbers to handle this:
 
When you depend on a plugin or a dependency, you can use the a version value of LATEST or RELEASE. LATEST refers to the latest released or snapshot version of a particular artifact, the most recently deployed artifact in a particular repository. RELEASE refers to the last non-snapshot release in the repository.
 
 
Explore Build and Release Engineer Sample Resumes! Download & Edit, Get Noticed by Top Employers!Download Now!
 

Subscribe For Free Demo

Free Demo for Corporate & Online Trainings.