تعد قضايا القراءة والتزامن جزءًا أساسيًا من أي مقابلة Java. إذا كنت ترغب في الحصول على منصب معلومات في الواجهة الأمامية في أي بنك استثمار في الأسهم ، فيجب عليك إعداد الكثير من الأسئلة حول MultiThreading. تعد Multithesply و Congrency موضوعًا شائعًا للغاية في الخدمات المصرفية الاستثمارية ، وخاصة فيما يتعلق بتطوير المعاملات الإلكترونية. سوف يسألون المقابلات العديد من أسئلة خيوط Java المربكة. يريد المقابلة فقط أن يكون متأكدًا من أن القائم بإجراء المقابلة لديه معرفة كافية بخيوط Java والتزامن ، لأن العديد من المرشحين سطحي فقط. إن أنظمة التداول الإلكترونية ذات السعة العالية والتقنية المنخفضة للمعاملات المباشرة الموجهة نحو السوق تتزامن بطبيعتها. فيما يلي أسئلة خيوط Java التي أحب طرحها في أوقات وأماكن مختلفة. لم أقدم إجابة ، لكنني سأعطيك أدلة كلما كان ذلك ممكنًا ، وأحيانًا تكون هذه القرائن كافية للإجابة على الأسئلة. الآن هناك المزيد والمزيد من المشكلات التي تشير إلى حزم Java5 المتزامنة فيما يتعلق بالأدوات المتزامنة والمجموعات المتزامنة. Threadlocal ، حظر قائمة الانتظار ، وحساب الرمش و concurrenthashmap أكثر شعبية بين هذه الأسئلة.
15 أسئلة وأجوبة مقابلة جافا متعددة الخيوط
1) هناك الآن ثلاثة مؤشرات ترابط T1 و T2 و T3. كيف يمكنك التأكد من تنفيذ T2 بعد تنفيذ T1 ويتم تنفيذ T3 بعد تنفيذ T2؟
عادةً ما يتم طرح سؤال الموضوع هذا خلال مرحلة المقابلة الجولة الأولى أو الهاتفية ، بهدف التحقق مما إذا كنت على دراية بالطريقة "Join". هذه المشكلة متعددة الخيوط بسيطة نسبيًا ويمكن تنفيذها باستخدام طريقة الانضمام.
2) ما هي مزايا واجهة القفل على الكتلة المتزامنة في جافا؟ تحتاج إلى تنفيذ ذاكرة التخزين المؤقت الفعالة التي تسمح للعديد من المستخدمين بالقراءة ولكن مستخدم واحد فقط للكتابة للحفاظ على سلامته. كيف يمكنك تنفيذها؟
إن أكبر ميزة لواجهات القفل في البرمجة متعددة الخيوط والمتزامنة هي أنها توفر أقفال للقراءة والكتابة بشكل منفصل ، والتي يمكن أن ترضيك لكتابة هياكل بيانات عالية الأداء مثل concurrenthashmap والحظر المشروط. يتم طرح أسئلة مقابلة في سلسلة خيوط Java بشكل متزايد بناءً على إجابات المقابلة. أوصي بشدة بقراءة الأقفال بعناية قبل أن تذهب إلى مقابلة متعددة الخيوط ، لأنها تستخدم حاليًا لإنشاء ذاكرة التخزين المؤقت لاتصال عميل نظام المعاملات الإلكترونية.
3) ما هي الاختلافات بين أساليب الانتظار وطرق النوم في جافا؟
أسئلة مقابلة Java Thread التي يتم طرحها غالبًا أثناء مقابلات الهاتف. الفرق الأكبر هو أن الانتظار يطلق القفل أثناء الانتظار ، بينما يستمر النوم في حمل القفل. عادةً ما يتم استخدام الانتظار للتفاعلات بين الخيوط ، وعادة ما يستخدم النوم لإيقاف التنفيذ.
4) استخدام Java لتنفيذ قوائم انتظار الحظر.
هذا سؤال مقابلة متعدد الخيوط صعب نسبيًا ، والذي يمكنه تحقيق العديد من الأهداف. أولاً ، يمكن أن يكتشف ما إذا كان يمكن للمرشح كتابة البرامج بالفعل في خيوط Java ؛ ثانياً ، يمكن أن يكتشف فهم المرشح للسيناريوهات المتزامنة ، ويمكنك طرح العديد من الأسئلة بناءً على ذلك. إذا كان يستخدم طرق Wait () وإخطار () بتنفيذ قوائم انتظار الحظر ، فيمكنك أن تطلب منه كتابتها مرة أخرى بأحدث الفصول المتزامنة في Java 5.
5) استخدم Java لكتابة التعليمات البرمجية لحل مشكلة المنتج المستهلك.
إنه يشبه إلى حد كبير السؤال أعلاه ، لكن هذا السؤال أكثر كلاسيكية. في بعض الأحيان ، سيتم طرح الأسئلة التالية في المقابلات. كيفية حل مشكلة المنتج المستهلك في جافا؟ بالطبع ، هناك العديد من الحلول. لقد شاركت طريقة تستخدم قوائم الانتظار لتنفيذها. في بعض الأحيان يسألون عن كيفية إدراك مشكلة الأكل الفلاسفة.
6) كيف ستحل مشكلة برمجة البرنامج الذي سيؤدي إلى طريق مسدود في جافا؟
هذا هو سؤال مقابلة في Java Thread المفضل لدي ، لأنه على الرغم من أن مشاكل الجمود شائعة جدًا عند كتابة برامج متزامنة متعددة الخيوط ، فإن العديد من المرشحين لا يمكنهم كتابة رمز مجاني عن طريق مسدود (لا يوجد رمز تميت؟) ، وهم يكافحون. فقط أخبرهم أن لديك موارد N و N Threads ، وتحتاج إلى جميع الموارد لإكمال العملية. بالنسبة للبساطة ، يمكن استبدال N بـ 2 ، فكلما زادت البيانات ، تجعل المشكلة تبدو أكثر تعقيدًا. احصل على مزيد من المعلومات حول Deadlocks عن طريق تجنب الجمود في Java.
7) ما هي العملية الذرية وما هي العملية الذرية في جافا؟
سؤال مقابلة في سلسلة Java بسيطة للغاية ، والسؤال التالي هو أنك تحتاج إلى مزامنة عملية ذرية.
8) ما هو الدور الرئيسي للمتقلبة في جافا؟ كيف تستخدمه؟ كيف تختلف عن الطريقة المتزامنة في جافا؟
منذ تغير نماذج ذاكرة Java 5 و Java ، أصبحت مشاكل الخيوط بناءً على الكلمة الرئيسية المتطايرة شائعة بشكل متزايد. يجب أن تكون مستعدًا للإجابة حول كيفية ضمان المتغيرات المتقلبة في البيئة المتزامنة.
9) ما هي ظروف المنافسة؟ كيف تكتشف المنافسة وحلها؟
هذا سؤال يظهر في المرحلة المتقدمة من المقابلات المتعددة الخيوط. سيسأل معظم المقابلات عن ظروف المنافسة التي واجهتها مؤخرًا وكيف قمت بحلها. هناك أوقات يكتبون فيها رمزًا بسيطًا ثم يتيح لك اكتشاف ظروف السباق للرمز. يمكنك الرجوع إلى مقالتي السابقة حول ظروف سباق Java. في رأيي ، هذه واحدة من أفضل أسئلة مقابلة خيوط Java ، والتي يمكن أن تكتشف بدقة تجربة المرشحين في حل ظروف السباق ، أو كتابة الكود الخالي من عرق البيانات أو أي حالة سباق أخرى. أفضل كتاب حول هذا الأمر هو "ممارسات التزامن في جافا".
10) كيف ستستخدم تفريغ الموضوع؟ كيف ستقوم بتحليل تفريغ الموضوع؟
في UNIX ، يمكنك استخدام Kill -3 ، ثم يقوم تفريغ الخيط بطباعة السجل. في Windows ، يمكنك استخدام "Ctrl+Break". سؤال مقابلة في الموضوع البسيط والمهني ، ولكن سيكون من الصعب إذا سألك عن كيفية تحليله.
11) لماذا نقوم بتنفيذ طريقة Run () عندما نسمي طريقة Start () ، ولماذا لا يمكننا استدعاء طريقة Run () مباشرة؟
هذا هو سؤال آخر كلاسيكي جافا مقابلة Multherded. هذا هو أيضًا ارتباك عندما بدأت في كتابة برامج الخيوط لأول مرة. الآن يُطرح هذا السؤال عادةً خلال مقابلة الهاتف أو الجولة الأولى من مقابلة جافا المبتدئين والوسط. يجب أن تكون الإجابة على هذا السؤال مثل هذا: عند الاتصال بالطريقة START () ، ستقوم بإنشاء مؤشر ترابط جديد وتنفيذ الكود في طريقة RUN (). ولكن إذا قمت بالاتصال بالطريقة Run () مباشرةً ، فلن تنشئ مؤشر ترابط جديد أو تنفيذ الكود الذي يستدعي مؤشر الترابط. اقرأ المقال "الفرق بين طريقة البدء والتشغيل" التي كتبتها من قبل للحصول على مزيد من المعلومات.
12) كيف تستيقظ خيط حظر في جافا؟
هذا سؤال صعب حول الخيوط والحظر ، ولديه العديد من الحلول. إذا واجه الخيط انسداد IO ، لا أعتقد أن هناك طريقة لإحباط الخيط. إذا كان الخيط يحظر أساليب الاتصال (WAIT () أو Sleep () أو الانضمام إلى () ، فيمكنك مقاطعة الخيط وإيقاظه عن طريق رمي مقاطع. "كيفية التعامل مع أساليب الحظر في جافا" ، كتبت من قبل لديها الكثير من المعلومات حول التعامل مع حظر مؤشرات الترابط.
13) ما هو الفرق بين Cyclibarriar و CountDownlatch في Java؟
تستخدم مشكلة الخيوط هذه بشكل أساسي لاكتشاف ما إذا كنت على دراية بالحزم المتزامنة في JDK5. الفرق بين هذين الاثنين هو أن Cyclicbarrier يمكنه إعادة استخدام الحاجز الذي تم تمريره ، في حين لا يمكن إعادة استخدام CountDownlatch.
14) ما هو الكائن الثابت وكيف يساعد في كتابة التطبيقات المتزامنة؟
لا يرتبط سؤال مقابلة كلاسيكي آخر لـ Multi-Thorreading مباشرة بالمواضيع ، ولكنه يساعد كثيرًا بشكل غير مباشر. يمكن أن يصبح سؤال مقابلة Java هذا أمرًا صعبًا للغاية إذا طلب منك كتابة كائن ثابت ، أو يسألك لماذا تكون السلسلة غير قابلة للتغيير.
15) ما هي المشكلات الشائعة التي تواجهها في بيئة متعددة الخيوط؟ كيف حلتها؟
عادةً ما تصادفها في البرامج المتعددة والمتزامنة هي واجهة الذاكرة وظروف السباق والكمال والأقفال الحية والجوع. المشكلة ليس لها نهاية ، وإذا أخطأت ، فسيكون من الصعب اكتشاف وتصحيح. هذا في الغالب يعتمد على مقابلة ، وليس عملية خيوط Java القائمة على التطبيق.
تمت إضافة العديد من الأسئلة الأخرى:
1) ما هو الفرق بين الخيط الأخضر والخيط المحلي في جافا؟
2) الفرق بين المواضيع والعمليات؟
3) ما هو تبديل السياق في MultiTreading؟
4) الفرق بين القضبان والقفل المباشر ، والفرق بين الجمود والجوع؟
5) ما هي خوارزمية جدولة الخيط المستخدمة في جافا؟
6) ما هو جدولة الموضوع في جافا؟
7) كيف تتعامل مع استثناءات غير قابلة للحياة في الموضوع؟
8) ما هي مجموعة الخيوط ولماذا لا ينصح بها في جافا؟
9) لماذا من الأفضل استخدام إطار المنفذ من إنشاء وإدارة مؤشرات الترابط مع التطبيقات؟
10) ما هو الفرق بين المنفذ والمنفذين في جافا؟
11) كيفية العثور على خيط يستخدم أطول وقت وحدة المعالجة المركزية على Windows و Linux؟
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.