Beruflich Dokumente
Kultur Dokumente
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.
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.
main {
java {
srcDir 'src/model'
}
dependencies {
runtime files('libs/mnist-tools.jar', 'libs/gson-2.2.4.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 {
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.
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.