Senior Linux Embedded System Software Engineer
Key Responsibilities:
Backend Development and Optimization • Design and implement high-performance backend components, services, and libraries in C/C++/Python. • Develop modular and reusable software libraries with clear APIs and documentation. • Optimize memory usage, CPU cycles, and application performance through advanced debugging and profiling techniques. • Develop multi-threaded and asynchronous applications using POSIX threads, Boost, or similar libraries. System Design and Architecture • Architect and build scalable, distributed backend systems to meet complex business requirements. • Work on low-latency systems, implementing efficient networking protocols such as TCP, UDP, and custom protocols. • Contribute to the design of RESTful or binary APIs, ensuring secure and seamless communication between components. Embedded and System-Level Programming • Write and optimize system-level code for Linux environments, focusing on performance and reliability. • Develop hardware-interfacing applications, including booloader, drivers and kernel. • Handle memory management, inter-process communication (IPC), and shared resources in constrained environments. Performance Tuning and Debugging • Perform low-level profiling and tuning of applications using tools like perf, VTune, gprof, or Cachegrind. • Optimize memory management using custom allocators, object pooling, and stack memory usage. • Use advanced debugging techniques, such as core dumps, stack traces, and hardware breakpoints. • Identify and eliminate bottlenecks in CPU-bound, memory-bound, or I/O-bound processes. • Tune compiler settings and write efficient algorithms to achieve optimal performance. • Debug complex issues in production systems using gdb, strace. Networking and Protocol Development • Develop efficient network protocols and manage socket programming for server applications. • Implement and troubleshoot networking layers, including SSL/TLS, WebSocket, and HTTP/2. • Develop custom communication protocols for specialized use cases, such as real-time streaming or IoT. • Optimize networking stacks using socket programming, zero-copy mechanisms, and protocol offloading. • Collaborate on the design of custom communication protocols for real-time or distributed systems. • Familiar with Layer2 802.1Q, VLAN, bridging, spanning tree, LLDP, LACP protocols. • Familiar with Layer3 Router, Firewall, ACL protocols. • Familiar with 802.11 wireless protocols. Testing and Quality Assurance • Write robust unit tests using frameworks like Google Test (gtest) or Catch2. • Perform system-level testing to ensure reliability in production environments. • Establish continuous integration pipelines for automated testing and deployment of C/C++/Python codebases. Security and Compliance • Implement secure coding practices to prevent vulnerabilities such as buffer overflows, race conditions, and memory leaks. • Implement secure transport protocols (SSL/TLS) and encrypt sensitive data at rest and in transit. • Design fault-tolerant systems with redundancy, checkpointing, and automatic failover mechanisms. • Perform threat modeling and integrate security measures into the development lifecycle. • Ensure backend systems are secure from common vulnerabilities (e.g., OWASP Top 10). Integration with Hardware and External Systems • Develop backend services that interface with hardware or IoT devices, handling real-time data streams. • Manage communication with hardware peripherals via protocols like SPI, I2C, or CAN. Continuous Improvement and Innovation • Stay updated with advancements in C/C++/Python standards and emerging technologies. • Contribute to open-source projects or internal frameworks. • Propose innovative solutions to improve development workflows, system performance, or user experience.