Taro Logo

Firmware Engineer Interview Experience - San Diego, California

February 1, 2011
Positive ExperienceGot Offer

Process

Overall, Qualcomm is very organized and very professional.

Interview Process:

  • Applied online.
  • After about two weeks, HR emailed me to set up a phone interview. I had the phone interview on the same day.

During the phone interview, the key question I asked was, "Do you have any concerns about me?" He told me he wants someone committed to the position for at least two years. He also said he would set me up for an on-site interview.

After another week, HR emailed me for an on-site interview.

On-site is with one HR representative and five engineers from the same department.

HR will ask you how much money you made in your previous job, why you want to quit your current job (I was currently employed), why you want to work at Qualcomm, and your future goals.

Then the fun starts with the five engineers.

Each interview takes about an hour. Lunch is also an interview.

Each interviewer is very professional; however, they will test you until you break to see how you handle the pressure. Based on my experience, they're not testing to see if you know everything; it's more about testing your personality and your problem-solving skills.

My advice is to make sure you know every word on your resume. If you don't know the answer or don't understand the question, ask them questions. They were in your seat a long time ago. They know what you're going through. Don't give vague responses that don't really answer the question. They're looking for short answers with the correct keywords, not essay answers.

Before ending the interview, make sure they can tell what your strong points and weak points are.

Don't feel bad if you lose confidence after the interview. That's normal for Qualcomm interviews. It's like the last day of finals; you will be burned out by the end of the day.

The good thing is 90% of the questions will be based on what you put on your resume, while 10% will be about problem-solving skills.

After the on-site interview, in two weeks, HR called me saying, "Congratulations, and they will contact the people I put as references." That means you pretty much got the job, unless your references don't give good recommendations.

Then, about a week later, HR will want a copy of your degree. That's it. After that, you get an offer.

They don't really have much room for negotiation. The initial offer is very competitive and attractive.

One of the things I did is I wrote thank-you letters after the phone interview and the on-site interview. I only knew HR's email, so I wrote to HR but addressed everyone. You should do that too. I'm not sure if it helps, but it certainly doesn't hurt.

Questions

Programming Related:

  • What do the keywords volatile, static, and const do?
  • Where does static data reside in memory?
  • What are some ways to pass data into a function, and what are their advantages and disadvantages?

O/S Related:

  • What makes an OS real-time?
  • What is the difference between a semaphore, a mutex, and spinlocks?
  • What is priority inversion, and what are methods to avoid it?
  • If a processor has a Floating-Point Unit (FPU), is it okay to use floating-point operations inside the kernel? Why or why not?
  • What is the difference between non-blocking and blocking calls? What are the benefits of each?
  • How would you execute a non-blocking call in the kernel?

Debugging Related:

  • What is a stack trace?
  • What data gets pushed onto the stack when jumping into a function call?
  • Give some examples of when you would use a scope to troubleshoot a software problem. What lines would you use to trigger the scope?

I/O Interface Related:

  • Explain the UART communication protocol.
  • What signals are connected to a DB9 connector, and how are they used?
  • What are some ways UART communication could encounter errors?
  • Explain the I2C communication protocol. How are the Start and Stop conditions generated? How do you select which device to communicate with when all devices are tied together?
  • Explain SPI communication.

Programs to Write:

  • Find what's wrong with this function:

c void copydata(uint8_t *datato, uint8_t *datafrom, int size) { uint8_t *CurrentAddress = datafrom; uint8_t *StopAddress = datafrom + size;

for (; CurrentAddress <= StopAddress; CurrentAddress++)
    *CurrentAddress = *datafrom++;

}

  • Write an algorithm to find a missing element in an array. For example:

c int array[5] = {1, 2, 0, 3, 4};

This array should contain numbers from 1 to 5. Number 5 is missing.

  • Find an element in an array of size n using the binary search method.

  • Write a small program that adds an element to a linked list at the beginning of the list and at the back of the list.

  • Swap the bit order in a byte (e.g., bit 7 would go to bit 0, bit 0 would go to bit 7).

  • Write a small test program to test read/write memory. What is a good value to write if you want to test if two data lines are tied together?

Puzzles 1:

You have a rope that takes 60 minutes to burn. The speed of burning is not uniform. For example, it doesn't take 30 minutes to burn half.

Using two ropes, how would you get 45 minutes?

Answer: First Rope: Burn both ends at the same time. Second Rope: Burn only one side.

When the first rope is totally burned, it's been 30 minutes. Now, burn the rest of the second rope from both ends. This should take an additional 15 minutes. 30 + 15 = 45 minutes.

Puzzle 2:

There is a guy in a boat holding a rope that's tied to the top of a pole on the shore. He keeps pulling the rope until he reaches the shore. What is the speed relationship between the amount of rope he pulls and his horizontal speed? Which speed is higher?

Answer: Horizontal speed is faster than the amount of rope he pulls. (The horizontal distance he travels is greater than the amount of rope he pulls, by triangle theory where the sum of two sides must be greater than the third side).

Puzzle 3:

On an analog clock, it's exactly 3:00. What time will the hour hand and minute hand overlap each other?

This is from a friend who had a kernel development position interview. This was only a phone interview.

This is just from a phone interview:

  • How did you port uCOSII to the product?
  • How did you verify the worst-case time delay?
  • What are the key features that you look for in an RTOS? (I mentioned size, semaphore, event flags, and priority inheritance).
  • What are cache write-back and write-through? Give examples of when you would use each.
  • What are the major differences between the MCUs and processors you are using?
  • What are the top considerations when picking those processors or MCUs?
  • What are the programming model differences among those processors?
  • What is volatile? Give examples of using it.

A programming question:

c int32 multiplication(int16 a, int16 b)

The * operator inside the function only takes 8-bit operands. What is the implementation? (I was a little stuck on the sign bit).

  • What's the difference between a DSP and an MCU? (I guess he was looking for the Harvard architecture; I didn't get that until he mentioned it).
  • What is the difference between desktop programming and embedded programming?

This is for a DSP Position phone interview:

Today, I had a phone interview for the DSP team. The scheduled time was 30 minutes, but it went to about 50 minutes, mostly because I talked too much, which is not a very good thing.

The first half-hour, he asked me a lot of questions on my resume:

  1. How did you port an RTOS?
  2. What was the precise timing control?
  3. How did you improve FFT? ...

In the second part, he focused on communication and DSP concepts:

  • How to implement a FIR filter?
  • How to implement a filter with FFT?
  • If a PLL has a stability issue, where to look?
  • Cellular phone power control is down to the radio power and already at minimum power; how to reduce interference to others?
  • In signal space, the modulated signals got closer and closer; how to achieve better demodulation?

Was this helpful?

Interview Statistics

The following metrics were computed from 4 interview experiences for the Qualcomm Firmware Engineer role in San Diego, California.

Success Rate

75%
Pass Rate

Qualcomm's interview process for their Firmware Engineer roles in San Diego, California is incredibly easy as the vast majority of engineers get an offer after going through it.

Experience Rating

Positive25%
Neutral50%
Negative25%

Candidates reported having mixed feelings for Qualcomm's Firmware Engineer interview process in San Diego, California.

Qualcomm Work Experiences