I applied through a staffing agency. The process took 3 weeks. I interviewed at Siemens (Prague)
Interview
I applied through an external recruiter because I was interested in the the area. The original job highlighted things like "good knowledge of Linux, preferably embedded, standard networking protocols based on TCP/UDP, some orientation in security". I told the recruiter my current salary and
expectations (I asked for less pay, due to a lack of experience in the embedded area, but as Linux application developer I thought I would fit in very well and was highly motivated to learn something new).
At the interview I got a standard C language test (see below). Then a senior person came in, looked at my personal profile on paper with a weird look and immediately said: "with the salary you have now and with your salary expectation you should stay in your current area and job!". My expectation was 55.000 CZK.
I got a look at the summarized personal profile he had and it was nothing like my well formatted resume, as the internal HR team seem to have copy pasted my original resume in a very unstructured document.
The rest of the short interview was let me know I was not about to be hired... It was quite rude and non-professional, but at least, it was time saving for both sides. It would be expected that Siemens and its external headhunters had better communication and clear expectations on the salary range they were willing to offer.
I'm very glad for this experience and thankful that I did not get hired!
I later found that the same job advert has been orbiting around many job portals for a long time with offered salary of 30 to 40k CZK (which is really below the average for Prague's IT industry).
Interview questions [1]
Question 1
A. Test Embedded C
1. Is C case sensitive language? Yes/No
2. Complete function below for swapping two values given by pointers.
void SwapValues(unsigned int *pVal1, unsigned int *pVal2)
{
assert(pVal1 != NULL);
assert(pVal2 != NULL);
}
3. You have following code, what will be value of "b"?
int a[10] = {1,2,3,4,5,6,7,8,9,10}
int *b = *(&a[3] + 2);
4. Write macro which will return minimum of two given numbers.
5. You have value in "a" stored as big endian, write code to change its value to little endian.
6. Is the following function interrupt service routine?
unsigned int isr_timer0(int value){
printf("Output: %d\n", value);
return value + 10;
}
6. Given function which fill array with natural number sequence. Does the function returns number of written items?
unsigned int * fillNumber(unsigned int *pBuffer, unsigned int n) {
unsigned int i;
for(i = 0; i < n; n++) {
pBuffer[i] = i + 1;
}
return &i;
}
B. Interview
Introduce yourself.
How you will debug multi-thread application.
Do you have any experiences with linux kernel side development?
What kind of ARM platforms do you know?
What is the difference of standard kernel and RTOS kernel of Linux?
How do you change priority of some process?
What type of logic analyzer will you use?
What are the difference between logic analyzer and oscilloscope?
What types of soft-cores for FPGA do you know?
What it TPM? (Trusted Platform Module.)
What are you experiences with Linux security?
How you will store passwords on some system?