小米Linux应用开发工程师
社招全职3年以上A79330地点:武汉状态:招聘
任职要求
掌握Linux API使用,C++语言,CMAKE编程,并熟练使用STL,熟悉各种设计模式,3年以上嵌入式系统C++开发经验; 掌握Linux C/C++开发环境,熟悉基本数据结构及常用算法,熟练掌握gcc, gdb,熟练Linux下的多线程编程,进程间通信机制 ; 熟悉linux文件系统,内存管理,网络IO,进程间RPC,等linux下的开发技术; 熟悉shell,具备一定的shell编程能力; 有扫地机器人相关工作经验者优先,有ROS开发经验者优先。
工作职责
岗位职责: 负责嵌入式Linux应用软件、及系统组件开发及维护; 负责项目需求分析,编写软件设计文档、结构设计、编码等工作; 配合项目组其他模块业务完成系统的联调和集成;
包括英文材料
Linux+
https://ryanstutorials.net/linuxtutorial/
Ok, so you want to learn how to use the Bash command line interface (terminal) on Unix/Linux.
https://ubuntu.com/tutorials/command-line-for-beginners
The Linux command line is a text interface to your computer.
https://www.youtube.com/watch?v=6WatcfENsOU
In this Linux crash course, you will learn the fundamental skills and tools you need to become a proficient Linux system administrator.
https://www.youtube.com/watch?v=v392lEyM29A
Never fear the command line again, make it fear you.
https://www.youtube.com/watch?v=ZtqBQ68cfJc
C+++
https://www.learncpp.com/
LearnCpp.com is a free website devoted to teaching you how to program in modern C++.
https://www.youtube.com/watch?v=ZzaPdXTrSb8
设计模式+
https://liaoxuefeng.com/books/java/design-patterns/index.html
设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。
[英文] Design Patterns
https://refactoring.guru/design-patterns
Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code.
https://www.youtube.com/watch?v=NU_1StN5Tkk
Design Patterns tutorial explained in simple words using real-world examples.
C+
https://www.freecodecamp.org/chinese/news/the-c-beginners-handbook/
本手册遵循二八定律。你将在 20% 的时间内学习 80% 的 C 编程语言。
https://www.youtube.com/watch?v=87SH2Cn0s9A
https://www.youtube.com/watch?v=KJgsSFOSQv0
This course will give you a full introduction into all of the core concepts in the C programming language.
https://www.youtube.com/watch?v=PaPN51Mm5qQ
In this complete C programming course, Dr. Charles Severance (aka Dr. Chuck) will help you understand computer architecture and low-level programming with the help of the classic C Programming language book written by Brian Kernighan and Dennis Ritchie.
数据结构+
https://www.youtube.com/watch?v=8hly31xKli0
In this course you will learn about algorithms and data structures, two of the fundamental topics in computer science.
https://www.youtube.com/watch?v=B31LgI4Y4DQ
Learn about data structures in this comprehensive course. We will be implementing these data structures in C or C++.
https://www.youtube.com/watch?v=CBYHwZcbD-s
Data Structures and Algorithms full course tutorial java
算法+
https://roadmap.sh/datastructures-and-algorithms
Step by step guide to learn Data Structures and Algorithms in 2025
https://www.hellointerview.com/learn/code
A visual guide to the most important patterns and approaches for the coding interview.
https://www.w3schools.com/dsa/
GCC+
https://gcc.gnu.org/onlinedocs/gcc-15.2.0/gcc/
This file documents the use of the GNU compilers.
https://www.seas.upenn.edu/~ese5320/fall2022/handouts/_downloads/788d972ffe62083c2f1e3f86b7c03f5d/gccintro.pdf
The purpose of this book is to explain the use of the GNU C and C++ compilers, gcc and g++.
https://www3.ntu.edu.sg/home/ehchua/programming/cpp/gcc_make.html
The original GNU C Compiler (GCC) is developed by Richard Stallman, the founder of the GNU Project.
GDB+
[英文] Debugging with GDB
https://betterexplained.com/articles/debugging-with-gdb/
A debugger lets you pause a program, examine and change variables, and step through code.
https://code.visualstudio.com/docs/cpp/cpp-debug
After you have set up the basics of your debugging environment as specified in the configuration tutorials for each target compiler/platform, you can learn more details about debugging C/C++ in this section.
https://opensource.com/article/21/3/debug-code-gdb
Troubleshoot your code with the GNU Debugger.
https://www.brendangregg.com/blog/2016-08-09/gdb-example-ncurses.html
gdb is the GNU Debugger, the standard debugger on Linux.
多线程+
https://liaoxuefeng.com/books/java/threading/basic/index.html
和单线程相比,多线程编程的特点在于:多线程经常需要读写共享数据,并且需要同步。
https://www.youtube.com/watch?v=_uQgGS_VIXM&list=PLsc-VaxfZl4do3Etp_xQ0aQBoC-x5BIgJ
https://www.youtube.com/watch?v=IEEhzQoKtQU
https://www.youtube.com/watch?v=mTGdtC9f4EU&list=PLL8woMHwr36EDxjUoCzboZjedsnhLP1j4
https://www.youtube.com/watch?v=TPVH_coGAQs&list=PLk6CEY9XxSIAeK-EAh3hB4fgNvYkYmghp
https://www.youtube.com/watch?v=xPqnoB2hjjA
This video is an introduction to multithreading in modern C++.
https://www.youtube.com/watch?v=YKBwKy5PrpQ
Rust threading is easy to implement and improves the efficiency of your applications on multi-core systems!
RPC+
https://javaguide.cn/distributed-system/rpc/rpc-intro.html
为什么要 RPC ? 因为,两个不同的服务器上的服务提供的方法不在一个内存空间,所以,需要通过网络编程才能传递方法调用所需要的参数。并且,方法调用的结果也需要通过网络编程来接收。
https://www.youtube.com/watch?v=S2osKiqQG9s
This video is part of an 8-lecture series on distributed systems, given as part of the undergraduate computer science course at the University of Cambridge.
Bash+
[英文] The Bash Guide
https://guide.bash.academy/
A quality-driven guide through the shell's many features.
https://www.youtube.com/watch?v=tK9Oc6AEnR4
Understanding how to use bash scripting will enhance your productivity by automating tasks, streamlining processes, and making your workflow more efficient.
ROS+
https://www.youtube.com/watch?v=92Zz5nnd41c&list=PLk51HrKSBQ8-jTgD0qgRp1vmQeVSJ5SQC
https://www.youtube.com/watch?v=HJAE5Pk8Nyw
Ready to learn ROS2 and take your robotics skills to the next level?
https://www.youtube.com/watch?v=MWKnMPX0Yjg&list=PLU9tksFlQRircAdEplrH9NMm4WtSA8yzi
Do you want to know more about ROS the Robot Operating System?
相关职位
社招
1. 负责端侧linux系统应用软件构架及核心组件的设计和开发工作 2. 协同算法工程师、BSP工程师完成核心应用的开发、优化、部署 3. 负责OTA、通信框架、媒体应用、系统服务等核心端侧应用软件的设计、开发工作 4. 遵循系统工程和软件工程实践,依照开发流程进行团队协作,提高研发效率和质量
更新于 2025-05-20

社招2年以上
负责在 X86/ARM 平台上进行 C++ 程序的编写或移植 负责在多平台上进行性能调优 负责优化整体系统性能,包括吞吐量和延迟 协助进行传感器性能评估、自动驾驶车辆传感器系统设计
更新于 2025-08-07
校招算法与软件
1. 参与Linux环境下C++/Go等语言的服务器程序开发; 2. 协助设计和实现网络通信模块(如TCP/IP、HTTP/WebSocket等); 3. 学习并参与分布式系统的开发与优化(如K8S); 4. 协助进行性能调优、内存管理及多线程编程; 5. 编写自动化测试脚本,参与CI/CD流程建设。