C++ Developer
תחומי אחריות עיקריים:
- פיתוח ותחזוקה של ספריות ויישומים ב־C++ עבור Linux.
- בנייה וניהול של קבצי .so (ספריות משותפות בלינוקס) וחשיפתם לשימוש מתוך C# באמצעות P/Invoke, C++/CLI או שיטות אינטגרציה אחרות.
- הסבת קוד C++ קיים מ־Windows ל־Linux (שימוש ב־GCC/Clang).
- אופטימיזציה של קוד C++ קיים לשיפור ביצועים (עומסי CPU ועומסי קלט/פלט).
- כיוונון שימוש בזיכרון, צמצום דליפות זיכרון וביצוע פרופיילינג ודיבאג באמצעות כלי Linux.
- הבטחת תאימות, יציבות וביצועים גבוהים של מודולי C++ על פני הפצות Linux שונות.
- שיתוף פעולה עם מפתחי C# כדי להבטיח אינטגרציה חלקה והתאמה בין הממשקים.
- כתיבת קוד נקי, מתועד היטב ומכוסה בבדיקות יחידה (Unit Tests).
דרישות חובה:
- שליטה חזקה ב־C++ (C++11/14/17) וניסיון בשיטות פיתוח מודרניות.
- ניסיון מוצק בפיתוח לינוקס: קומפילציה עם GCC/Clang, עבודה עם Makefiles/CMake, שימוש בכלי דיבאג ופרופיילינג כמו gdb, valgrind, perf, gprof או heaptrack.
- ניסיון ביצירה ותחזוקה של ספריות משותפות (.so) בלינוקס.
- ניסיון באינטגרציה בין מערכות: עטיפת ספריות native לשימוש באפליקציות C# באמצעות P/Invoke, SWIG, C++/CLI או שיטות אחרות.
- ניסיון בהסבת פרויקטי C++ מ־Windows ל־Linux.
- יכולות אופטימיזציית ביצועים: ניתוח CPU וזיכרון, שיפור אלגוריתמים והפחתת השהיה.
- ניסיון בכיוונון זיכרון וזיהוי דליפות זיכרון בלינוקס.
- ניסיון עם מערכות ניהול גרסאות (למשל Git).
יתרונות (רצוי):
- היכרות עם פיתוח C++ ב־Windows ואתגרי מעבר מ־Windows ל־Linux.
- ידע ב־.NET או C# וניסיון באינטגרציה של מודולים native בתוך סביבות מנוהלות (managed).
- היכרות עם כלי קונטיינרים כמו Docker לפיתוח ובדיקות.
- ניסיון עם CI/CD לפרויקטי C++.
- הבנה בתכנות רב־תהליכי (multithreading), תכנות מערכות נמוך־רמה או מערכות זמן אמת.