
CEVA Software Engineer Interview Questions
& Process
Real candidates share what happened, how many rounds they had,
and how the experience turned out.
Based on 17 interview experiences · FREE TO READ
Candidate interview experiences
First-hand accounts from people who interviewed at CEVA.
Software Engineer
So, the interview process was pretty much a technical screen. They threw some C code at me and asked me to figure out the running time based on specific cycle costs for operations and array access, and also to optimize it using some new operators they introduced. After that, there was this assembly question where I had to compute the absolute difference between two registers using a very limited set of instructions.
- Calculate the overall running time of the C code provided as a function of the array's length (n=N), given the following assumptions: Arithmetic operations (+,-,*,=,+=) cost one machine cycle. Reading/Writing from an array element costs 5 machine cycles. Loops have zero overhead. The cost of a loop is 6*n machine cycles (5 for writing arr[j], 1 for calculating a+b). Loop overheads ('j = 0', 'j < n', 'j++') are not considered.
- Assuming the addition of two new operators to the C language: 1) inc_mod(i, n); i++; if (i >= n) i = 0; 2) dec_mod(i, n); i--; if (i < 0) i = n - 1; How can the function func() be optimized SIGNIFICANTLY in terms of run time? Assume that the function func() will be called much more than N times (thus optimizing the first multiplications of zero array elements is not worthwhile).
- Primitive Assembley Question: Assume your assembly language includes ONLY the following instructions: 'inc REG', 'dec REG', 'jnz LABEL', and 'HALT'. Registers A and B hold non-negative values. The program should calculate the value of |A-B| and locate the result in C. Registers C, D, ..., Z are initialized to zero.
Student Developer
I was interviewing for a student developer role on the Compiler team. HR reached out and set up an online Zoom interview that was scheduled for 2 hours, but it went a bit over to 2.5 hours. The interviewer, who was a team lead, started by giving me an overview of the company, its products, and the compiler team's role. Then we dove into some really tough technical problems. The first one involved a C function: I had to figure out what it did, then optimize its efficiency using two other 'black-box' functions. The second problem was in a simplified Assembly language with only four commands: 'inc X', 'dec X', 'jnz LABEL', and 'BREAK'. The task was to calculate the absolute difference between two registers, A and B, which held non-negative numbers, using these commands. This technical part took up most of the two hours. After the coding challenges, we went through my resume. The interviewer asked if there was anything on my resume I wanted to discuss, and I brought up a big Android project. He wasn't interested, which was a bit unexpected. He then clarified that the position was for an automation developer, which contradicted the job description. A couple of days later, I got a standard rejection email. Honestly, I wasn't even upset about it; it didn't seem like a place I'd want to work anyway.
- For the given C function, can you first explain its functionality? Second, assuming arithmetic operations are 1 clock cycle and array I/O is 5 clock cycles, estimate the function's total clock cycles. Third, how would you leverage two provided 1-clock-cycle black-box functions to enhance the original function's performance?
- Given registers A and B with non-negative values, and registers C-Z starting at zero, calculate |A-B| using only the commands: increment X, decrement X, jump if not zero to LABEL, and break.
Senior Software Engineer
Had a phone call. The manager introduced themself, went over the job description, but didn't ask anything about my background or what I was looking for. Instead, they asked questions about my current company. They wouldn't answer basic questions about the job.
- Can you tell me about your current employer?
- What is the daily routine for this role?
- What is the salary range for this position?
CEVA Software Engineer Interview Questions
Quoted word for word from CEVA interview reports.
“Write code to draw a circle on a 2D array, given its radius and center coordinates.”
Read reports →“What's the formula for the smallest circle that can enclose three points on a 2D plane that form a triangle?”
Read reports →“Given an assembly language with only 'inc REG', 'dec REG', 'jnz LABEL', and 'HALT' instructions, and registers A and B holding non-negative values, write a program to compute the absolute difference between A and B and store it in register C. Registers C through Z start at zero.”
Read reports →“What is the cheapest route from the top-left corner to the bottom row in a specific matrix where movement is restricted to down or down-left?”
Read reports →“Given registers A and B with non-negative values, and registers C-Z starting at zero, calculate |A-B| using only the commands: increment X, decrement X, jump if not zero to LABEL, and break.”
Read report →“Write a function in assembly to compute the absolute difference between two numbers (A-B), using only the add1, dec1, and jz instructions.”
Read report →“Assuming the addition of two new operators to the C language: 1) inc_mod(i, n); i++; if (i >= n) i = 0; 2) dec_mod(i, n); i--; if (i < 0) i = n - 1; How can the function func() be optimized SIGNIFICANTLY in terms of run time? Assume that the function func() will be called much more than N times (thus optimizing the first multiplications of zero array elements is not worthwhile).”
Read report →“How would you write a program to check if a given string matches a regular expression containing regular characters and the wildcard '*'?”
Read report →“Can you find all the paths in an NxN matrix from the bottom left to the top right moving only up or right?”
Read report →Formats, difficulty and experience
Across all 17 CEVA interview reports.