منذ 5 ساعات
أهلا بك عزيزي المتابع لموقع (journey for learn) نقدم دورات بكوبونات متاحة لاول 1000 تسجيل مجاني فقط وكوبونات اخري لفترة محدودة فاذا كنت تريد ان تحصل علي كل الكورسات علي موقعنا وان تكون اول المسجلين في الكورسات المجانية قم بتسجيل الدخول أوقم بالدخول علي وسائل التواصل الاجتماعي وخصوصا التليجرام نوضح الوصف المختصر والطويل للدورات لكي تعرف الدروس التي سوف تتعلمها بسهولة ويسر :
تغطية تفصيلية لمجال الاختبار، يحدد بنك التدريب الشامل هذا بدقة الأنماط الهيكلية والمجالات التقنية التي ستواجهها في المقابلات الخاصة بالواجهة الخلفية والسحابة وهندسة الأنظمة على مستوى الإنتاج.- التزامن وGoroutines (25%): دورات حياة Goroutine، وميكانيكا القناة (مخزنة مقابل غير مخزنة)، وبيانات محددة، وأوليات المزامنة (Mutex، وRWMutex، وWaitGroups، ومرة واحدة)، وأنماط التزامن المتقدمة (العامل المجمعات، والداخل/الخارج، ونشر السياق).
- أساسيات البرمجة (20%): بناء جملة Core Go، وأنظمة الكتابة، والأوليات الهيكلية، والشرائح، والخرائط، والواجهات، وميكانيكا التأجيل/الذعر/الاسترداد، ومعالجة الأخطاء الصريحة، وسلوكيات المؤشر الأساسية.
- تصميم النظام وبنيته (20%): تصميم الخدمات الصغيرة القابلة للتطوير، ومبادئ البنية السحابية الأصلية، ومحركات معالجة البيانات في الوقت الفعلي، أنماط واجهة برمجة التطبيقات وأنماط تصميم الأنظمة المصممة للتوزيع.
- إدارة الذاكرة والأداء (10%): تتبع وقت تشغيل Go Garbage Collector (GC)، وتحليل هروب المكدس مقابل الكومة، ومحاذاة البنية، وتحسين تخصيص الذاكرة المخصصة، وقياس الأداء، وملفات تعريف pprof.
- Go Ecosystem and Tools (10%): إدارة التبعيات باستخدام go mod، وهياكل مساحة العمل، والاستخدام الصريح لأدوات سطر الأوامر الأصلية بما في ذلك go test، وgo build، وgo تشغيل، ثم الحصول على.
- معالجة الأخطاء وتصحيح الأخطاء (5%): تغليف الأخطاء المخصص، وتنفيذ التسجيل المنظم، وتقنيات تصحيح الأخطاء، وإستراتيجيات الاختبار القوية على مستوى النظام.
- أفضل الممارسات وأنماط التصميم (5%): تخطيط البنية النظيفة، ومعايير الترميز الصارمة، وحزم Go المنظمة اصطلاحيًا، واختبار الوحدة الشامل، والتكامل مع مسارات التكامل المستمر.
- الموضوعات المتقدمة والمجالات المتخصصة (5%): تسلسل عالي الأداء عبر المخازن المؤقتة للبروتوكول، وطبقات نقل gRPC، وتنسيق Kubernetes، وحاويات Docker، وأنظمة الحوسبة السحابية الموزعة.
- أ) يتعرف جامع البيانات المهملة Go على الفور على القناة المحظورة ويحرر ذاكرة مكدس goroutine المولد تلقائيًا.
- ب) يصاب وقت التشغيل بالذعر بسبب خطأ "تم اكتشاف حالة توقف تام" لأن جميع goroutines على مستوى التطبيق دخلت في حالة سكون دائم.
- ج) يحاول مولد goroutine إرسال البيانات إلى أجل غير مسمى على القناة، مما يؤدي إلى تسرب دائم للذاكرة goroutine.
- د) تتحول القناة تلقائيًا إلى تكوين مخزن مؤقتًا لتخزين القيم المعلقة ديناميكيًا حتى تنتهي العملية.
- هـ) يفرض محرك التنفيذ إغلاق القناة غير المخزنة مؤقتًا، مما يستدعي تلقائيًا كتلة استرداد داخل الروتين الرئيسي.
- و) يعترض نواة نظام التشغيل كتابة القناة المحظورة ويفرض مفتاح سياق الخيط لحل المشكلة كتلة تخصيص الذاكرة.
- الإجابة الصحيحة: C
- لماذا هي صحيحة: يؤدي إرسال البيانات إلى قناة غير مخزنة إلى حظر goroutine الحالي حتى يقرأ المتلقي البيانات من نفس القناة. إذا خرجت جميع goroutines المتلقية، فستظل goroutine المرسلة محظورة إلى الأبد في الذاكرة. لن يقوم أداة تجميع البيانات المهملة Go بتنظيف goroutine محظورة، حتى لو أصبح مرجع القناة نفسه غير قابل للوصول، مما يؤدي إلى تسرب دائم لذاكرة goroutine.
- لماذا تكون الخيارات البديلة غير صحيحة:
- الخيار أ غير صحيح: لا يقوم أداة تجميع البيانات المهملة بتتبع أو استعادة goroutines النشطة والمحظورة؛ يجب أن يخرج goroutine بشكل طبيعي لتحرير موارد المكدس المخصصة له.
- الخيار B غير صحيح: يتم تشغيل كاشف الجمود العام لوقت التشغيل فقط إذا تم حظر كل goroutine في التطبيق بأكمله. إذا كانت أجزاء أخرى من التطبيق قيد التشغيل، فلن يحدث أي ذعر.
- الخيار د غير صحيح: القنوات هي هياكل ثابتة؛ لا تغير القناة غير المخزنة مؤقتًا قدرتها ديناميكيًا أثناء تنفيذ البرنامج.
- الخيار E غير صحيح: لا يقوم وقت التشغيل أبدًا بإغلاق القناة تلقائيًا نيابة عن روتين محظور؛ يجب أن يتم إغلاق القناة بشكل صريح باستخدام وظيفة الإغلاق المضمنة.
- الخيار F غير صحيح: يتم إرسال Goroutines إلى سلاسل عمليات نظام التشغيل بواسطة برنامج جدولة وقت تشغيل Go (نموذج M:N)؛ نواة نظام التشغيل غير مدركة لكتل القنوات الروتينية الفردية.
func NewData() *Data { d := Data{Value: 42} return &d
عندما يتم تشغيل هذا الرمز من خلال محرك تحليل الهروب الخاص بمترجم Go (go build -gcflags="-m")، ما الذي يتم تحديده فيما يتعلق بمنطقة تخصيص الذاكرة للمتغير d؟
- أ) يظل المتغير d مخصصًا في مكدس الوظائف لأن إجمالي مساحة الذاكرة الفعلية الخاصة به يقل عن 64 كيلو بايت.
- ب) يهرب المتغير d إلى الكومة لأنه يتم تمرير مرجع مؤشر إلى المتغير المحلي خارج نطاق وظيفة الإنشاء الإطار.
- ج) يتم وضع المتغير d داخل مقطع البيانات الثابتة العامة حيث تم الإعلان عنه باستخدام التهيئة الحرفية الهيكلية.
- د) يتم تسجيل التخصيص كخطأ مرجعي غير صالح للذاكرة في وقت الترجمة لأن إرجاع عناوين المكدس المحلية محظور في Go.
- هـ) يقوم المترجم بتحويل تخصيص المؤشر إلى قيمة أولية ذرية، مما يؤدي إلى تحسين تخصيصات المكدس والكومة بالكامل.
- و) يخصص المتغير d مباشرة في تجمع المخصص الصغير لمجدول وقت التشغيل، متجاوزًا تجمعات الذاكرة القياسية بالكامل.
- الإجابة الصحيحة: ب
- لماذا هي صحيحة: تقوم خوارزمية تحليل الهروب الخاصة بـ Go بتقييم عمر القيم ديناميكيًا. إذا تم الإعلان عن متغير داخل نطاق وظيفة، ولكن تم إرجاع مؤشر إلى ذلك المتغير ويمكن الوصول إليه خارج إطار مكدس الوظيفة بعد عودة التنفيذ، يقوم المترجم تلقائيًا بنقل التخصيص من المكدس إلى الكومة.
- لماذا الخيارات البديلة غير صحيحة:
- الخيار أ غير صحيح: حجم البايت الفعلي للبنية لا يتجاوز دورات حياة المكدس؛ مشاركة مؤشر خارج إطار الوظيفة يفرض هروبًا للكومة بغض النظر عن الحجم.
- الخيار C غير صحيح: يتم إنشاء القيم الحرفية الهيكلية المعلنة داخل الوظائف في وقت التشغيل، ولا يتم وضعها في مقطع البيانات الثابتة العامة للقراءة فقط.
- الخيار D غير صحيح: على عكس C أو C++، يدعم Go تمامًا إرجاع المؤشرات بأمان إلى المتغيرات المحلية لأن نظام تحليل الهروب يحل تلقائيًا العمر من خلال إدارة الكومة.
- الخيار E غير صحيح: لا يمكن للمترجم تحسين هذه البنية إلى قيمة ذرية لأن الوظائف الخارجية تتطلب الوصول إلى تخطيط العنوان المرجعي.
- الخيار F غير صحيح: يقوم مخصص ذاكرة Go بتجميع كائنات الكومة الصغيرة في مساحات، ولكنه لا يتجاوز مناطق الكومة القياسية باستخدام اختصار تخصيص جدولة وقت التشغيل.
- أ) إحاطة جميع تفاعلات الخريطة بالكامل ضمن مزامنة قياسية. تسلسل كتلة Mutex Lock وUnlock.
- ب) الإعلان عن الخريطة كمؤشر مرجعي متطاير واستخدام حزمة المزامنة/الذرية لإجراء مبادلات هيكلية.
- ج) التفاف عمليات الخريطة باستخدام sync.RWMutex، باستخدام RLock/RUnlock للقراء و قفل/فتح للكاتب.
- د) تهيئة الخريطة باستخدام المزامنة.WaitGroup لتنسيق إجراءات الوصول عبر عدادات التنفيذ.
- هـ) نشر مزامنة واحدة. مرة واحدة حول كل استدعاء دالة قراءة لعزل حدود الذاكرة.
- و) استخدام قناة مخزنة بسعة 1 لبث واجهات الخريطة الأولية بشكل تسلسلي إلى مؤشرات نشطة.
- الإجابة الصحيحة: C
- لماذا هي صحيحة: خرائط Go ليست آمنة للعمليات المتزامنة. ستؤدي عمليات الكتابة المتزامنة مع القراءات المتزامنة إلى تعطل وقت التشغيل بسبب خطأ فادح في سباق البيانات. يسمح sync.RWMutex (Reader/Writer Mutex) لعدد عشوائي من القراء المتزامنين بالوصول إلى المورد في وقت واحد عبر RLock، ولكنه يمنح وصولاً حصريًا إلى كاتب واحد عبر Lock، مما يوازن بين الأمان وأداء القراءة.
- لماذا تكون الخيارات البديلة غير صحيحة:
- الخيار أ غير صحيح: تعمل المزامنة القياسية.Mutex بأمان، ولكنها تمنع جميع القراء من التنفيذ بشكل متزامن، مما يؤدي إلى اختناق أداء غير ضروري للقراءة الثقيلة. أعباء العمل.
- الخيار B غير صحيح: تدير الحزمة المتزامنة/الذرية القيم والمؤشرات الرقمية ذات المستوى المنخفض البدائية، لكنها لا تستطيع إجراء تسلسل أو تأمين الوصول الهيكلي الداخلي ضمن نوع معقد مثل خريطة Go.
- الخيار D غير صحيح: يتم استخدام sync.WaitGroup لمنع التنفيذ حتى تنتهي مجموعة من goroutines من التنفيذ؛ فهو لا يحمي هياكل الذاكرة المشتركة من الوصول المتزامن.
- الخيار E غير صحيح: يضمن التزامن.Once البدائي تشغيل وظيفة التهيئة مرة واحدة بالضبط؛ ولا يمكنها إدارة الوصول المستمر أو المتكرر للقراءة أو الكتابة طوال عمر ذاكرة التخزين المؤقت.
- الخيار F غير صحيح: بينما يمكن للقناة تنسيق التسلسل، فإن بث الخريطة الأولية عبر قناة بسعة 1 لا يوقف سباقات البيانات المتزامنة إذا احتفظت الإجراءات الروتينية المتعددة بإشارات نشطة لنفس كائن الخريطة.
- مرحبًا بك في اختبارات أسئلة المقابلة لمساعدتك في الاستعداد لأسئلة مقابلة Golang. التقييم.
- يمكنك إعادة إجراء الاختبارات عدة مرات كما تريد
- هذا بنك أسئلة أصلي ضخم
- يمكنك الحصول على دعم من المدرسين إذا كانت لديك أسئلة
- يحتوي كل سؤال على شرح مفصل
- متوافق مع الهاتف المحمول مع تطبيق Udemy
ما هي المتطلبات الأساسية لدخول الدورة والتسجيل فيها على موقعنا؟ رحلة التعلم:
(احصل على الدورة للدخول إلى الموقع والتسجيل)
يجب أن يكون لديك بريد إلكتروني (حساب بريد) تتذكره لنفسك وأيضًا يجب أن تتذكر كلمة مرور البريد الإلكتروني الذي ستسجل به ، وإذا لم يكن لديك حساب بريد إلكتروني ، فمن الأفضل إنشاء حساب (Gmail)
0 تعليقات
تسجيل دخول
دورات مشابهة