Met a recruiter at a career fair for my university and we hit it off. I expressed interest in the position he showed me and I was contacted a few weeks later to set up a phone interview.
The phone interview mostly consisted of general HR questions, questions about my past projects, working in a team, etc. There was a brief technical portion that asked some basic C questions (how to declare a pointer, difference between semaphore/mutex, explain the difference between stack and heap). A week later I was called and set up an onsite interview, where Garmin paid for everything during the trip (flight, hotel, food).
The onsite interview started at 9am and went until 1pm. There were 5 back to back interviews.
First I met with the engineering lead. We discussed Garmin as a whole, why I want to work for Garmin, etc. Nothing technical.
Secondly, I met with another engineering lead who asked me similar questions to the first interview, but also asked about my past projects, past engineering experience, the types of projects at Garmin.
Next I met with HR who asked me some HR scenarios (what was a time your ethics were challenged, how did you approach it?; what was a time you had a conflict in a team setting? how did you handle it?).
Fourthly, I met with two software team leads, who asked me exclusively technical questions. The first half of the interview was all rapid fire C questions (what is a thread? what is meant by thread-safe?; what does the volatile keyword mean?; what is an enum?; what is a macro? when is it used?; when would you pass a pointer to a variable rather than the variable itself?). The second half was a coding question in three parts. First, I had to read a series of engineering specifications for what the code shall do, and tell the interviewers my answer. They were simple specifications, but worded rather poorly and took me longer than it should have to identify the specifications. Secondly, I had to describe the testing procedure for my code. Thirdly, I had to implement the code.
The last interview was at lunch with another engineering lead. We discussed my past experience, various coding platforms I have used. Overall pretty similar to the second interview.
Overall the interview was very pleasant, and everyone I talked to was nice and helpful.