Skip to content

Latest commit

 

History

History
52 lines (36 loc) · 2.03 KB

File metadata and controls

52 lines (36 loc) · 2.03 KB

Home Assignment: Embedded Linux / C++ for Six Robotics

Welcome to the home assignment for Embedded Linux / C++ roles at Six Robotics.

Note: Please do not share this task or your solution with anyone outside of Six Robotics.

This task is intentionally open-ended and under-specified. Do your best to solve it as intended by the author. Please document any assumptions you make and note any shortcomings in your solution.

Limit the scope of your work to approximately one evening, focusing on demonstrating your skills and versatility not only as a C++ expert, but also as well-rounded software engineer. Stubs and empty implementations can be used to speed up your work. However, ensure that your solution builds and runs.

It is not so important exactly what you implement, what we want to see is how you think and deliver as an engineer, and that we have a good foundation for technical discussion and code review in the interview.

Task

Your task is to make a complete delivery on a project that aims to release a C++ library publicly under the MIT license.

The library should implement the tools needed to transfer data between two programs. The library should also include an example producer and a consumer binary capapable of transfering a file. The library should be event driven.

Things to consider

  • Ease of use
  • Maintainability
  • Compatibility with standard features such as ranges and algorithms
  • Value semantics vs pointer semantics
  • Error handling (both compile-time and runtime)
  • Thread safety
  • Memory usage
  • Performance

Use one or more linux ipc mechanisms to solve the task

  • Named pipe (FIFO)
  • UNIX domain socket
  • Shared memory
  • Huge pages
  • epoll / poll / select

The library should only depend on the C++ standard library, and you are free to use any version of C++ that you prefer.

Please send your solution to us as a ZIP file within 08:00 the day of the interview.

For the technical interview you will need to bring a laptop with development environment, so you can present, run and modify your assignment.

Good luck! :)