If dealing with a J2EE application, what app server would you deploy? Why WebSphere over Tomcat?
Webspehre is app server and tomcat is webserver. So Websphere is preferred if you want to run distributed transactions and ejb. Tomcat is good enough if you provide merely http prototcol level service alone
What type of Web Services are you working on? Did you build custom interfaces to go with them?
Working on using XML based webservices to connect with OAM as the native interfaces do not play well with custom legacy application. In the past used and JMS with CORBA interface to connect with legacy mainframe application
What are some of the steps to validate performance of build?
Load testing for 20% more users than projected is good starting place.
use tools like jmeter
If you are using Oracle databases, ensure that your DBA team is reviewing the AWR Report on a regular basis, especially in the context of an incident and root cause analysis process. Same analysis approach should also be performed for other database vendors.
In 30 seconds, if you step into a project where development has been done, how do your review existing code?
One of the best ways is to review the unit test cases used during development . Also if you run each of the use cases in debugger mode of the IDE it will give me a better picture when a particular method is invoked
What recommendations would you make to customer if there are performance issues?
Proper capacity planning involving load and performance testing is critical here to fine-tune your database environment and detect any problems at the SQL level.
Analyze JVM Thread Dump and pinpoint the code where you actually are slowing down
Make sure to spend enough time to fortify the “Operation” side of your database environment (disk space, data files, REDO logs, table spaces, etc.) along with proper monitoring and alerting. Failure to do so can expose your client IT environment to major outage scenarios and many hours of downtime
When writing code, how do you handle multi-threading?
First of all, if you are planning to have a lot of receivers, I would not use the ONE-THREAD-AND-QUEUE-PER-RECEIVER approach. You could end up with a lot of threads not doing anything most of the time and I could hurt you performance wide. An alternative is using a thread pool of worker threads, just picking tasks from a shared queue, each task with its own receiver ID, and perhaps, a shared dictionary with socket connections to each receiver for the working threads to use
Development, staging, production – process you employ between stages? Use any tools?
Used subversion version control and visual source safe to gate between different environment
One important separate out each environment configuration profiles to ensure
global, server-specific variables or configuration should be specified in a separate configuration file: database connection information, server path, base URL for the Web site, debug settings
Hibernate – how handle performance for end user?
Keep session memory footprint low
Page at DB level instead of at webserver level
While load testing use wide range of data to avoid the cache and simulate real performance of end users
What tools have you used in past to monitor code
JRockit is a complete solution for Java SE which includes a high-performance JVM, profiling, monitoring and diagnostics tools, and can be used for predicting latency in Java applications
Eclipse Memory Analyzer is a Java heap analyzer that helps you find memory leaks and reduce memory consumption. It is more suited for being a general purpose toolkit to analyze Java heap dumps and calculation of its size. It can be used also reports leak suspects and memory consumption anti-patterns