Strong hands-on experience in C++ programming.
Good understanding of complex software architectures with design patterns.
Working experience with Linux system programming (IPC mechanisms, System Calls, driver interfacing, multithreading technologies). Experience in device drivers.
Good debugging skills using GDB, core-file/crash dump analysis.
Good experience in understanding requirement and prepare design flows. Should be able to participate & contribute to requirement & design discussions.