Initial communication started through contracting agency. After talking with me, the agency thought I would be a great fit at SolidWorks (SW). They approached SW and I was told they wanted to see me in an hour. I had no time to prepare, but I was confident. It was a good thing I was wearing my suit!
On arrival, I was greeted by the branch manager, the VP of research and development, and a beautiful Trek bicycle hanging on the wall which was designed there. The office was stunning, such a breath of fresh air from cubicle views! Every developer had their own office and each had a window! To the outside! There was a kitchen stocked with beverages and coffee and water. Food stuffed in a fridge and snacks abounding. The guide let me know that they were just about to expand and what that would offer. I was really drooling. I noticed that they had a game center with x-box, wii, and a gaming computer and it was open for use during the day for clearing the mind and relaxing. Wow. Seriously blown away.
So he showed me around, asked if I needed something to drink. Then we sat together and he introduced me to the company as a whole, what they did, background, etc. He told me how long the interview would take and asked me if I had any questions. I was by that time, very excited, and frightened! He said they were good at finding out how much I knew, what my experience was, etc. After two days of two on one interviewing, I believed it!
My first interview that day consisted mostly of programming questions, my knowledge of C++ and OOP, some algorithm questions. Some questions that got at my personal programming philosophy and why I did things the way I did them. Then I was given a problem that took the rest of the time. I can't share what that is, but it was pretty challenging. I think that a lot of this was to see how I thought, my mental processes, was I a quick learner, etc.
Lunch was provided and it gave me a chance to chat with everyone, laugh, get the pressure off. It was really fun and gave me a hint at the camaraderie amongst the employees at SW. We talked about movies, hobbies, personal fun stuff and laughed a lot (always a good sign). Lunch really put me at ease (and made me tired!) and I wasn't as nervous the rest of the afternoon. I felt good about having done well in the first interview and had a lot of confidence for the later part.
After lunch, I had three in-person interviews with pairs of people. The first happened to be a lot about my experience, explaining projects, what I learned on them. They also asked me some conceptual programming questions mostly around OOP and C++, like what's a memory leak and so forth. Some of the harder questions they asked had to deal with the things that I worked on, validating that I knew what I knew. The second of these pairs asked me more higher level programming questions, asked me about debugging and how I did that, what sort of skills did I have debugging software, working in large code bases, etc. Finally, the last interviewer was a one on one and asked a lot of detailed technical questions about networking, C++ and Operating System guts such as what makes up a process in Windows and how memory is allocated.
I went away for a week on vacation and they asked me to come in one more day for four more interviews. One was full of geometry and math questions. Things like proving geometrical properties of shapes and really dug deep into my high school memory. They also asked me some algorithmic questions such as how I might implement such and such feature of a known application, digging into my conceptual knowledge of different datastructures like B-Trees and HashTables, searching, etc. It was difficult to do over the phone, frankly, as they couldn't see things that I was writing on paper or drawing out on a whiteboard. I was a bit tired as well and had been interviewing while on vacation for different companies, so I was a bit mentally out of shape. All that didn't help and I didn't feel like I did well on it. The next few interviews were not technical at all and were much more conversational, again, touching on my personal work and what motivated me, why I liked what I did.
I was told after those interviews that there would be a team huddle and everyone would talk about what they liked or didn't like about me and I'd be contacted in a few days by the agency. It was a rough two days because I really wanted the job. Absolutely nothing compared with the intelligence, passion and culture of this company. They really cared about their employees. You could see it in the computers they bought, the comforts given to each, the personal space and attention to detail. What other company has a pool table in the middle of an open space... being used!?
After those two days, I was called back and got the job. I've been there for a year and I am happy as can be.