views:

99

answers:

3

I am gonna have an interview with a company working on stock trading system which only requires core Java skill. However, the requirements list many server related stuff as follow:

  • Strong server-side Java (no UI)
  • Strong JUnit testing
  • Web service knowledge, HTTP / HTTPS
  • Lucene
  • Performance tuning experience will be desirable
  • Continuous integration experience (e.g. Ant, Hudson)

Are they talking about socket programming? I have no idea because I am currently working on web app development by using J2EE (JSP, Servlet...). Could you guys give me some advices which I should focus for the preparation?

Thanks!

+3  A: 

I would venture that they need to do a lot of work not immediately connected to a web server or similar. The mentioning of Lucene sounds like collecting and indexing data which the web server/JEE guys can then access.

No problem with having such code running as normal Java SE application.


Edit:

But the data will be exposed through web services - which you should know about as you will have to do them properly - but how those web services are actually created and maintained is not what they want you to do hence no socket knowledge (and this usually happens inside a web server anyway for scalability).

You will need junit to convince others that your code works. I would read up on Test Driven Development - that is a very powerful approach for library code. This combines well with the Continuous Integration which basically just means that a robot builds your code all the time and notifies when something breaks. This is also very powerful when working in teams on the same code.

Thorbjørn Ravn Andersen
+1  A: 

My thoughts on what you would want to know for each one of these. Very likley 50-75% of them won't come up in the interview... but worth looking at at least so you can sound intelligent. You can't really fake having experience with stuff you haven't used, but I am not sure where you stand.

Strong server-side Java (no UI) This just means core java. Design patterns. OO. Creating your own classes. They don't care how much HTML you know, just that you can do all the Java backend stuff.

Strong JUnit testing Have you used junit much? Should be fairly self evident if you use junit.

Web service knowledge, HTTP / HTTPS I would guess basic SOAP / REST web services. Can you run a few commands and make some stubs from a WSDL?

Lucene A search library... if you haven't used it, you can get a 100 foot view of how it works in half an hour. Then you can at least talk intelligently about it.

Performance tuning experience will be desirable Profiler? Tomcat memory tuning? Garbage collection tuning?

Continuous integration experience (e.g. Ant, Hudson) Setting up a project to be built with ant and / or hudson. If you haven't used either, should be able to get the basics of them in a half hour.

bwawok
+2  A: 

From my experience, multi-threading is one of the big things you'll discuss in this type of interview. Stock trading systems have to be high-throughput systems and system performance is very important. They'll likely ask you questions about executors, pooling, semaphors, etc.

High-performance messaging systems are usually part of the underlying architecture as well. Tools like JMS implementations or Tibco Rendevous.

Javid Jamae