My resume was forwarded from someone I know to a manager accepting applications. He then called me for a 20 minute phone interview to ask basic questions to determine what kind of person I am and if the job would interest me. Following that, another interview was scheduled two days later with two of their higher level software engineers. I had the option to do it over the phone or in person, and I chose the latter. It lasted about two and a half hours, where the first 40 minutes or so were quizzing me on my general Java (it was a Java-specific position) and programming knowledge, and after a short break the rest of the time was spent on six programming puzzles that I had to solve on a whiteboard. Half of them were fairly straightforward, and the other half more challenging. All of the interviewers were very kind and casual. When I asked what to wear to the interview I was told blue jeans and a nice shirt, and I was still dressed up a little more than some of the employees there. The office's environment seemed laid back and welcoming, and overall the interview experience was very satisfying.
I received a call later the following week from the manager I did the phone interview with, who was the manager I'd be working under, saying that he had put my name in to HR for an offer. The week after that, I received the official offer from HR and was given two weeks to accept or decline. I talked with HR about the specifics of the many benefits the company has available to its employees, and accepted the offer a few days later.