21.Which UML diagrams you usually use for design ?
UseCase Diagram. Component Diagram for High level Design.
Class Diagram.
Sequence Diagram for low level design.
22.How do you coordinate and communicate with the team developers ?
We as a team of developers , testers , analyst , lead and architect sit close to each other.
Most of the time I would just jump to their seat and talk to them ( if required ). We have daily
stand up where we discuss things that needs team attention.
23.What kind of software architecture your organization follow ?
We have multi tier architecture with multiple layers.
We have series of web servers and applications in application tier. infrastructure libraries at middle tier.
Database servers at the lower tier. We are using Oracle as Database, ESB ( Enterprise service Bus ) for asynchronous
communication and Rest Web Services.
24.Difference between Proxy and Adapter Design Patterns?
Adapter object has a different input than the real subject where as Proxy object has the
same input as the real subject. Proxy object is such that it should be placed as it is in place of
the real subject.
25.Difference between Adapter and Facade ?
The Difference between these patterns in only the intent.
Adapter is used because the objects in current form cannot communicate where as in Facade though the objects can
communicate A Facade object is placed between the client and subject to simplify the interface.
26.Difference between Builder and Composite ?
Builder is a creational Design Pattern whereas Composite is a structural design pattern.
Composite creates Parent-Child relations between your objects while Builder is used to create
group of objects of predefined types.
27.Difference between Factory and Strategy Design Pattern ?
Factory is a creational design pattern whereas Strategy is behavioral design pattern.
Factory revolves around the creation of object at runtime whereas Strategy or Policy revolves
around the decision at runtime.
28.Shall we use abstract classes or Interfaces in Policy / Strategy Design Pattern ?
Strategy deals only with decision making at runtime so Interfaces should be used.
You can check more: www.javatechnologycenter.com and click on java design pattern
29.What Do You Mean By High Availability?
Having better service capacity with high availability and low latency is mission critical for almost
all businesses.
Availability means the ability of the application user to access the system,If a user cannot
access the application, it is assumed unavailable. High Availability means the application will be
available, without interruption.
Achieving high availability for a application is not always a easy task. Using redundant server
nodes with clustering is a common way to achieve higher level of availability in web
applications.
Availability is commonly expressed as a percentage of uptime in a given year.
30.What Is Scalability?
Scalability is the ability of a system, network, or process to handle a growing amount of load by
adding more resources. The adding of resource can be done in two ways
This involves adding more resources to the existing nodes. For example, adding more RAM,
Storage or processing power.
This involves adding more nodes to support more users.
Any of the approaches can be used for scaling up/out a application, however the cost of adding
resources (per user) may change as the volume increases. If we add resources to the system It
should increase the ability of application to take more load in a proportional manner of added
resources.
An ideal application should be able to serve high level of load in less resources. However, in
practical, linearly scalable system may be the best option achievable.
Poorly designed applications may have really high cost on scaling up/out since it will require
more resources/user as the load increases.
31.What Is A Cluster?
A cluster is group of computer machines that can individually run a software. Clusters are
typically utilized to achieve high availability for a server software.
Clustering is used in many types of servers for high availability.
An app server cluster is group of machines that can run a application server that can be reliably
utilized with a minimum of down-time.
An database server cluster is group of machines that can run a database server that can be
reliably utilized with a minimum of down-time.
32.Why Do You Need Clustering?
Clustering is needed for achieving high availability for a server software. The main purpose of
clustering is to achieve 100% availability or a zero down time in service.
A typical server software can be running on one computer machine and it can serve as long as
there is no hardware failure or some other failure.
By creating a cluster of more than one machine, we can reduce the chances of our service going
un-available in case one of the machine fails.
Doing clustering does not always guarantee that service will be 100% available since there can
still be a chance that all the machine in a cluster fail at the same time. However it in not very
likely in case you have many machines and they are located at different location or supported
by their own resources.
33.What Is Middle Tier Clustering?
Middle tier clustering is just a cluster that is used for service the middle tier in a application.
This is popular since many clients may be using middle tier and a lot of heavy load may also be
served by middle tier that requires it be to highly available.
Failure of middle tier can cause multiple clients and systems to fail, therefore its one of the
approaches to do clustering at the middle tier of a application.
In java world, it is really common to have EJB server clusters that are used by many clients. In
general any application that has a business logic that can be shared across multiple client can
use a middle tier cluster for high availability.
34.What Is Load Balancing?
Load balancing is simple technique for distributing workloads across multiple machines or
clusters.
The most common and simple load balancing algorithm is Round Robin. In this type of load
balancing the request is divided in circular order ensuring all machines get equal number of
requests and no single machine is overloaded or underloaded.
The Purpose of load balancing is to
- Optimize resource usage (Avoid overload and under-load of any machines.)
- Achieve Maximum Throughput
- Minimize response time
Most common load balancing techniques in web based applications are
1. Round robin
2. Session affinity or sticky session
3. IP Address affinity
35.What Is Sticky Session (session Affinity) Load Balancing? What Do You Mean By 'session
Affinity'?
Sticky session or a session affinity technique another popular load balancing technique that
requires a user session to be always served by a allocated machine.
36.Why Sticky Session?
In a load balanced server application where user information is stored in session it will be
required to keep the session data available to all machines. This can be avoided by always
serving a particular user session request from one machine.
37.How It Is Done?
The machine is associated with a session as soon as the session is created. All the requests in a
particular session are always redirected to the associated machine. This ensures the user data is
only at one machine and load is also shared.
In Java world, this is typically done by using jsessionid cookie. The cookie is sent to the client for
the first request and every subsequent request by client must be containing that same cookie
to identify the session.
38.What Are The Issues With Sticky Session?
There are few issues that you may face with this approach
- The client browser may not support cookies, and your load balancer will not be able to
identify if a request belongs to a session. This may cause strange behavior for the users who use
no cookie based browsers.
- In case one of the machine fails or goes down, the user information (served by that
machine) will be lost and there will be no way to recover user session.
39.What Is IP Address Affinity Technique For Load Balancing?
IP address affinity is another popular way to do load balancing. In this approach, the client IP
address is associated with a server node. All requests from a client IP address are served by one
server node.
This approach can be really easy to implement since IP address is always available in a HTTP
request header and no additional settings need to be performed.
This type of load balancing can be useful if you clients are likely to have disabled cookies.
However there is a down side of this approach. If many of your users are behind a NATed IP
address then all of them will end up using the same server node. This may cause uneven load
on your server nodes.
NATed IP address is really common, in fact anytime you are browsing from a office network its
likely that you and all your coworkers are using same NATed IP address.
40.What Is Fail Over?
Fail over means switching to another machine when one of the machine fails.
Fail over is a important technique in achieving high availability. Typically a load balancer is
configured to fail over to another machine when the main machine fails.
To achieve least down time, most load balancer support a feature of heart beat check. This
ensures that target machine is responding. As soon as a hear beat signal fails, load balancer
stops sending request to that machine and redirects to other machines or cluster.
|