Chennai, India
Full-Time
3-5 Years Exp
Mindgrove makes silicon chips. Our first SoC (system on chip) is called Secure IoT, and it’s India’s first commercial-grade high-performance microprocessor. We intend to make hundreds of different chips and modules and sell hundreds of millions worldwide. In the process, we intend to be India’s first fabless chip design house operating globally.
Your mission is to imagine and create a large set of designs based on our chips so that engineers across industries can use our chips effortlessly. This critical piece of work forms the bridge between us and the industry.
In the first six months, you will create custom designs for these products - smart locks, smart watches, motor controllers, smart meters, access control devices, battery management systems for EVs, industrial automation systems and robot controllers.
As per industry standards for the hardware industry, plus ESOP.
Most of your week will involve working with the applications team to design solutions. You will need to work with the sales team to understand customers’ technical requirements and support them when they transition to our chips. This might involve meeting them in their office or hosting them in our office. You may have to help customers set up field tests and ensure their products work as expected.
In this role, you will be closely coordinating with three teams
Travel might be involved, but much time will be spent in our head R&D office in the IIT Madras Research Park in Chennai. You will have to invest time and energy every week to improve your technical knowledge of the field, our products, and those of our prospects.
Fill the form with your details and the answers to the pre-interview test below (submit a public URL for your pre interview questions in PDF Format)
(Use C programming language)
typedef void (*Callback) (int value);
void register_callback(int command, Callback *callback);
void run_function(int command, int value);
/* Assume that the usage code is as follows */
void callback_command1(int value)
{
// ...
}
void callback_command2(int value)
{
// ...
}
// There are callbacks for each of several commands
int main()
{
register_callback(1, callback_command1);
register_callback(2, callback_command2);
// ...
int command = 1; // or 2, 3,...
run_function(command, value);
return 0;
}
/* Answer the following questions:
- Write an implementation of register_callback that will maintain the collection of commands and associated values
- Write an implementation of run_function that will call the appropriate command with the value as a parameter
- Can you rewrite this system using pure static function calls (ie, no function pointers)?
*/