Career direction planning for C++ enthusiasts

1. C++ server programmer (streaming media backend, game backend, high-performance server backend)

Basic requirements for employment:

  • 1. Proficient in C++, STL, Linux, etc., and familiar with design patterns;
  • 2. Proficient in a scripting language (Lua, Python, Perl, etc.);
  • 3. Have a certain understanding of multi-threaded environment programming and be able to independently complete the development, maintenance and optimization of server-side modules;
  • 4. Proficient in the development, maintenance and performance optimization of MySQL database;

Abilities with more than 1 year of server development experience:

1. More than one year of server development experience, familiar with C++ language;

2. Familiar with TCP/IP protocol and network programming;

3. Familiar with standard SQL language, preferably Mysql;

4. Familiar with Linux and proficient in basic Linux operating commands;

More than 2 years of working ability in C++ game server development:

  • Have a comprehensive understanding of TCP protocol-related development;
  • Have a comprehensive understanding of issues related to multi-threaded development;
  • Priority will be given to candidates with complete C++ mobile game server development experience;
  • Applicants with development experience related to Linux platform will be given priority;

Abilities with more than 3 years of server development experience:

Base:

  • 1. Proficient in C++ programming
  • 2. Have experience in mobile game or PC online game development, and those with complete mobile game development experience will be given priority;
  • 3. Be proficient in the Socket protocol and understand the server framework structure of distributed load and cluster types;
  • 4. Proficient in database design;
  • 5. Familiar with Python or Lua language.

More than 3 years of experience in online game backend development:

Base:

  • Proficient in the Linux operating system and have solid Linux environment programming capabilities;
  • Proficient in C++ programming language and have rich experience in object-oriented programming;
  • Proficient in network programming and have experience in developing high-concurrency systems;
  • Familiar with MYSQL or other large databases, and able to quickly complete high-performance database design according to needs;

1. Bachelor degree or above, computer, communications and other related majors;
2. More than 3 years of C/C++ development experience under Unix/Linux, familiar with commonly used data structures and algorithms, proficient in using standard libraries such as STL; 3. Familiar with
Unix/Linux Commonly used architecture design methods, familiar with streaming media network protocols and formats, including rtmp, rtsp, sip protocols, and mp4, ts streaming media format encapsulation; 4. Familiar with Unix
/Linux operating system principles and common tools, familiar with database management such as Mysql/Oracle , development, SQL tuning;
5. Comprehensive software knowledge structure (operating system, software engineering, design pattern, data structure, database system, network security);
6. Applicants with experience in large-capacity communication systems and large-scale Internet backend development are preferred.

  • 1) Computer-related major, proficient in C++ language; familiar with common data structures and algorithms;
  • 2) Familiar with Socket, proficient in TCP/IP protocol and programming;
  • 3) Have the ability to write Shell and Makefile, and be proficient in using basic Linux commands;
  • 4) Familiar with network communication programming under the Linux operating system and its environment (processes, threads, memory management, message mechanisms, etc.);
  • 5) Be familiar with audio and video encapsulation and codec technology, and understand mainstream multimedia standards, such as TS, MP4 encapsulation, H.264, H.265, FLV, MPEG2, MP3, ACC encoding, etc.;
  • 6) Familiar with streaming media transmission protocols such as HTTP/RTP/RTSP/RTMP/HLS, and the docking processing of audio and video decoding modules and streaming media protocols;
  • 7) Those with project management experience in the radio and television industry, and those with CDN development experience will be given priority;

More than 3 years of audio and video backend development experience:

1. Bachelor degree or above, familiar with C/C++ language, more than 3 years of experience in streaming media system development 2.
Familiar with common multimedia data decoding formats, familiar with H264, RTMP, video slicing, audio synchronization and other technologies;
3. Familiar with TCP/ IP protocol, familiar with multimedia related protocols (HTTP, RTSP, RTMP, RTP/RTCP, P2P, SIP, etc.);
4. Have a deep understanding of the principles of Internet video playback, and have practical experience in using frameworks such as ffmpeg;
5. Have experience in live video and on-demand video , experience in video conferencing, monitoring and security, etc.
6. Familiarity with Nginx/Squid module development will be preferred, experience in building streaming media servers such as FMS, experience in P2P system development, and experience in the design and development of well-known and excellent video product server will be preferred.

2. Application development engineer windows/linuxc++ (QT and MFC, partial to front-end)

1. More than 3 years of Visual C++ development experience
2. Proficient in C, C++, ATL, COM and other programming technologies.
3. Proficient in Windows system programming and familiar with window, network and multi-threading technologies.

More than two years of experience in QT application software development for embedded or windows platforms.
Familiar with QT cross-platform framework, QT graphics library and corresponding development tools. Have participated in at least one complete QT project.
Have foundation and experience in data structure, object-oriented, multi-threading and memory management.
Master the window/wince development environment
. Be familiar with common code management tools, such as SVN, Git, etc.

1. More than 2 years of C++ development experience;
2. Rich experience in client development under the Windows development platform, familiar with the principles of the Windows operating system;
3. Familiar with Windows API calls, familiar with MFC classes, STL standard library, boost library, etc. ;
4. Familiar with the Windows message system, familiar with commonly used data structures and algorithms, and the ability to conduct independent research;
5. Proficient in using MFC exception classes to capture Windows structures, able to quickly locate exceptions in release versions of programs, and help team members to quickly locate Crash, memory leak, GDI resource leak, and can use remote debugging to locate problems;
6. Especially good at using various debugging, logging, and analysis tools to debug code developed by clients under Windows, find BUGs, find problem causes, and fix BUGs ;
7. Those with experience in using the following debugging tools: spx++, bugtrap, crashreport, log4plus, gflags, bondcheck, reverse engineering ollydbg and other debugging will be given priority.
Bachelor degree or above, computer or communication related majors are preferred;

More than 1 year of C++/Qt development experience;
experience in cross-platform Qt development under Linux and Windows;
experience in socket programming, able to write TCP, UDP or serial communication programs;
proactive work, team spirit and good communication skills;
have Applicants with experience in using version control tools are preferred.
2. Solid computer science skills, good command of basic data structures and algorithms, and good document writing skills;
3. Proficient in C/C++ language development and debugging skills under Windows/Linux/Mac platforms, with experience in cross-platform development Candidates with experience are preferred;
4. Candidates who are proficient in MFC or QT development, familiar with GDI/GDI+/OpenGL/DirectX and other technologies and have relevant project experience are preferred;

1. Bachelor degree or above, computer or communication related majors are preferred;
2. More than 3 years of actual C++ project experience;
3. Familiar with C++ STL and have a certain understanding of the C++ 11/14 standard;
4. Proficient in socket programming and able to write complex TCP, UDP or serial communication programs;
5. Master the development of graphical interface programs under the Windows platform, and be familiar with MFC, GDI/GDI+;
6. Proficient in writing multi-threaded programs;
7. Proficient in using Git;
8. Proficient in using MySQL Connector;
9 , be proactive in work, have team spirit and good communication skills;
10. Applicants with actual Qt project experience are preferred; candidates with DirectX development experience are preferred; candidates with streaming media-related development experience are preferred.

3. C++ game development (game direction, familiar with game engine cocos2dx, etc.)

1. Familiar with Win32API, familiar with WIN32/VS development platform, familiar with C++ development libraries (STL/MFC/Qt, etc.), familiar with common data structures and algorithms; 2. Proficient in C++ programming, proficient in network programming, familiar with
game server-side architecture and client Code, familiar with database development;
3. Applicants who understand the Netfox platform and have successful development experience are preferred;
4. Applicants with COCOS2DX development experience are preferred;

1. More than 2 years of online game server development experience, preferably those who have fully experienced the development process of large-scale casual online games; 2. More than 3
years of C++ development experience in actual projects, with a deep understanding of object-oriented design and development ideas;
3. Proficient in Linux C/C++ software development under the operating system; familiarity with basic data structures and mainstream data algorithms, understanding of chess and card algorithms, etc. is preferred.
4. Proficient in distributed system design principles, familiar with TCP/IP network models, and familiar with network asynchronous communication;
5. Have experience in the design and development of C/S structured software systems;
6. Familiar with database design and SQL language, preferably MySql database ;
7. Familiar with open source technologies such as Redis and MQ is a plus;
8. Familiar with protocols such as protocolbuffer and json;
9. Familiar with mainstream software development processes, and experience in managing agile development teams such as Scrum is a plus; have strong communication and coordination skills.

4. C++ reverse development engineer (network security, hacker attack and defense, cracking, etc.)

1. Bachelor degree or above;
2. Proficient in C/C++, with more than two years of relevant development experience;
3. Proficient in assembly language, with strong program disassembly technology and reverse analysis capabilities;
4. Familiar with PE file format, proficient in Master debugging and reverse engineering tools such as SoftIce, IDAPro, OllyDebug, and WinDBG.

1. More than two years of relevant project development experience, love software development;
2. Familiar with X86 assembly, C/C++ language; familiar with PE file format;
3. Proficient in using debugging and reverse tools such as OD, WinDbg, IDA Pro;
4. Familiar with How viruses, Trojans, and malware work;
5. Understand common encryption and decryption algorithms;

1. More than 3 years of experience in embedded software development;
2. Proficient in assembly and C language programming;
3. Familiar with the working principles of ARM, PPC and other CPUs; familiar with at least one series of microcontroller programming.
4. Familiar with operating system principles such as Linux, VxWorks, Threadx, etc.;
5. Applicants with experience in reverse analysis algorithms or communication protocol data will be given priority.
6. Applicants with printer motherboard development experience will be given priority

1. Bachelor degree or above, majoring in computer, electronics or communications, and more than one year of relevant work experience; 2.
Familiar with disassembly under windows or Android platforms, and familiar with X86 and arm assembly instructions;
3. Proficient in software reverse static analysis, Dynamic debugging, code tracking and other technologies;
4. Proficient in using OllyDBG, IDAPro, GDB and other reverse engineering tools;
5. Familiar with anti-tracing debugging technology and shelling technology;
6. Understand various general encryption and decryption algorithms;
7. Have andriod, iOS anti-virus software Assembly experience preferred.

5. Intelligent hardware and wearable devices (intelligent hardware VR/C++,)

1. Bachelor's degree in computer science, mathematics, electronic engineering or related majors;
2. More than 5 years of software development experience, more than 2 years of experience in virtual reality development projects, preference will be given to those who are familiar with Unity3D engine architecture design; 3. Familiar with network
programming and multi-thread programming ;
4. Proficient in C/C++ and have more than 3 years of experience in C/C++ software development; 5.
Have experience in 3D graphics engine development;
6. Have in-depth research on physics engines and have experience in practical applications such as games Relevant practice;
7. Have an in-depth understanding of graphics knowledge, be proficient in using DirectX, OpenGL or Metal, and have relevant works.
8. Have a certain level of English and be able to read foreign academic documents.
9. Applicants with Oculus Rift, Samsung Gear VR, or HTC Vive development experience are preferred.

6. Embedded software engineer (C/C++, Linux platform, both soft and hard skills)

Familiar with the principles of cross-compilation and proficient in constructing/using cross-compilation tool chains

Familiar with Linux (x86, arm) kernel cutting, configuration, compilation and deployment

Be familiar with the composition of the Linux root file system, and be able to configure, compile, use tools such as buzybox to cut and construct the root file system according to actual requirements

Proficient in using C/C++ language for application programming under Linux

Be familiar with multi-process/multi-thread programming under Linux and understand the concepts and methods of synchronization/communication between processes/threads

Understand the principles and methods of kernel module programming under Linux, and be able to modify/add drivers in the kernel

Understand the configuration, compilation and deployment of bootloaders such as Uboot/GRUB/LILO

Learn about Socket programming

4Additional capabilities (optional requirements):

Linux kernel real-time evaluation and testing experience

Understand automotive electronics related communication protocols CAN/LIN/UDS/CCP/XCP, etc.

Understand the EtherCAT protocol and have relevant development/testing experience

2. More than three years of experience in embedded Linux driver development, with independent development experience and capabilities;

3. Proficient in operating Linux systems, familiar with C/C++ language, and related compilation and debugging technologies is a plus;

4. Proficient in driver development technology related to Linux platform and have relevant experience;

5. Proficient in bootloader transplantation, kernel pruning and other technologies.

7. Audio and video decoding (protocol optimization)

1. Familiar with audio and video coding and decoding algorithms, with more than one year of work experience in related fields;
2. Familiar with the ffmpeg architecture and able to transplant and optimize the system to mobile clients;
3. Familiar with RTMP, HLS and other streaming media live broadcast protocols (or Related protocols); those who are familiar with vlc or ffplay, mplayer architecture will be given priority;
4. Familiar with TCP/IP and Socket network programming;
5. Familiar with C/C++ development language;
6. Familiar with WINDOWS PC client software development

1. Master's degree in mathematics, sound processing, computer, signal processing, communication engineering or related majors and more than two years of work experience in related fields.
2. Have a good mathematical foundation and strong audio signal processing or algorithm development capabilities.
3. Be proficient in C language programming or matlab language, and be able to program and implement audio processing algorithms.
4. Strong paper retrieval and English professional literature reading skills.
5. Strong interpersonal communication and collaboration skills.

Candidates with one of the following development experiences will be given priority

1. Understand audio processing technology, and have conducted research and implementation of audio compression, echo cancellation, speech enhancement recognition and other algorithms
2. Familiar with common audio format files (mp3, wma, aac, ogg, ape, flacac3, dolby DTS, etc.)
3. Have carried out the development, transplantation and optimization of certain types of audio processing algorithms mentioned above on hardware platforms such as DSP, x86, FPGA or ARM.
2. Have in-depth research on VOIP and relevant experience, be familiar with VOIP server development (experience in asterisk source code development/optimization), and have experience in android and ios low-level development is a plus; 3. Have good mathematical skills, be proficient in C language, and be familiar with
ARM Architecture and related compilations;
4. Familiar with audio and video coding (such as WebRTC, speex, Opus, H264, MPEG, etc.), experience in audio/speech codec algorithm optimization and development, and deep understanding and unique insights into language enhancement algorithms.

  • a) Solid basic knowledge of computers and networks, and experience in network simulation and multimedia transmission development
  • b) Rich experience in video processing or image processing
  • c) Rich experience in deep learning and face recognition

1. Graduated from a major in computer digital signal processing.
2. Have more than 4 years of experience in developing video-related algorithms, and be familiar with video, image special effects and optimization technologies.
3. Proficient in C/C++, and familiar with basic digital image and video processing algorithm principles. Those who are familiar with OpenCV/OpenGL;
4. Those who are familiar with GPU-based algorithm design and optimization and parallel optimization experience are preferred;
5. Those who are familiar with video codec standards such as H.264 and FFMPEG are preferred;
6. Those who are familiar with streaming media transmission protocols such as rtmp are preferred.

Communication, automation, image processing, pattern recognition, video processing, signal and information processing and related majors;
2. Strong mathematical background

Have a certain understanding of intelligent video processing, and be familiar with face recognition, target detection and tracking, behavior analysis and other related technologies. Applicants with practical experience in related projects will be given priority;

Proficient in matlab, C/C++, and have good programming habits; possess relevant knowledge such as video processing, image processing, pattern recognition, DSP development, etc., and have fast programming implementation capabilities.

Proficient in reading relevant English papers and patents, and able to quickly implement programming;

Strong communication skills, good team spirit, and proactive in work.

Applicants with one of the following experiences will be given priority: experience in image quality adjustment for mobile phones, cameras and other equipment; experience in the research and development of image processing modules in digital display devices such as mobile phones, cameras, flat-panel TVs, projectors, etc.; experience in image signal processors (ISPs) R&D experience.

1. Bachelor's degree/master's degree or above in signal processing/pattern recognition/image processing;

2. Have no less than 1 year of experience in the design and development of video intelligent analysis algorithms;

3. Be able to skillfully apply c/c++ program development;

4. Be able to use machine learning, statistical learning or other mainstream intelligent analysis technologies to solve specific target recognition or behavior analysis problems;

5. Proficient in image/video algorithms in OpenCV;

6. Be proficient in reading English algorithms and other technical documents;

8. Image processing (machine vision, medical images, remote sensing images, portraits (beauty), etc.)

1. Design, development and debugging of image processing related algorithms (such as image tracking and positioning).

2. Bachelor degree or above in information electronics or computer related majors.

3. Have a good theoretical foundation of algorithms and data structures.

4. Have a good theoretical foundation of pattern recognition/machine learning.

5. Familiar with c/c and other related programming languages.

Bachelor's degree or master's degree or above, majoring in computer, electronic engineering, automation, etc.

Have a good theoretical foundation in image, vision and pattern recognition, and be proficient in some basic operations of image processing (histogram, integral image, intersection detection, feature point extraction, scaling, binarization, etc.);

Proficient in using C/C++, OpenCV, and Matlab, and have certain development and testing experience;

1. Familiar with basic image processing methods (edge ​​detection, area extraction, low-pass filtering, feature extraction);

2. Familiar with machine learning algorithms (such as LR, SVM, ANN, etc.) and deep learning algorithms CNN, etc.;

3. Those who are familiar with opencv and have development experience in moving target detection, feature extraction, and object recognition will be given priority;

4. Have relevant research or experience in OCR or word detection;

5. Familiar with the Linux development environment and any language such as C/C++/Python;

6. Have good communication skills, strong sense of responsibility, and be good at assisting and sharing;

7. Candidates who can proficiently read online English technical websites and technical standards will be given priority.

1. Master's degree or above in computer science, machine vision, machine learning and other related majors or directions;

2. More than two years of work experience in machine vision and image processing;

3. Proficient in C\C++, familiar with programming under Linux, familiar with OpenCV, and good coding habits;

4. Have solid foundation in the fields of machine learning, Bayesian filtering, machine vision, and image processing;

5. Familiarity with ROS, SLAM, TLD and other related systems and technologies will be given priority.

Based on the development of the Internet in recent years, the author has summarized several major development directions by searching the relevant requirements for C++ positions on major employment recruitment websites. A guide for growing C++ programmers. Of course, it is just a personal compilation and is for reference only.

Guess you like

Origin blog.csdn.net/MOON_YZM/article/details/130211121