C Programming
1. Pointers
2. Bit-arithmetic
3. Basic data structures(list,queue,stack,hash table, array).Data structure selection for different situations: time complexity/memory useage tradeoffs
4. Notions of virtual address and physical address and how pointers can be used to access them
5. Differences between libray calls versus system calls
6. How various commonly used routines like - malloc(), free() , printf() are implemented
7. If you have networking background - get an idea of how typical networking routines like connect(), bin(), recv(), sento(),recvfrom() are implemented.
Operating Systems(linux,unix(bsd),vxWorks)
1. Get an idea of common OS services are implemented
- what is involved in process/task/thread creation
- what is involved in locking or unlocking a semaphore
- what is involved in implementing a sleep() routine
2. If you have networking background, get an idea of how packets traverse the stack from wire to socket buffers through different execution contexts like interrupts and/or tasks and/or tasklets and/or bottom-halfs and/or work-queues and/or processes and/or softirqs and/or ISRs. An idea of what are the typical API used in transition between network stack layers and different contexts of execution.
3. Get and idea of the type of locking to use for a given mutual exclusion requirement- for example when to use semaphore versus spinlock or when to use spinlock versus irq_disable/enable. An idea of locks are eligible for use in which execution contexts.
Architecture(x86/MIPS/PowerPC/ARM/any other 32-bit or 64-bit processor)
1. Differences between virtual memory and physical memory
2. What is segmentation fault or page fault and physical memory
3. what is involved in DMA transfer
4. How is a spinlock implemented - what assembly instructions
5. Differences between 32-bit and 64-bit CPUs and impact of that on software and how software can be designed to be portable.
6. Commonly used compiler flags and optimizations. Impact of this options(+ve or -ve) on program execution.
1. Pointers
2. Bit-arithmetic
3. Basic data structures(list,queue,stack,hash table, array).Data structure selection for different situations: time complexity/memory useage tradeoffs
4. Notions of virtual address and physical address and how pointers can be used to access them
5. Differences between libray calls versus system calls
6. How various commonly used routines like - malloc(), free() , printf() are implemented
7. If you have networking background - get an idea of how typical networking routines like connect(), bin(), recv(), sento(),recvfrom() are implemented.
Operating Systems(linux,unix(bsd),vxWorks)
1. Get an idea of common OS services are implemented
- what is involved in process/task/thread creation
- what is involved in locking or unlocking a semaphore
- what is involved in implementing a sleep() routine
2. If you have networking background, get an idea of how packets traverse the stack from wire to socket buffers through different execution contexts like interrupts and/or tasks and/or tasklets and/or bottom-halfs and/or work-queues and/or processes and/or softirqs and/or ISRs. An idea of what are the typical API used in transition between network stack layers and different contexts of execution.
3. Get and idea of the type of locking to use for a given mutual exclusion requirement- for example when to use semaphore versus spinlock or when to use spinlock versus irq_disable/enable. An idea of locks are eligible for use in which execution contexts.
Architecture(x86/MIPS/PowerPC/ARM/any other 32-bit or 64-bit processor)
1. Differences between virtual memory and physical memory
2. What is segmentation fault or page fault and physical memory
3. what is involved in DMA transfer
4. How is a spinlock implemented - what assembly instructions
5. Differences between 32-bit and 64-bit CPUs and impact of that on software and how software can be designed to be portable.
6. Commonly used compiler flags and optimizations. Impact of this options(+ve or -ve) on program execution.