كيفية الهبوط حلمك جزءا لا يتجزأ من وظيفة البرمجيات

أدلة على التحضير لمقابلات البرمجيات وفيرة. تعد المقابلات المضمنة في البرامج متشابهة إلى حد ما ، لكنها لا تزال لعبة مختلفة يجب أن تلعبها.

هناك بعض المواد المفيدة على شبكة الإنترنت وبعض المحتويات لمقابلة البرنامج التحضيري تنتقل. لكن بشكل عام ، لم أتمكن من العثور على دليل شامل لبدء العمل.

إن تجنيد وإجراء مقابلة إعدادية للبرامج المدمجة على مدار الـ 4 أشهر الماضية علمني الكثير عن كيفية التعامل مع هذه العملية. لقد تلقيت مؤخرًا عروضًا من عدد قليل من شركات التكنولوجيا الكبرى. في هذا المنشور ، سأشارك بعض الأفكار التي اكتسبتها على طول الطريق.

سأقسم هذا المنشور إلى قسمين ، لذلك لا تتردد في التنقل! يوجد بالفعل الكثير من المحتوى على طرق ذكية للتجنيد ، لذلك لن أخوض في كيفية إجراء المقابلات هنا.

  • محتوى لإعداد ومراجعة
  • المقابلة نفسها!

اختيار لغة

كمعيار ، يتم تطوير البرامج المدمجة في الغالب في C ، على الرغم من أن C ++ أصبحت أكثر شيوعًا مؤخرًا. إذا كنت قد درست أي بنية كمبيوتر أو دورات أنظمة مضمنة ، فمن المحتمل أنك استخدمت واحدة أو أخرى. تأكد من معرفة اللغة التي تقابلها الشركة التي تستخدم فيها المقابلات. إذا كنت أكثر دراية بـ C ++ ولكنهم يستخدمون C ، فكن مقدماً بشأن ذلك - إذا كنت تعرف أحدهم ، فستتمكن من التبديل بين الاثنين بسهولة إلى حد ما.

منذ أن كنت معتادًا على استخدام C ++ ، سمحت لي الشركات بكتابة رمز في C ++. إذا لزم الأمر ، فقد ساعدوني في نقل هذا الرمز إلى C. في معظم الحالات ، لا يحدث فرقًا بالفعل. هذا ما لم تكن تعمل مع بعض وظائف وحاويات مكتبة C ++ القياسية.

يستخدم فيريلوج في الغالب لتطوير FPGA. يستخدم Python مبلغًا لا بأس به للتواصل بين المستخدم والنظام المضمن الذي يعمل عليه. هناك احتمالات أنك لن تُطرح أي أسئلة حولها.

الشيء نفسه ينطبق على لغة التجميع (الحمد لله !! ).

الأساسيات هي الأساسيات

لقد بدأت الرحلة بطريقة مماثلة لمعظم طلاب علوم الكمبيوتر - من خلال مراجعة هياكل البيانات والخوارزميات الخاصة بي. ولكن سرعان ما أدركت أن محتوى البرامج المدمجة ينفصل عند نقطة معينة. إنه أكثر تركيزًا على هندسة الكمبيوتر وأنظمة التشغيل وبعض أساسيات الأجهزة من هياكل البيانات عالية المستوى مثل الأشجار أو خوارزميات الفرز.

أنت تتعامل مع كود المستوى الأدنى والأجهزة في أدوار البرنامج المدمجة. ولكن من وجهة نظر البرمجة ، لا تزال هياكل البيانات والخوارزميات وثيقة الصلة بالموضوع. على غرار مقابلات البرامج ، هناك الكثير من الموارد لمساعدتك على الاستعداد للأساسيات! كان القيام ببعض المشاكل من كل قسم في Cracking the Coding Interview نقطة انطلاق جيدة.

بعد ذلك بسرعة ، فضلت استخدام LeetCode بسبب القدرة على التشغيل والاختبار على الفور. LeetCode هي عبارة عن منصة لا تصدق مع مجتمع كبير. في رأيي ، توجد أسئلة مشابهة لتلك التي ستواجهها في المقابلات. أنه يحفظ جميع الحلول المقدمة وحساب أوقات التشغيل كذلك. قم بمعظم الأسئلة "السهلة" والجزء اللائق من الأسئلة "المتوسطة" ويجب أن تكون على ما يرام :)

بالإضافة إلى ذلك ، يعد Geeks For Geeks مورداً رائعًا مع تفسيرات شاملة لمئات المشاكل.

ترحيل من مقابلات البرمجيات

المواضيع القليلة التالية تشبه إلى حد كبير المفاهيم من مقابلات البرامج ، ويتم اختبارها بشدة ، لذا تأكد من معرفتها جيدًا!

  • تعقيد الخوارزميات (الوقت والذاكرة)
  • مؤشرات
  • المصفوفات
  • قوائم مرتبطة
  • السلاسل (و السلاسل C)
  • كدسات وقوائم الانتظار

لا يتم اختبار الموضوعات التالية بالفعل ، ولكن التعرف عليها من الناحية المفاهيمية. تعرف على كيفية عملها وتعقيداتها وكيفية حلها على المستوى الأساسي.

  • العودية
  • الأشجار
  • أكوام
  • تجزئة
  • فرز

ما وراء البرنامج

هذا هو المكان الذي تبدأ فيه الأشياء الحقيقية المضمنة!

التلاعب قليلا!

تعرف هذا مثل الجزء الخلفي من يدك.

ربما يكون الموضوع الأكثر أهمية في مقابلاتك. حول هذا الموضوع بالتحديد ، افعل كل الأسئلة في LeetCode.

  • تعرف كيف يتم تمثيل الأرقام السالبة في ثنائي
  • تعرف على الاختلافات بين مكملات المرء والثاني
  • تكون قادرًا على التحويل بين ثنائي وعشري وعشري
  • عملية XOR قوية. تعرف ما كل ما يمكن القيام به.

إليك مورد رائع استخدمته للحصول على نصائح وحيل مفيدة

هندسة الكمبيوتر

وثيقة قريبة من التلاعب قليلا.

ربما لن يُطلب منك تنفيذ أي من هذه الإجراءات ، ولكن بالتأكيد سيتم سؤالك حول كيفية عمل الأشياء أسفل الغطاء. بعض الموضوعات التي يجب قراءتها تتضمن ...

  • سجلات مهمة وكيف تعمل
  • الفرق بين المتصل حفظ وإنقاذ callee
  • كيف تقاطع العمل
  • فهم أساسي لخطوط أنابيب التعليمات
  • ذاكرات التخزين المؤقت ، TLBs ، وكيفية تنفيذ الذاكرة الظاهرية
  • أنواع مختلفة من الذاكرة (ROM مقابل RAM ، DDR ، EEPROM ، Flash ، إلخ)
  • حشوة الذاكرة (يرشد & الطبقات)
  • ماذا يحدث عند تشغيل النظام

أنظمة التشغيل

اعتمادًا على الشركة والدور ، يمكن أن تكون أنظمة التشغيل موضوعًا مهمًا للغاية. لن يُطلب منك تنفيذ أيٍّ من هذه الأمور ، ولكن عليك معرفة كيفية عمل الأشياء على المستوى المفاهيمي!

  • عملية مقابل الموضوع
  • كيف يعمل خيوط متعددة
  • أنظمة التشغيل في الوقت الحقيقي مقابل نظام التشغيل التقليدي
  • جدولة المهام (FIFO ، Round Robin ، القائمة على الأولوية)
  • كيف تحمي الدفاتر والمزادات البيانات
  • انقلاب الأولوية ، وراثة الأولويات ، والعصابات ، والمأزق
  • ما الذي يجعل وظيفة "عودة"؟
  • المقاطع الحرجة
  • مستويات الأولوية في ميكروكنترولر (EL0 - EL3)

بروتوكولات الاتصال

تعرف على فوائد ومبادلات استخدام البروتوكولات التالية:

  • UART
  • SPI
  • I2C

بناءً على تجاربك السابقة ، والدور الذي تتقدم إليه ، والشركة ، قد تُسأل عن الآخرين أيضًا. عادةً ، لا تتوقع الشركات منك معرفة هذه البروتوكولات المحددة وسوف تقوم بتدريبك على الوظيفة. لكن وجود فهم أساسي يمكن أن يساعد دائمًا في إبداء نجاح المقابلات!

  • السيارات: CAN ، LIN
  • لاسلكي: 3G ، 4G LTE ، أساسيات 5G ، 802.11 (Wifi) ، Bluetooth
  • الشبكات: HTTP ، TCP / UDP ، IP ، 802.11 (Wifi) ، إيثرنت

أساسيات الأجهزة

لم يتم اختبار الأجهزة بالكامل للبرامج المدمجة ، ولكن حسب الدور ، قد يختلف مستوى تفاعلك. تحقق من الوصف الوظيفي والتحدث إلى الأشخاص الذين يعملون هناك للحصول على فكرة أفضل!

  • مؤقتات الوكالة الدولية للطاقة
  • مؤقتات بشكل عام
  • تفاصيل حول أي أجهزة طرفية قد تكون استخدمتها في مشاريعك (مقاييس التسارع ، أي أجهزة استشعار ، LiDAR ، محركات ، إلخ)

ممارسة

الممارسة هي المفتاح - لا يوجد حقًا حل لذلك. تأكد من تكريس ما لا يقل عن ساعتين في اليوم لإعداد المقابلات الشخصية ، بما في ذلك التقدم للوظائف والوصول إلى المجندين.

أثناء التدريب على LeetCode ، قم بتعليق الكود. اشرح الخوارزمية وتعقيدات وقت التشغيل. كل يوم قبل أن تبدأ الترميز ، راجع المشاكل التي عملت بها في اليوم السابق. في نهاية الأسبوع ، راجع كل مشكلة عملت عليها في هذا الأسبوع. سيساعدك ذلك على تذكر الخوارزميات بشكل أفضل ، فستصبح محترفًا في مطابقة الأنماط.

تميل المقابلات المضمنة إلى أن تكون مفاهيميًا أكثر من المقابلات البرنامجية المعتادة ، نظرًا لطبيعة بعض الموضوعات التي تم اختبارها. بالنسبة إلى هذه المناطق ، حافظت على مستند Google يحتوي على جميع الأسئلة التي قد يتم طرحها ، وكذلك جميع إجاباتهم. لقد قمت أيضًا بتضمين رابط إلى حيث يمكنني قراءة المزيد من المعلومات لتكون مفيدًا. لقد ساعدني ذلك على البقاء منظمًا ومراجعة أسرع.

لقد سألني الكثير من الأشخاص عن الرابط إلى مستند Google ، ومن هنا: أسئلة المقابلة المضمنة

في المقابلة

قمت بها - عمل رائع!

خذ نفس عميق. لقد حان الوقت لاستخدام كل عملك الشاق في الاستخدام الجيد. عادة ، ستقوم أنت والقائم بإجراء المقابلة ببعض الأسئلة المفاهيمية. سوف تناقش أيضا تجاربك السابقة ومشاريعك. تأكد من أنك قادر على الإجابة عن أسئلة حول مساهماتك والتحديات المختلفة التي واجهتها بالتفصيل.

إذا كانت هذه مقابلة تحدث عن بُعد ، فربما يُطلب منك الرمز في مستند مشترك. اجعل بعض الورق جاهزًا لتدوين النقاط والمخططات المهمة. إذا كان ذلك مفيدًا ، يمكنك أيضًا الحصول على بعض الملاحظات التي يمكنك الرجوع إليها أثناء المقابلة. أحافظ دائمًا على ورقة من التعقيدات الخوارزمية الأساسية في متناول يدي.

تحقق من المناطق الزمنية. مضاعفة التحقق منها. لا تنس استخدام سماعات الرأس. كن في بيئة هادئة لذلك لا توجد اضطرابات. قضايا التواصل ستجعل المقابلة أكثر صعوبة.

عندما تحصل على السؤال

لا تبدأ الترميز على الفور. على الرغم من أهمية الوصول إلى الحل الصحيح ، يبحث القائم بإجراء المقابلة حقًا في مقاربتك.

خذ ثانية وكرر السؤال مرة أخرى إلى القائم بإجراء المقابلة ، فقط للتأكد من أنكما على نفس الصفحة. وإذا كان هناك أي سوء فهم ، فيمكن للمقابلة دائمًا تكرار وتوضيح أي شكوك.

بعد ذلك ، فهم نطاق المشكلة

  • ما حجم المدخل؟
  • هل تم الفرز؟
  • هل هناك وقت معين أو تعقيد الذاكرة التي يجب أن تجتمع؟
  • هل هناك تكرارات؟ القيم السلبية؟ القيم الفارغة؟
  • هل يجب عليك القيام بالتحقق من الخطأ؟

ثم ، المشي من خلال الخوارزمية الخاصة بك. إبدأ بنهج القوة الغاشمة. يمكن أن يكون غير كفء ويذكر أنك تستخدم هذا كنقطة انطلاق. اشرح الوقت وتعقيدات الذاكرة ولماذا يعد حلاً سيئًا.

من هناك ، حان الوقت للتحسين. ابحث عمومًا عن الأماكن التي قد تخزن فيها كميات غير ضرورية من البيانات أو تكرر مقاطع من التعليمات البرمجية. للتطبيقات المدمجة ، الذاكرة مهمة! بدلاً من استخدام صفيف أو متجه ، حاول استخدام مجموعة بت. إذا كنت تتعامل فقط مع القيم بين 0 و 31 ، فقم بتبديل البتات في عدد صحيح! هذا هو المكان الذي يأتي التلاعب في متناول اليدين.

من المهم التفكير بصوت عالٍ أثناء العصف الذهني. إذا واجهتك مشكلة أو تسير في الاتجاه الخاطئ ، فيمكن أن يساعدك القائم بإجراء المقابلة في العودة إلى المسار الصحيح. بمجرد الاتفاق بينكما على حل ، فقد حان الوقت أخيرًا لبدء الترميز.

كود الكتابة

إن قراءة رمز الآخرين ليس دائمًا ما يكون أكثر متعة. اجعل المهمة أسهل لمقابلك باستخدام أسلوب جيد. هذا لا يعني أنه يجب عليك إخماد كل فاصلة منقوطة أو قوس ، ولكن المسافة البادئة جيدة واستخدام أسماء متغيرة ذات معنى. محاولة الكتابة بدقة واستخدام مساحة السبورة جيدا.

أثناء كتابة التعليمات البرمجية ، تابع التحقق من الخوارزمية التي ابتكرتها. على غرار مرحلة العصف الذهني ، فكر بصوت عالٍ. تقديم التعليقات اللفظية إلى التعليمات البرمجية الخاصة بك. في كل خطوة ، اشرح ما الذي تقوم بفحصه ، وما تأمل في تحقيقه ، وأي قرارات تصميم تتخذها.

بعد الانتهاء من كتابة التعليمات البرمجية ، لا تقل أنك قد انتهيت بعد. اتخذ خطوة إلى الوراء وقم بتحليل الشفرة من منظور رفيع المستوى. تحقق المدخلات والمخرجات والمنطق الخاص بك عن أي أخطاء. تأكد من اكتشاف أي أخطاء فردية! ثم ، من خلال المشي رمز مع بعض حالات الاختبار. إذا كانت هناك أية مشكلات تراها ، فقم بمراجعة التعليمات البرمجية وإعادة صياغتها حسب الضرورة.

بناءً على المقابلة ، قد يكون لديك سؤال كبير أو سؤالان أصغر. ولكن بمجرد موافقة القائم بإجراء المقابلة على الحل الخاص بك ، فهناك فرصة لتوسيع نطاق المعلمات المختلفة. ربما لن تضطر إلى إعادة صياغة الشفرة ، لكن قد تضطر إلى مناقشة كيفية تغيير أجزاء من نهجك. كما ذكرت من قبل ، الذاكرة مهمة في التطبيقات المدمجة. لذا فإن سؤال المتابعة الشائع هو عادة حول تحسين الذاكرة.

افكار اخيرة

تعتمد طبيعة المقابلات المضمنة في البرامج اعتمادًا كبيرًا على الشركة والعمل الذي تحدده له الأولوية. ستبحث الشركات التي تعمل على بروتوكول اتصال معين عن أشياء مختلفة عن شركة تقوم بتطوير نظام تشغيل في الوقت الفعلي أو شركة تعمل على منتج إنترنت الأشياء.

أردت استخدام هذا المقال كمكان لمشاركة بعض السمات الشائعة في المقابلات التي أجريتها ، لكن هذا ليس شاملاً بأي حال من الأحوال. هذا هو المقصود لاستخدامها كنقطة انطلاق. ولكن يرجى التواصل مع الموظفين الحاليين والتحقق من Glassdoor للحصول على المزيد من النصائح حول مقابلة الشركة.

المقابلات صعبة ، لكن الاستعداد جيدًا والعمل الجاد الآن يمكن أن يساعدك في الحصول على وظيفة تحبها :)

آمل أن يكون هذا المقال قد ساعد ، وأتمنى لك حظًا سعيدًا!

إذا كنت قد استمتعت بهذا المقال ، فالرجاء ألا تنسى ترك علامة "". يمكنك أيضًا متابعتي على Twitter أو Quora :)