You are on page 1of 9

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.
 
 
Check Out Build and Release Engineer Tutorials
 
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
16) 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.
What are your strengths?
While this question is an invitation to do some chest pounding, remember to illustrate
strengths that will benefit the employer and are relative to the position. For example:
 being a problem solver
 being a motivator
 being a natural leader
 the ability to perform under pressure
 a positive attitude
 loyalty
Are typically all solid strengths, but again, consider the position. For example, mentioning
you are an excellent “team player” in a job where you largely work alone suddenly becomes
irrelevant to the employer and demonstrates a genuine lack of self awareness.

Beyond this, present your strengths with confidence – this is not the time to be modest.

9. What are your weaknesses?


Another tricky one. The purpose of this question is to see how you view and evaluate
yourself.

One the one hand, if you suggest you don’t have any weaknesses, your interviewer will
almost certainly see you as a lair, egotistical, or both.
Don’t fall into the trap of trying to present a positive skill in disguise as a weakness, like “I
work too hard” or “I am a perfectionist”. Any experienced interviewer will see through this in
a heartbeat.

Additionally, revealing that “I’m not really a morning person and have been known to come
in late” raises immediate and obvious red flags.

The trick here is to respond realistically by mentioning a small, work related weakness
and what you are doing or have done to overcome it.
10. What do you see yourself doing in five years?
This one is all about job commitment.

Some people make job hopping a career in of itself, and your answer here can be telling.
Here, your interviewer is determining if you are:
 someone who sets goals
 someone who has a vision
 someone who is reliable
 someone who demonstrates commitment
 someone who is loyal
While no interviewer expects someone to stay at a company forever, try and craft your
response in such a way that shows progression in your career, and alignment with the
Company’s needs and future. Again, self awareness is key – your employer doesn’t want to
send you down an unwanted path, resulting in wasted time and energy for everyone.

1. Please tell us something about your previous working experience


2. What do you want to accomplish as a Release Manager in our company?
3. You probably know our core application/program ABC. How often do you think we should
release a new update?
4. How would you ensure continuous integration and flow of development, testing, deployment,
and support?
5. How would you ensure that your team members are motivated, and respect your leadership?
6. Where do you see yourself in five years from now?
7. Describe a situation when you were under pressure in work.
8. Describe a conflict you had with your colleague.
9. Describe a situation when you went above and beyond with your service for a client or for your
colleague.
10. Describe a situation when you reached a goal.
11. Describe a time when you struggled with motivation in job (it was repetitive, you did not enjoy
your duties, there was no work to do, etc). How did you overcome the crisis?
12. Describe a time when you struggled to communicate something to your boss, colleague, or to a
customer. How did you manage to get your message over?
13. Describe a difficult decision you had to make in your professional career. How did making this
decision affect you?
14. Describe a time when you experienced a conflict of your personal and professional interests.
How did you get over it?
15. Describe the biggest failure of your professional career.

You might also like