101.Should we create system software ( e.g Operating system ) in Java ?
No, Java runs on a virtual machine called JVM and hence doesn't embed well with
the underlying hardware. Though we can create a platform independent system
software but that would be really slow and that's what we would never need.
102.Which UML diagrams you usually use for design ?
Use Case Diagram, Component Diagram for High level Design and Class Diagram ,
Sequence Diagram for low level design.
103.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.
104.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 and Database
servers at the lower tier. We are using Oracle as Database, ESB ( Enterprise service
Bus ) for asynchronous communication and Rest Web Services.
105.Difference between Proxy and Adapter Deisgn Patterns ?
Adapter object has a different input than the real subject whereas 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.
106.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.
107.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.
108.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.
109.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.
110.What are standard architectural questions:-?
Characteristics of a good architect design/ Consideration for designing a good
application architecture
- Should address functional requirements
- Should address non functional requirements
- Should address cross cutting concerns
• Application Architecture layer - Key principles of Software Architecture
- Layered Architecture: A decomposition of services such that most
interactions occur only between neighboring layers.
- Enterprise Process-Centric: A business process manages the
interactions between multiple intra-enterprise applications, services, sub-processes and
users.
- Component-Based Architecture -Decomposes application design
into reusable functional or logical components that expose well-defined communication
interfaces.
- Service-Oriented Architecture (SOA) -applications that expose and
consume functionality as a service using contracts and messages.
• Non functional requirements of the application design- at-least highlight
important ones
- Scalability and capacity planning - considered for high user load
- High Availability - downtime and uptime of system
- Reliability and Usability -bug free system and easy to use
- Maintainability and Extensibility - quality code, standard
routines and upgradable, new releases
- Performance - Response, processing and tun around time of
application
• Cross cutting concerns of the application -some key concerns addressing
- Transaction processing
- Internationalization and localization which includes Language locale
- Information security -authentication and authorization
- Caching -local,server, network, database caching
- Logging
- Exception Management
• UML Diagram and tools- key diagrams used by technical team
- Diagram
- Class diagram
- Sequence diagram
- Deployment diagram
- Use case diagram
- Tools
- Rational Architect
- Argo UML (freebees)
- Visual Paradigm
- Star UML etcs
- Reverse Engineering and code generation
• J2EE Core Design Pattern -as per application layer
- Presentation Tier
- Intercepting Filter -intercepts incoming requests and
outgoing responses and applies a filter.
- Context Object-encapsulates state in a
protocol-independent way to be shared throughout your application
- Front Controller-a container to hold the common
processing logic that occurs within the presentation tier
- Application Controller -centralizes control, retrieval, and
invocation of view and command processing
- View Helper -encourages the separation of
formatting-related code from other business logic
- Composite View -suggests composing a View from
numerous atomic pieces
- Dispatcher View -defers business processing until view
processing has been performed.
- Service To Worker
- Business Tier
- Business Delegate -reduces coupling between remote
tiers and provides an entry point for accessing remote services in the business tier.
- Service Locator -encapsulates the implementation
mechanisms for looking up business service components.
- Session Facade -provides coarse-grained services to the
clients by hiding the complexities of the business service interactions.
- Application Service -centralizes and aggregates behavior
to provide a uniform service layer to the business tier services.
- Business Object -implements your conceptual domain
model using an object model.
- Composite Entity -implements a Business Object using
local entity beans and POJOs.
- Transfer Object -provides the best techniques and
strategies to exchange data across tiers
- T O Assembler -constructs a composite Transfer Object
from various sources
- Value List Handler -uses the GoF iterator pattern to
provide query execution and processing services.
- Integration Tier
- Data Access Object -enables loose coupling between the
business and resource tiers
- Service Activator -enables asynchronous processing in
your enterprise applications using JMS.
- Domain Store -provides a powerful mechanism to
implement transparent persistence for your object model.
- Web Service Broker -exposes and brokers one or more
services in your application to external clients as a web service using XML and standard
web protocols
• J2EE Application Design Pattern
- Creational Patterns
- Factory Pattern
- Abstract Factory Pattern
- Singleton Pattern
- Builder Pattern
- Prototype Pattern
- Structural Patterns
- Adapter Pattern
- Bridge Pattern
- Composite Pattern
- Decorator Pattern
- Facade Pattern
- Flyweight Pattern
- Proxy Pattern
- Behavioral Patterns
- Chain of Responsibility Pattern
- Command Pattern
- Interpreter Pattern
- Iterator Pattern
- Mediator Pattern
- Momento Pattern
- Observer Pattern
- State Pattern
- Strategy Pattern
- Template Pattern
- Visitor Pattern
• J2EE Application Development Framework
- Spring 3.0
- Jakarta Struts 2.0 -Servlet life cycle
- EJB 3.0
- JSF
- JPA -Hibernate/ibatis
- AJAX
- GWT
- JSON
- FLEX -actionscript
• J2EE Application Server - deployment and administration
- Apache Tomcat
- Websphere Application Server
- JBOSS
- WebLogic
• Database Systems - SQL- complex queries -PL/SQL
- Oracle 9i/10g/11g
- SQL Server 2000/2005/2008
- MySQL 5.5
• Application build management
- ANT - Build tools -build.xml/properties MAVEN -pom.xml
- HUDSON - continuous integration build server
• Source Version controls - resolving conflict, branching,tagging
- SVN
- CVS
- VSS
- GIT
• SOA -implementation and approach
- Webservices -AXIS 2 framework, webservice annotation RPC
style and Restful services
• JMS - MQ - MDB
- Point-to-Point (Queue destination): In this model, a message is
delivered from a producer to one consumer.
- Publish/Subscribe (Topic destination): In this model, a message is
delivered from a producer to any number of consumers.
111.What is the difference between optimistic lock and pessimistic lock?
Optimistic lock is an implicit lock that tries to make best assumption about locking
strategy and minimize time spent in lock of resource. Optimistic lock is usually
implemented with some kind of timestamp strategy. Pessimistic lock is an explicit lock
that set by client.
112.What modeling tools you are familiar with? What version of TogetherJ
(Rational Rose etc.) have you used?
Just explain the modeling tools which you have userd.
113.If stateless session bean more scalable than stateful session beans?
This is very popular questions that leads to some confusion. According to the second
edition of "Core J2EE Patterns" and contrary to popular belief, stateful session beans
are not less scalable than stateless session bean. The reason for that is life cycle of
either type is controlled by Application Server and control of life cycle is what defines
the scalability of the application
114.What's the difference between EJB 1.1 and EJB 2.0?
There are many differences. Some key points you want to mention are:
1. New CMP model
2. EJB Query Language
3. Local interfaces
4. EJBHome methods
5. Message Driven Beans (MDB) support
115.What distinguishes "good architecture" from "bad architecture"?
This is an open-ended question. There are few aspects of "good" architecture:
1. Shall address functional product requirements
2. Shall address non-functional product requirements, such as performance,
scalability, reliability, fault tolerance, availability, maintainability, extensibility
3. Shall be simple and comprehendible (to support maintainability and
extensibility)
4. Shall be well structured (support multiple tiers, parallel development etc.)
5. Shall be detailed enough to share with different levels of organizational
structure (marketing, sales, development, management)
"Bad" architecture is basically opposite to "good" architecture.
116.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.
117.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
- Scaling Up
This involves adding more resources to the existing nodes. For example, adding more
RAM, Storage or processing power.
- Scaling Out
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.
118.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.
- App Server Cluster
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.
- Database Server Cluster
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.
119.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.
120.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.
|