First interview was on-site. The first half I was asked questions primarily about my technical skills. The second half was a series of programming challenges, including algorithm and Java syntax problems. They wanted to see if I (a) was any good at programming in general and with Java specifically, (b) could use the Eclipse debugger to track down a bug, and (c) could solve a problem with code.
Second interview they told me that I was right on the border, and pointed out the areas they were concerned about. We discussed it, and they offered to hire me for a trial period of about 2 months.