Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Java_J2EE_Job_Interview_Companion

.pdf
Скачиваний:
17
Добавлен:
13.05.2015
Размер:
14.25 Mб
Скачать

220

Enterprise – Web and Application servers

Monitoring your application for performance problems, critical events, error condition statistics, etc. For example you can be notified if there is a sudden increase in traffic or sudden drop in performance of your website.

Making your application more controllable and configurable at runtime by directly exposing application API and parameters. For example you could switch your database connection to an alternate server. You can also change the level of debugging and logging within the application without stopping the server. You could write a poller, which polls your database at a regular interval as a JMX sevice, so that you can alter the polling interval, stop and start the poller through your server console without having to stop the server.

By interfacing JMX to your hardware, database server and application server, health checks can be performed of your infrastructure.

Q 122: Explain some of the portability issues between different application servers? SI

A 122: Transaction isolation levels, lazy loading and dirty marker strategies for EJB, class loading visibility etc.

If your job specification requires a basic understanding of Portals, Portlets etc or keen to learn the basics then read the following questions and answers.

Q. What is a portal?

A portal is a Web site or service that offers broad range of resources and services like e-mail, forums, search engines, on-line shopping, news, weather information, stock quotes, etc. Portal is a term generally synonymous with the terms gateway or grand entrance into the Internet for many users. E.g. www.yahoo.com, www.aol.com, www.msn.com etc. A Web portal software allows aggregation of several back-end systems, processes, sites etc brought together through a single portal page. Portals also provide additional services such as single sign-on security, customization (i.e. personalization) etc.

Q. What are the logical components to consider when building a portal to the Java Portlet specification (JSR 168)?

 

 

 

 

 

 

 

 

Logical components of a Portal

 

Portal

 

 

 

Decorations &

 

 

 

 

 

 

controls

 

Note: The distinction between

 

page

Portlet

 

 

 

 

 

 

 

 

 

 

 

window:

 

 

 

 

 

the portal server and the

 

 

 

 

 

Title

minimized

 

 

 

 

 

container is a logical one. These

 

 

 

state,

 

 

 

 

 

may be one physical component.

 

 

 

 

 

 

 

 

 

 

 

 

maximized

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

state etc.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

containerPortal &methodslifecycleinvokes(containerportlets markup)offragmentgeneratedreturn

 

 

News

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<NewsPortlet content>

 

 

 

 

 

 

portalaggregatesserver(portal display)formarkups

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Server

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Stock Quote

 

 

 

 

 

 

 

 

 

Portal

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<StockQuotePortlet content>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Weather

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

<WeatherPortlet content>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Portlet

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

fragment

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Portlets: are like Servlets but a single portlet generates only a fragment of the html markup a user sees from his/her browser. Portlets are not allowed to generate HTML tags such as <body>, <title>, <head>, <iframe>, <frame>, <base>

WeatherPortlet

StockQuotePortlet

NewsPortlet

Portal server: is an application, which aggregates portlet applications together in a presentable format to the user. In addition to being a presentation layer, it allows users to customize their views including what portlet applications to show, colors, images etc. Also provides additional services like single sign-on security etc.

Enterprise – Web and Application servers

221

Portlet Container: Provides a run-time environment to portlets, much in the same way a servlet container provides the environment for servlets. The portlet container manages portlets by invoking their lifecycle methods (init(..), processAction(..), render(..), destroy() etc ). The container forwards requests to an appropriate portlet. When a portlet generates a response, the container sends it to the portal server to be rendered to the user.

Portlet: provides content to its calling portal container for the purpose of being displayed on a portal page. Portlets are like servlets but portlets do not generate complete HTML documents. They only generate fragments that are included on the final portal page. Portlet applications are essentially extended Web applications (i.e. a layer on top of servlets). Portlets also share the application context with servlets and JSPs and can even include the output of another servlet or JSP as part of their content. User’s actions are received within a portlet in the form of both action (to respond to user’s interactions like search etc) and render methods (to paint the output of the portlet).

Note: Under the covers the GUI windows News, Stock Quote and Weather shown in the diagram are different applications, developed independently of each other and deployed as individual .war in the portal server.

Q. How do portlets differ from servlets?

The Portlet API is capable of using the existing application server infrastructure. You can call an EJB from your portlet, or you can start and participate in a global transaction controlled by your application server. In other words, portlets are Web components like servlets and can do pretty much every thing that a servlet can do except for a few important differences:

Portlets do not generate complete HTML documents. Portlets only generate fragments of HTML that are to be included as part of the final portal page. Portlets are not allowed to generate HTML tags like <title>, <head>, <body>, <frame>, <iframe>, <base>, etc. The portal server decides where these tags should go and provides additional <table>, <tr> and <td> tags for each portlet. Portlets can access either servlets or independent JSPs by directly including their output within a portlet’s rendered output, but only without these offending HTML tags.

Portlets are not directly tied to a URL and they use methods such as createActionURL( ..) or createRenderURL( ..) to construct a URL that allows a user to fire actions to render currently executing portlet. You cannot send somebody URL of a portlet but you can send him/her the URL of the portal page containing a portlet.

A Portlet can exist multiple times on the same page and the user is given the ability to control what portlets are displayed on his/her page (i.e. known as personalization). Also the user can minimize or maximize each portlet window.

Q. What are portlet window states and portlet modes?

Window states: To offer the user the ability to customize portlets, there are special window states like normal, minimized and maximized. A window state determines how much content should appear in a portlet. Normal will display the portlet’s data in the amount of space defined by the portal application, maximized will display only that portlet in the whole window, and minimized may display only one or two lines of text.

Portal modes: determine what actions should be performed on a portlet. There are three standard modes like View, Edit and Help. Optional modes are possible. The GenericPortlet class defines three empty methods doEdit(..), doView(..) and doHelp(..). Your subclasses can implement any of these methods.

Furthermore, the portlet can use these states and modes to determine what content it needs to show the user at any given point.

Q. How do portlets provide customization in addition to window states and portlet modes?

To provide customization portlets support preferences, which are name/value pairs that can be assigned an initial value and later tailored to other values based on user preference. Preferences are initially defined within the portlet’s deployment descriptor file portlet.xml and accessed through the PortletPreferences object, which provides methods to retrieve, change or store preferences. Preferences can also be read-only and also can be verified with validators.

Q. How would you achieve design flexibility in a portal to cater for different look and feel? normal Website designers know the type and amount of the initial content but portal designers have to design the portal to be flexible enough to meet diverse clients’ and users’ needs. Design flexibility can be achieved by using CSS (Cascading Style Sheets) to avoid hard coding colors and images into the portal so that customers can easily customize (i.e. modify) the look of their portal.

222

Enterprise – Best practices and performance considerations

Enterprise - Best practices and performance considerations

Q 123: Give some tips on J2EE application server performance tuning? PI FAQ

A 123:

Set the Web container threads, which will be used to process incoming HTTP requests. The minimum size should be tuned to handle the average load of the container and maximum should be tuned to handle the peak load. The maximum size should be less than or equal to the number of threads in your Web server.

Application servers maintain a pool of JDBC resources so that a new connection does not need to be created for each transaction. Application servers can also cache your prepared statements to improve performance. So you can tune the minimum and maximum size of these pools.

Tune your initial heap size for the JVM so that the garbage collector runs at a suitable interval so that it does not cause any unnecessary overhead. Adjust the value as required to improve performance.

Set the session manager settings appropriately based on following guidelines:

Set the appropriate value for in memory session count.

Reduce the session size.

Don’t enable session persistence unless required by your application.

Invalidate your sessions when you are finished with them by setting appropriate session timeout.

Calls to EJB from a separate JVM are handled by ORB (Object Request Broker). ORB uses a pool of threads to handle these requests. The thread pool size should be set appropriately to handle average and peak loads.

If a servlet or JSP file is called frequently with identical URL parameters then they can be dynamically cached to improve performance.

Turn the application server tracing off unless required for debugging.

Some application servers support lazy loading and dirty marker strategies with EJB to improve performance.

Q 124: Explain some of the J2EE best practices? BP FAQ

A 124:

Recycle your valuable resources by either pooling or caching. You should create a limited number of resources and share them from a common pool (e.g. pool of threads, pool of database connections, pool of objects etc). Caching is simply another type of pooling where instead of pooling a connection or object, you are pooling remote data (database data) and placing it in the memory (using Hashtable etc).

Avoid embedding business logic in a protocol dependent manner like in JSPs, HttpServlets, Struts action classes etc. This is because your business logic should be not only executed by your Web clients but also required to be shared by various GUI clients like Swing based stand alone application, WAP clients etc.

Automate the build process with tools like Ant, CruiseControl, and Maven etc. In an enterprise application the build process can become quite complex and confusing.

Build test cases first (i.e. Test Driven Development (TDD), refer section Emerging Technologies) using tools like JUnit. Automate the testing process and integrate it with build process.

Separate HTML code from the Java code: Combining HTML and Java code in the same source code can make the code less readable. Mixing HTML and scriptlet will make the code extremely difficult to read and maintain. The display or behavior logic can be implemented as a custom tags by the Java developers and Web designers can use these Tags as the ordinary XHTML tags.

It is best practice to use multi-threading and stay away from single threaded model of the servlet unless otherwise there is a compelling reason for it. Shared resources can be synchronized or used in read-only

Enterprise – Best practices and performance considerations

223

manner or shared values can be stored in a database table. Single threaded model can adversely affect performance.

Apply the following JSP best practices:

Place data access logic in JavaBeans: The code within the JavaBean is readily accessible to other JSPs and Servlets.

Factor shared behavior out of Custom Tags into common JavaBeans classes: The custom tags are not used outside JSPs. To avoid duplication of behavior or business logic, move the logic into JavaBeans and get the custom tags to utilize the beans.

Choose the right include” mechanism: What are the differences between static and a dynamic include? Using includes will improve code reuse and maintenance through modular design. Which one to use? Refer Q31 in Enterprise section.

Use style sheets (e.g. css), template mechanism (e.g. struts tiles etc) and appropriate comments

(both hidden and output comments).

If you are using EJBs apply the EJB best practices as described in Q82 in Enterprise section.

Use the J2EE standard packaging specification to improve portability across Application Servers.

Use proven frameworks like Struts, Spring, Hibernate, JSF etc.

Apply appropriate proven J2EE design patterns to improve performance and minimize network communications cost (Session façade pattern, Value Object pattern etc).

Batch database requests to improve performance. For example

Connection con = DriverManager.getConnection(……). Statement stmt = con.createStatement(). stmt.addBatch(“INSERT INTO Address…………”); stmt.addBatch(“INSERT INTO Contact…………”); stmt.addBatch(“INSERT INTO Personal”);

int[] countUpdates = stmt.executeBatch();

Use “PreparedStatements” instead of ordinary “Statements” for repeated reads.

Avoid resource leaks by

Closing all database connections after you have used them.

Cleaning up the objects after you have finished with them especially when an object having a long life cycle refers to a number of objects with short life cycles, then you have the potential for memory leak.

Having the resource (i.e. database connections, statements, etc) clean up code in a finally {} block, which is always executed, even if an exception is thrown.

Handle and propagate exceptions correctly. Decide between checked and unchecked (i.e. RunTime) exceptions.

Q 125: Explain some of the J2EE best practices to improve performance? BPPI FAQ

A 125: In short, manage valuable resources wisely and recycle them where possible, minimize network overheads and serialization cost, and optimize all your database operations.

Manage and recycle your valuable resources by either pooling or caching. You should create a limited number of resources and share them from a common pool (e.g. pool of threads, pool of database connections, pool of objects etc). Caching is simply another type of pooling where instead of pooling a connection or object, you are pooling remote data (database data), and placing it in memory (using Hashtable etc). Unused stateful session beans must be removed explicitly and appropriate idle timeout should be set to control stateful session bean life cycle.

Use effective design patterns to minimize network overheads (Session facade, Value Object etc Refer

Q84, Q85 in Enterprise section), use of fast-lane reader pattern for database access (Refer Q86 in Enterprise section). Caching of retrieved JNDI InitialContexts, factory objects (e.g. EJB homes) etc. using

224

Enterprise – Best practices and performance considerations

the service locator design pattern, which reduces expensive JNDI access with the help of caching strategies.

Minimize serialization costs by marking references (like file handles, database connections etc), which do not require serialization by declaring them ‘transient’ (Refer Q19 in Java section). Use pass-by-reference where possible as opposed to pass by value.

Set appropriate timeouts: for the HttpSession objects, after which the session expires, set idle timeout for stateful session beans etc.

Improve the performance of database operations with the following tips:

Database connections should be released when not needed anymore, otherwise there will be potential resource leakage problems.

Apply least restrictive but valid transaction isolation level.

Use JDBC prepared statements for overall database efficiency and for batching repetitive inserts and updates. Also batch database requests to improve performance.

When you first establish a connection with a database by default it is in auto-commit mode. For better performance turn auto-commit off by calling the connection.setAutoCommit(false) method.

Where appropriate (you are loading 100 objects into memory but use only 5 objects) lazy load your data to avoid loading the whole database into memory using the virtual proxy pattern. Virtual proxy is an object, which looks like an object but actually contain no fields until when one of its methods is called does it load the correct object from the database.

Where appropriate eager load your data to avoid frequently accessing the database every time over the network.

Tech Tip #7:

Q. How do you identify a Java process id in a UNIX machine?

$> ps –def | grep java

Q. How do you get a thread dump of a Java process in a UNIX machine?

$> kill -3 <process-id>

Q. If you have multiple java processes running in a UNIX machine, how would you identify a particular process?

$> /usr/ucb/bin/ps auxwww | grep java | grep <specific-process-description>

Q. What tools/commands do you use to help you identify an out of control Java process in a UNIX machine?

UNIX stat tools/commands like jvmstat, vmstat, iostat etc.

Q. How would you display the number of active established connections to localhost in a UNIX machine?

$> netstat –a | grep EST

Q. How do you find out drive statistics in a UNIX machine?

$> iostat -E

Enterprise – Logging, testing and deployment

225

Enterprise – Logging, testing and deployment

Q 126: Give an overview of Log4J? SF FAQ

A 126: Log4j is a logging framework for Java. Log4J is designed to be fast and flexible. Log4J has 3 main components which work together to enable developers to log messages:

Loggers [was called Category prior to version 1.2]

Appenders

Layout

Logger: The foremost advantage of any logging API like Log4J over plain System.out.println is its ability to disable certain log statements while allowing others to print unhindered. Loggers are hierarchical. The root logger exists at the top of the hierarchy. The root logger always exists and it cannot be retrieved by name. The hierarchical nature of the logger is denoted by “.” notation. For example the logger “java.util” is the parent of child logger “java.util.Vector” and so on. Loggers may be assigned priorities such as DEBUG, INFO, WARN, ERROR and FATAL. If a given logger is not assigned a priority, then it inherits the priority from its closest ancestor. The logging requests are made by invoking one of the following printing methods of the logger instance: debug(), info(), warn(), error(), and fatal().

Appenders and Layouts: In addition to selectively enabling and disabling logging requests based on the logger, the Log4J allows logging requests to multiple destinations. In Log4J terms the output destination is an appender. There are appenders for console, files, remote sockets, JMS, etc. One logger can have more than one appender. A logging request for a given logger will be forwarded to all the appenders in that logger plus the other appenders higher in the hierarchy. In addition to the output destination the output format can be categorized as well. This is accomplished by associating layout with an appender. The layout is responsible for formatting the logging request according to user’s settings.

Sample configuration file:

#set the root logger priority to DEBUG and its appender to App1 log4j.rootLogger=DEBUG, App1

#App1 is set to a console appender log4j.appender.App1=org.apache.log4j.ConsoleAppender

#appender App1 uses a pattern layout log4j.appender.App1.layout=org.apache.log4j.PatternLayout. log4j.appender.App1.layout.ConversionPattern=%-4r [%t] %-5p %c %x -%m%n

# Print only messages of priority WARN or above in the package com.myapp log4j.Logger.com.myapp=WARN

XML configuration for Log4j is available, and is usually the best practice. If you have both the log4j.xml and log4j.properties, then log4j.xml takes precedence.

Q 127: How do you initialize and use Log4J? SFCO

A 127:

public class MyApp {

//Logger is a utility wrapper class to be written with appropriate printing methods static Logger log = Logger.getLogger (MyApp.class.getName());

public void my method() { if(log.isDebugEnabled())

log.debug(“This line is reached………………………..” + var1 + “-” + var2);

)

}

}

Q 128: What is the hidden cost of parameter construction when using Log4J? SFPI

A 128:

226

Enterprise – Logging, testing and deployment

Do not use in frequently accessed methods or loops: CO

log.debug (“Line number” + intVal + “ is less than ” + String.valueOf(array[i]));

The above construction has a performance cost in frequently accessed methods and loops in constructing the message parameter, concatenating the String etc regardless of whether the message will be logged or not.

Do use in frequently accessed methods or loops: CO

if (log.isDebugEnabled()) {

log.debug (“Line number” + intVal + “ is less than ” + String.valueOf(array[i]));

}

The above construction will avoid the parameter construction cost by only constructing the message parameter when you are in debug mode. But it is not a best practice to place log.isDebugEnabled() around all debug code.

Q 129: What is the test phases and cycles? SD FAQ

A 129:

Unit tests (e.g. JUnit etc, carried out by developers).

There are two popular approaches to testing server-side classes: mock objects, which test classes by simulating the server container, and in-container testing, which tests classes running in the actual server container. If you are using Struts framework, StrutsTestCase for JUnit allows you to use either approach, with very minimal impact on your actual unit test code.

System tests or functional tests (carried out by business analysts and/or testers).

Integration tests (carried out by business analysts, testers, developers etc).

Regression tests (carried out by business analysts and testers).

Stress volume tests or load tests (carried out by technical staff).

User acceptance tests (UAT – carried out by end users).

Each of the above test phases will be carried out in cycles. Refer Q14 in How would you go about… section for JUnit, which is an open source unit-testing framework.

Q 130: Brief on deployment environments you are familiar with? FAQ

A 130: Differ from project team to project team [Hint] :

Application environments where “ear” files get deployed.

Development box: can have the following instances of environments in the same machine (need not be clustered).

Development environment Æ used by developers.

System testing environment Æ used by business analysts.

Staging box: can have the following instances of environments in the same machine (preferably clustered servers with load balancing)

Integration testing environment Æ used for integration testing, user acceptance testing etc.

Pre-prod environment Æ used for user acceptance testing, regression testing, and load testing or stress volume testing (SVT). [This environment should be exactly same as the production environment].

Production box:

Production environment Æ live site used by actual users.

Data environments (Database)

Note: Separate boxes [not the same boxes as where applications (i.e. ear files) are deployed]

Development box (database).

Used by applications on development and system testing environments. Separate instances can be created on the same box for separate environments like development and system testing.

Enterprise – Logging, testing and deployment

227

Staging Box (database)

Used by applications on integration testing and user acceptance testing environments. Separate instances can be created on the same box for separate environments.

Production Box (database)

Live data used by actual users of the system.

General Tip #7:

Some interviewers would like to purposely disagree with your answer or confuse you even if you are sure that you are right. If you are confident then you should not give in. You should try to persuade your interviewer that you are right. If you cannot persuade your interviewer then how are you going to persuade your business users or fellow developers? Once I was asked When would you use a “const” keyword in Java?. My answer was that even though it is a reserved word in Java, it is not yet in use in Java (as of version Java 5.0, may be added to the language in the future). The interviewer quizzed me further by saying, Are you sure? My answer was yes, and then went on to say that in Java you declare a constant with a “final” keyword.

228

Enterprise – Personal and Behavioral/Situational

Enterprise – Personal and Behavioral/Situational

Q 131: Tell me about yourself or about some of the recent projects you have worked with? What do you consider your most significant achievement? Why do you think you are qualified for this position? Why should we hire you and what kind of contributions will you make? FAQ

A 131: [Hint:] Pick your recent projects and enthusiastically brief on it. Interviewer will be looking for how passionate you are about your past experience and achievements. Also is imperative that during your briefing, you demonstrate on a high level(without getting too technical) how you applied your skills and knowledge in some of the following key areas:

Design Concepts: Refer Q02, Q03, Q19, Q20, Q21, Q91, Q98, and Q101.

Design Patterns: Refer Q03, Q24, Q25, Q83, Q84, Q85, Q86, Q87, Q88 and Q111.

Performance issues: Refer Q10, Q16, Q45, Q46, Q97, Q98, Q100, Q123, and Q125.

Memory issues: Refer Q45 and Q93

Multi-threading (Concurrency issues): Refer Q16, Q34, and Q113

Exception Handling: Refer Q76 and Q77

Transactional issues: Refer Q43, Q71, Q72, Q73, Q74, Q75 and Q77.

Security issues: Refer Q23, Q58, and Q81

Scalability issues: Refer Q20, Q21, Q120 and Q122.

Best practices: Refer Q10, Q16, Q39, Q40, Q46, Q82, Q124, and Q125

Refer Q75 – Q89 in Java section for frequently asked non-technical questions.

Q. Give me a high level description of your experience with the Java platform? What APIs do you have experience with?

[Hint:] Servlet, JSP, JDBC, JNDI, EJB, JMS, Swing, Applet, etc.

Q 132: Have you used any load testing tools? What source control systems have you used? What operating systems are you comfortable with? Which on-line technical resources do you use to resolve any design and/or development issues or to keep your knowledge up to date apart from Google? SD

A 132:

Load testing tools: Rational Robot, JMeter, LoadRunner, etc.

Source control systems: CVS, Subversion, VSS (Visual Source Safe), Rational clear case etc. Refer Q14 in How would you go about section…. for CVS.

Operating systems: NT, Unix, Linux, Solaris etc

Online technical resources : http://www.javaranch.com, http://www.theserverside.com, http://java.sun.com/ etc.

Q 133: Tell me a time where you had to deal with a difficult person? Why was this person difficult? How did you handle that person? FAQ

A 133:

Situation: When you had started a new job as a technical lead with an insurance company, where you had to manage a small team of 4-5 developers. All your team members were quite co-operative and friendly except for one member whom you would like to call Mr. X. Every time you had to talk to Mr. X you could sense some resistance to co-operate and disclose any work related information. Mr. X is also in disagreement with your views, opinion etc. Why was this person difficult? The root cause for this behavior was due to Mr. X was overlooked for the position of technical lead after having worked on the system for about 3 years.

Action: How did you handle that person? You had decided to be patient and tactful with Mr. X to earn his respect. After talking to a few members of the team and with your own observation you had determined that Mr. X was very technically talented but was not too popular with the business users because he always looked at things only from the technology perspective and failed to look at things from the business perspective and consequently turned a deaf year to some of the business requirements and also did not build a good rapport with the business. You always believed that having a good rapport and effective communication with the business is vital for the success of a project. So you decided to organize a two day workshop for your team and key

Enterprise – Personal and Behavioral/Situational

229

business users on agile development methodology with the focus on building a better communication with the business. You had organized an external off-site workshop with the help of an external facilitator. You could feel during and after the workshop that Mr.X started to realize the importance of building a good rapport with the business. At early stages you minimized any contacts with Mr.X to avoid any confrontational situations and with time and patience you managed to earn his respect by being flexible and tactful, being genuinely appreciative of Mr. X’s technical skills and contribution, being able to get Mr. X to realize the importance of building a good rapport with the business, giving Mr. X more responsibility and making him feel important.

Results: Mr. X became more co-operative and also endeavored to build a better rapport with the business.

Note: Some times you would be put in a difficult situation with the question, what would you do if no matter what you do, you cannot get along with a person say Mr Y? You could say that you would try to be patient and minimize or if possible avoid any contacts with Mr. Y to prevent any unpleasant situations. If that is not possible then you would have a discussion with your manager to see if he/she could improve the situation by mediating between you and Mr. Y. If none of the above approaches work then you would either move to a different team within the same organization or to another organization in the best interest of you and your organization.

Q 134: What did you like best and least about your previous company? FAQ

A 134: The above question reveals a lot about you. You need to make sure that what you like about your last job should be appealing to the job you are being interviewed for and what you liked least is not much importance.

Liked best: You could say that you were able to enhance your skills in problem solving, coping with stressful situations, ability to meet deadlines etc. Also can say that you acquired new technical skills and experience by learning new frameworks like Spring, Hibernate, Tapestry etc.

Liked least: You could say that you were self-motivated and worked hard to achieve your deadlines but some of your team mates slacked off from time to time and you had to pick up the extra work to achieve the team goal. Note: The above answer discusses a negative aspect with a positive spin. You could also say that it was not challenging enough for you, but be prepared to explain, why it was not challenging enough for you.

Q 135: Describe a situation when working as a team produced more successful results than if you had completed the project on your own? FAQ

A 135:

Situation: You could say that you have enjoyed working independently and as a member of the team, throughout your career and you could do both equally well. You could then say that you were involved in a project, which had a very tight deadline because it had to be completed before the end of financial year. You had to work in a team of 5 developers.

Action: You tried to get everyone involved coming up with an effective solution to meet the deadline without compromising on quality by making time for brain-storming sessions with your team members where there are no right or wrong ideas. The creativity, collective experiences and skills of a group of people were going to be greater than that of one person and this can achieve better results through co-operation and motivation.

Results: Team involvement motivated team members work smart and at times work long hours. You were able to meet the tight dead-line as a team without compromising on quality.

General Tip #8:

Some interviewers would like to ask questions that are impossible to answer to evaluate your problem solving skills. I was once asked How many gas stations are there in Sydney? Do not get upset. Try to solve it creatively because the interviewer is not looking for an exact answer but how well you go about solving it. My answer to the above question was looking up a Sydney street directory or ringing up Roads and Transport Authority (RTA) for number of major intersections in Sydney and multiply that by 2 (i.e. on average 2 gas stations per intersection). Alternatively you could say that there are 3 million people in Sydney of which 60% are above 18 years (i.e. 3,000,000 * 0.60 = 1.8 million) and hence hold a license. Say every 5 minutes a car pull up at a gas station (i.e. Say in 20 hours 240 cars will be serviced ). So to serve 1.8 million cars you would require 1,800,000/240 = 7500 gas stations. Another possible question might be, How many hair dressers are there in Sydney? How many liters of paint is required to paint the Sydney harbor? [Hint: Make a replica to a reduced scale say 1:100,000 (i.e. replica:actual) and evaluate the liters of paint required by painting the replica first and then multiply the result by 100,000. ]

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]