You are on page 1of 7

INTERVIEW QUESTIONS 1.Do you think it works? If not, what is problem?

int month=5; if (month=1) printf("January"); else printf("Not January"); 2.Do you know stack? Which one will be allocated in stack? (variables below) int a=5; int b[5]; void elloh(char *c, char *d) { char e[5]; char *g=NULL; g = (char*) malloc(10); g = "hello hello"; printf("%d", sizeof(g)); printf("%d", sizeof(*g)); } void f(char *a, char *b) { b=a; } char *p_a, *p_b; int main (void) { p_a = "hello"; f(p_a,p_b); printf("%s", p_a); printf("%s", p_b); getchar(); } 3.What will be printed? unsigned char c; int main (){ for (c = 0; c < 999; c++) printf ("%d",c); } 4.Is there any problem? #include <stdio.h> #include <stdlib.h> #include <string.h> void myfunction(char *q){ memcpy (q ,"hello",5); } int main(){ char * p; myfunction(p); printf(p); } 5. In the following program: #include <stdio.h>

#include <stdlib.h> #include <string.h> void myfunction(char *q){ q = (char*)malloc(8); memcpy (q ,"hello",6); } int main(){ char *p; myfunction(p); printf(p); getchar(); } a. Is there any problem? b. What should we do to have "hello" printed out? 6. In the following program: #include <stdio.h> #include <stdlib.h> #include <string.h> void myfunction(char *q){ int i ; for(i= 0; i <1000; i++){ q = (char*)malloc(8); memcpy(q, "hello", 6); printf(q); } } int main(){ char * p; myfunction(p); getchar(); } a. Is there any problem ? b. with Ram = 2000 byte, is there any problem? c. Where does myfunction stay at? 7. Where #include #include #include are these variables stored? <stdio.h> <stdlib.h> <string.h>

int a = 5; int d; char b[6] = "hello"; const int c = 4; void myfuntion(){ static int g = 5; const int h = 6; char i; } int main (){ static int d = 6; const int e = 3;

char *f; f = (char*)malloc(5); myfuntion(); } 8. What does the function do? Is there any problem? int divide (int a, int b) { return b/a; } 9. In the following program: int a = 0; if (a = 0) { printf("January"); } else { printf("Not January"); } a. What is printfed? b. If we change 2 lines int a = 0; if (a = 0) To: int a = 6; if (a = 6) -> what happens? c. If we change 2 lines int a = 0; if (a = 0) To: int a = 6; if (a = 5) -> what happens? 10.In the following program? #include <stdio.h> #include <stdlib.h> #include <string.h> void AssignString(char *str){ str = "This is the 2nd string"; } int main(){ char *abc = "This is original string"; AssignString(abc); printf(abc); getchar(); } a. What is printed out? b. If we want to have AssignString function works correctly ("This is the 2nd st ring" to be printed out), how should we change? 11. Is there any problem? unsinged char Add(uchar a, uchar b) {

return (a + b); } 14. What will be printfed? int main(){ int i = 10; while (i) { printf("%d", --i); } } 12. What will be printfed? char text[4] = "abcd"; printf("%s", text); 13. What will be printfed? #include <stdio.h> #include <stdlib.h> #include <string.h> void func_a() { static int i = 0; i++; printf("%d", i); } int main() { for (int i = 0;i<10;i++) } 14. In this program: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char array[20]; for (int i = 0;i<20;i++) array[i] = i; int* p = array; p++; p++; printf("0x%x", *p); } a. Is there any problem? b. If you fix the issue above, what will be printed out? 15. What will be printed? unsigned int x; for (x = 10; x >=0; x--) printf("%d",x); 16. How does the function work? Where are variables allocated?

func_a();

int a; char* b; const char c[20] = "I am a string"; void func(char d, int c, char* f){ int g=0; static int h = 2; char *i = NULL; i = (char*)malloc(20); strcpy(i, "Hello"); return; } int main (){ int j, k; char *l; func(j,k,l); } 17. What is printed out? typedef struct { char x; int y; }mystruct; int main (){ printf("%d", sizeof(mystruct)); } 18. Is there any problem with comparing 2 floating point values? double a, b; ... if(a == b)... 19. Is there any problem with following function? int copy( char *scr, char *dst, unsigned int size) { char *s1; while(size--) { *s1++ = *scr++; *dst++ = *s1; } if(256/size) return 0; else return 1; } 20. What is linked list? Can you write a program to revert a linked list? 21. What is Endianess? Write a program to convert a "unsigned int" number from L ittle-Endian -> Big-Endian? 22. Add two number use operator &,^,|,!, do not use "+" 23. There are 2 linked lists called P and Q. Write a program to create a linked list S from those 2 ones in increment order 24. n is an unsinged int number (32 bits). Write a program to count number of bi t 1 of n. For example n = 0b0000000000101 => there are 2 bits 1 25. n is an unsinged int number (32 bits). Write a program to change byte 0 with byte 3, byte 1 with byte 2.

26. Write a program to input one string, then print out the part of string start from "SOF" and finish at "EOF". For example, if user put "This if what SOP I wa nt to show EOF xxx", the program will print out " I want to show " 27. Write a program to multiply two matrix? 28. What is volatile variable? 29. What is "static" keyword for? 30. What is function pointer array? Write a program to demostrate function point er array. 31. What is software timer? Write a program to implement software timer 32. What is asynchronous timer, what is synchronous timer? Answer: There is not a clear definition about this, but it can be: - Synchronous timer is a timer that happens (timeout, overflow...) periodicly. I t is not necessary to re-arm for synchronous timer. In opposition, asynchronous timer event is happened one time only, and need to be re-armed before it can be happened again. Or - Synchronous timer/counter is timer/counter that is increased by system clock ( or clock that is derivated from system clock). Asynchronous timer/counter is inc reased by external clock (that may not be periodicly) 33. What is vector table? 34. What is ISR? Could you explain what the system does when an interrupt happen s? 35. What is nested interrupt? 36. What is re-entrant interrupt? 37. What is interrupt chaining? Answer: http://forums.arm.com/index.php?/topic/12745-abort-some-questions-of-arm-interru pt/ Interrupt chaining: (term with multiple meaning) means one of two things; firstl y checking for a new pending interrupt before returning from interupt context (i .e. a scenario which would could waste time by unstacking and then straight away restacking the same registers); or secondly, linking handlers together (typical ly by replacing the interrupt vector with the new handler to run, followed by th e new handler calling the original handler). For the first definition (checking for new interrupts before returning), CortexM3 already deals with this automatically in hardware, and will perform a "tail-c hain" from the end of one interrupt to the entry of another without performing u nstacking and restacking. The second definition is less useful on a closed/embedded platform; the typical example of this type of chaining used to be the DOS TSR (terminate and stay resi dent) handlers for things like adding special key bindings e.g. "holding CTRL+AL T+A+B brings up my special program". In this scenario, the TSR would replace the keyboard interrupt vector with its own address, giving itself the chance to che ck for the magic keysequence, but would then chain onto the original handler if it didn't find what it was looking for. This kind of system may also exist where multiple peripherals share a single interrupt line/handler. Replacing the interrupt vector on Cortex-M3 is simply a matter of changing the p ointer value in the vector table in memory, though on most MCUs this would likel y also require the vector table to be relocated to RAM first. 37.1 What is Harvard architecture? What is Von Neumann architecture? 37.2 What is EABI? How functions' arguments are passed and return values retriev ed? 37.3 What is ADC? What is difference between single-ended and differential input s? 37.4 Can you compare SPI and I2C? 38. What is RTOS?

39. Can you write a program using RTOS to blink 2 LEDs, one at 1Hz, the other on e at 1.5Hz frequency? 40. What is semaphore? 41. What is mutex? What is difference between mutex and binary semaphone? 42. What is mail box? 43. What is message queue? 44. What is reentrant function? How to write a reentrant function? 45. What is recursive function? What need to be considered when use this functio n? 46. What is deadlock and how to prevent? 47. What is priority inversion and how to prevent? 48. What is mutual exclusion? 49. What is critical section? 50. What is Task? Each task uses one stack or not? 51. How many stack is used in system? 52. 53. 54. 55. 56. What What What What What is is is is is the virtual memory? the memory protection? different between user and kenel mode? mutithread? blocking call, non-clocking call?

57. How One picture can be displayed on screen? 58. What is a pixel? How many bits are needed for one picture?

You might also like