Originally applied through website for the intern position at their Manhattan Kansas office (Kansas State University has a program with Garmin working out of one of KSU's research facilities). I was contacted about a week and a half later requesting times I would be available to speak with a recruiter. The overhead recruiter and I scheduled a time for the following week to conduct a one hour phone interview with a university recruiting person. The recruiter called me about an hour before the interview asking to reschedule to a later date because her daughter got sick and in turn, got her sick too. It was no big deal for me, as I applied for the position almost 5 months before it would have started so there was definitely no rush.
We rescheduled the interview to be the following Friday (now four weeks since applying). The first interview was purely asking about items that were on my resume, basic questions regarding how much I knew about the structure and content of the Kansas State version of the Software Internship (it is a in-school position, part time, in parallel with schoolwork during the fall and spring). The first interview went very well and taught me a lot about the opportunities I would have as an in school intern. This was definitely a non technical, "tell me about yourself" interview. At the end of the discussion, my recruiter wanted to set me up right away to meet with the head of the Manhattan area coordinator and advisor to conduct a more technical interview. Due to the previous delays for sickness and the rush to get things done before the school year was over, she penciled me in for the following Monday.
The technical interview seemed almost as informal as the first one for the most part. In my first interview, I was instructed to bring examples of projects I had done myself, or things that had been developed in concordance with a team to highlight my abilities as a programmer and to demonstrate my aptitude for learning code. My technical interviewer seemed surprised that I had brought him projects to demonstrate (an iOS app I had built on my own and a rebuild of the 1980's Pac-Man). He seemed really interested in the projects I had shown, which definitely relaxed the environment of the generally more stressful technical interview.
Most of my experience in coding has been in high class languages (object oriented) like Java, C#, and Objective-C, so when I was handed code in regular C, I got really worried. Surprisingly, the coding questions he asked seemed almost like a joke. The first was a simple method that added numbers together in two different ways and I was asked to find why the code was outputting the wrong answer. The answers were fairly straight forward (a semicolon after a for loop statement but before the brackets enclosing the contents of the for loop). However, some questions were more difficult. Coming from higher languages to be run on computers, questions about memory conservation and processing speed were not my forte. My interviewer allowed me to ask questions about anything in the code to allow me to work through a solution based on how he was answering my questions. For instance, I wasn't totally familiar with pointers in C, so when it came time to debug code containing pointers, he answered my questions willingly so I could form a conclusion, which was a great way to keep my from getting discouraged for not recognizing an error right away, but also demonstrated my ability to problem solve. He seemed very impressed to see that I was still able to work through to correct answers without a detailed knowledge of the C language directly.
I received a call about 3 days later from the recruiter from the first interviewer describing my offer, and even offering me a position during the summer before the fall when I was supposed to start, if I was interested. It was a fun process and a little nerve racking at times while I waited for calls back, but the people were awesome and really got me excited about the environment I would be in and the opportunities I would have as a Garmin intern.