أهم 8 أسئلة وأجوبة حول البرمجة المهمة لعام 2022 [للمبتدئين وذوي الخبرة]
نشرت: 2021-08-25تعتبر الأسس الجيدة لهياكل البيانات مثل المصفوفات والأشجار الثنائية وجداول التجزئة والقوائم المرتبطة ضرورية. يجب أن تكون على دراية بالخوارزميات والأساليب الأساسية ولديك سيطرة جيدة على لغات البرمجة مثل Java ، خاصة إذا كنت تتقدم لوظائف البرمجة. يمكنك بالتأكيد معرفة إجابات أسئلة مقابلة الترميز المهمة ، ولكن يوصى بشدة بممارسة الحلول على نطاق واسع بنفسك.
أفضل 8 أسئلة مقابلة حول الترميز وإجاباتها
دعونا نلقي نظرة على بعض أهم أسئلة الترميز التي يتم طرحها في المقابلات التي استضافتها شركات ضخمة مثل Microsoft و IBM و Google وما إلى ذلك.
1. كيف يمكنك العثور على أول حرف غير مكرر في الكلمة؟
للإجابة على هذا السؤال ، تحتاج أولاً إلى فهم ما يجب القيام به لتعزيز هذه الوظيفة. يجب كتابة دالة تقبل السلاسل وتعيد الأحرف الأولى غير المكررة.
على سبيل المثال ، في الكلمة ، "مرور" ، "p" هو الحرف الأول غير المكرر أو في الكلمة ، "سلحفاة" ، "u" هو أول حرف غير مكرر. حسنا، كيف لنا ان نحل هذه المشكلة؟ يمكننا إنشاء جدول لتخزين التكرارات لجميع الأحرف ثم تحديد المدخلات الأولى التي لم تتكرر.
من أجل كتابة رمز سيعيد الأحرف الأولى غير المكررة ، يمكننا استخدام LinkedHashMap لتخزين عدد الأحرف. يتبع HashMap ترتيب الإدراج ويتم تهيئة الأحرف في نفس الموضع كما في السلسلة. يجب تكرار السلسلة الممسوحة ضوئيًا باستخدام LinkedHashMap لاختيار الإدخال المطلوب بقيمة 1.
هناك طريقة أخرى للتعامل مع هذه المشكلة وهي استخدام firstNonRepeatingChar (كلمة سلسلة). هذا يسمح للشخصية غير المتكررة التي تظهر أولاً ليتم التعرف عليها في مسار واحد. استخدم هذا النهج اثنين من التخزين ليحل محل التفاعل. تخزن هذه الطريقة الأحرف غير المكررة والمتكررة بشكل منفصل وعندما ينتهي التكرار ، يكون الحرف المطلوب هو العنصر الأول في القائمة.
2. كيف يمكنك إزالة التكرارات من المصفوفات؟
أولاً ، يجب عليك استخدام LinkedHashSet (Set Interface) للاحتفاظ بترتيب الإدراج الأصلي للعناصر في المجموعة. يجب عليك استخدام الحلقات أو وظائف العودية لحل هذه الأنواع من أسئلة مقابلة الترميز.
العامل الرئيسي الذي يجب أن نضعه في الاعتبار عند التعامل مع المصفوفات ليس العناصر التي تحتوي على نسخ مكررة. المشكلة الرئيسية هنا هي إزالة التكرارات بدلاً من ذلك. المصفوفات هي هياكل بيانات ثابتة ذات طول ثابت ، وبالتالي لا يمكن تغييرها. لذلك ، لحذف عناصر من المصفوفات ، تحتاج إلى إنشاء مصفوفات جديدة وتكرار المحتوى في هذه المصفوفات الجديدة.
أولاً ، يجب عليك تحويل المصفوفات إلى Arraylists ثم إنشاء LinkedHashSets من ArrayLists هذه. إذا كانت مصفوفات الإدخال تحتوي على عدد أكبر من التكرارات ، فيمكن أن ينتج عن ذلك مصفوفات مؤقتة متعددة ، وبالتالي زيادة تكلفة استيراد المحتوى. يفرض هذا التقييد أننا نتعامل مع هذه المشكلة بطريقة تتطلب ذاكرة وقدرة معالجة أقل.
يجب أن نزيل التكرارات ولكن لا ننسخها في المصفوفات الناتجة ، وبالتالي لا نحذف التكرارات تمامًا ولكن نستبدلها ببساطة بـ 0 كقيمة افتراضية.
3. كيف نتحقق من أن الرقم هو عدد أولي؟
هذا أحد أكثر أسئلة مقابلة الترميز شيوعًا والتي تتضمن معرفة ما إذا كان الرقم المحدد عددًا أوليًا أم لا. هذه الأنواع من البرامج هي أسس التفكير الحسابي حيث يجب أن نتوصل إلى حلول تستند إلى حقيقة أن الأعداد الأولية كلها أعداد طبيعية لا يمكن تقسيمها بأرقام موجبة غير 1.
يجب أن نكتب كودًا لإنشاء حلقات تتحقق من كل رقم يبدأ من 1 إلى الرقم المستهدف لمعرفة ما إذا كان الرقم الهدف قابلاً للقسمة على أي رقم موجب آخر غير نفسه أم 1.
هذه الوظيفة ستقودنا إلى الحل. عند التحقق من وجود رقم كبير بشكل خاص ، يمكننا ببساطة التحقق من أن الجذر التربيعي لـ N ، N هو الرقم المستهدف. ليست هناك حاجة للتحقق حتى N في حالة وجود جذر تربيعي مؤهل.
إذا كان الرقم غير قابل للقسمة على 2 ، فلا داعي للتحقق مما إذا كان قابلاً للقسمة على أرقام زوجية أخرى ، وبالتالي تقليل الوقت المطلوب لإيجاد الحل. هذه نسخة محسّنة من الحل حيث يكون تحليل الرقم قبل كتابة الحل مفيدًا.
4. كيف يمكنك التحقق مما إذا كانت السلاسل تحتوي على أرقام فقط؟
إذا كنت ترغب في كتابة تعبيرات عادية للتحقق مما إذا كانت السلاسل عبارة عن أرقام فقط أو إذا كانت تحتوي على أحرف غير رقمية ، فيجب أن تعتاد أولاً على استخدام مجموعات الأحرف في تعبيرات Java العادية. تدعم لغات البرمجة مثل Java التعبيرات العادية بمساعدة فئة java.util.regex.Matcher و java.util.regex.Pattern. Java.util.regex هي حزمة مخصصة لهذا الغرض.
من أجل التحقق من وجود الأرقام فقط باستخدام التعبيرات النمطية ، يمكننا استخدام التعليمات البرمجية لتحليل ما إذا كانت السلاسل تحتوي على عدد صحيح أولي. سوف نتحقق مما إذا كانت السلسلة تحتوي على أرقام فقط ضمن 0 - 9. حتى إذا كانت السلسلة تحتوي على أرقام ولكنها تحتوي أيضًا على أحرف أخرى ، فهي ليست سلسلة رقمية بسيطة. تقوم التعبيرات العادية بالتحقق من الأرقام الصحيحة فقط ولا تأخذ في الاعتبار الأحرف النقطية (.) ، وبالتالي ، فإن جعل الأرقام العشرية والنقاط العائمة تفشل في الاختبار.
5. كيف يمكنك عكس الكلمات في الجملة المستهدفة دون مساعدة أساليب المكتبة؟
هذا أيضًا أحد أسئلة مقابلة الترميز الشائعة جدًا. أولاً ، يجب أن نفهم المتطلبات وكيفية سد الفجوة في هذا المطلب. عند مواجهة مثل هذه الأسئلة ، يجب أن نركز أولاً على طرح الأسئلة الصحيحة. السلاسل ليست سوى جمل من أحرف محددة قد تحتوي على كلمة واحدة أو عدة كلمات.
قد تكون الجملة فارغة أيضًا. على سبيل المثال ، إذا أعطيت لنا الجملة ، "البرمجة ممتعة." ، يجب أن نعكسها إلى "المتعة هي البرمجة". على نحو فعال. يجب أن نستخدم التعبيرات العادية في Java لتقسيم السلاسل المحددة إلى مسافات متبوعة بتطبيق طريقة reverse () من فئة الأداة المساعدة Collections.
بمجرد أن تتمكن من تقسيم السلاسل باستخدام '\\ s' ، سيتم إرجاع مصفوفة من الكلمات كنتيجة لذلك. هذا أيضًا يعتني بالكلمات المفصولة باستخدام مسافات متعددة. بمجرد إرجاع المصفوفة ، يمكنك بعد ذلك اختيار إنشاء ArrayLists من هذه المصفوفات متبوعة باستخدام طريقة Collections.reverse (). هذا يعكس ArrayLists وستتم إعادة تهيئة كل كلمة بترتيب عكسي.
الآن ، كل ما تبقى هو استخدام StringBuilder لسلسلة سلاسل متعددة من خلال ArrayList iteration. يجب على المرء أن يتأكد من تحديد الحجم لأن تغيير حجم StringBuilder هو عملية مكلفة من حيث قوة المعالجة والذاكرة. يؤدي تغيير الحجم إلى إنشاء مصفوفات جديدة من نسخ المحتوى من المصفوفات القديمة.
6. كيف يمكنك استبدال أو إزالة الأحرف من السلاسل؟
لنفترض أن لدينا سلسلة نصية ، "Woocommerce" ، ونرغب في استبدال الحرف "r" بالحرف "n" ، فهناك طرق متعددة لتحقيق ذلك. توفر فئات String في Java طرقًا متعددة لاستبدال الأحرف داخل السلاسل باستخدام CharSequence والسلاسل الفرعية.
يمكنك بسهولة استدعاء طريقة الاستبدال داخل السلسلة التي ستنتهي باستبدال الحرف الهدف وإرجاع الحرف المطلوب كنتيجة. الجمل غير قابلة للتغيير في لغات البرمجة مثل Java.
وبالتالي ، في كل مرة يتم فيها تنفيذ هذه العمليات مثل الإزالة أو الاستبدال على السلاسل ، يتم إنشاء كائنات سلسلة جديدة بشكل افتراضي. هناك 4 طرق محملة بشكل زائد لاستبدال السلاسل باستخدام Java:
- استبدال (char oldChar، char newChar)
- replaceAll (سلسلة regex ، استبدال سلسلة)
- استبدال (هدف CharSequence ، استبدال CharSequence)
- replaceFirst (سلسلة regex ، استبدال سلسلة)
CharSequence هي واحدة من الواجهات الفائقة للسلاسل StringBuilder و StringBuffer ، مما يسمح لنا بتمرير أي من هذه الكائنات كوسيطات لطريقة الاستبدال هذه. ينتهي replaceAll () باستبدال كل تطابق فردي بسلاسل بديلة بينما يستبدل replaceFirst () فقط المطابقات الأولى.
بشكل عام ، كل هذه منهجيات قوية تقبل التعبير العادي. تسمح فئة Java.lang.String بكل هذه الطرق المحملة بشكل زائد والتي يمكنها بسهولة استبدال الأحرف الفردية أو السلاسل الفرعية في Java.
يوصى بشدة باستخدام replaceAll () لأن هذا يحل محل كل تكرار للأحرف المطابقة. يتيح لنا اتباع هذا النهج توقع أنماط التعبير المنتظم ، وبالتالي اكتساب المزيد من القوة. يمكن أن تستبدل هذه الطريقة أيضًا كل فاصلة بأنابيب لتحويل الملفات المفصولة بفواصل إلى سلاسل كومة محددة.
ومع ذلك ، إذا رغب المرء في استبدال حرف واحد فقط ، فيمكنه فقط استخدام طريقة replace () التي تأخذ في الاعتبار الحرف المعطى القديم والجديد.
قراءة: أسئلة وأجوبة مقابلة جافا
7. كيف يمكنك إلحاق نصوص بملفات بلغات البرمجة مثل Java؟
يختلف الإلحاق كثيرًا مقارنة بإنشاء ملفات جديدة وكتابة البيانات في الملفات الجديدة. في حالات الإلحاق ، توجد الملفات بالفعل ونحتاج ببساطة إلى إضافة نص في نهاية الملف. هذا مشابه لملفات السجل حيث يتم تحديثها باستمرار مع النظام.
ملفات السجل هي المثال المثالي لإلحاق النص حيث تستمر التطبيقات بشكل متكرر في إلحاق تفاصيل السجل بهذه الملفات. إطارات عمل التسجيل غير مطلوبة لهذه المشكلة ، ولكن يجب أن تعرف كيفية إلحاق نص بالملفات الموجودة. لحل هذه المشكلة ، يجب أن تكون على دراية بالفئات الملائمة لكتابة ملفات الأحرف.
يحتوي الفصل على مُنشئين يفترض قبول المخزن المؤقت للبايت الافتراضي وترميز الأحرف. إذا كنت ترغب في تحديد القيم بنفسك ، يمكنك ببساطة إنشاء OutputStreamWriter باستخدام FileOutputStream. يعتمد توفر الملفات على الأنظمة الأساسية الأساسية ، والتي تحدد ما إذا كان الملف قد تم إنشاؤه أم لا.
تسمح بعض الأنظمة الأساسية بتهيئة الملفات لوظائف الكتابة باستخدام FileWrite واحد أو كائنات متعددة لكتابة الملفات. ومع ذلك ، ستفشل المنشئات من هذه الفئة بمجرد تهيئة الملف المعني بالفعل. يستخدم FileWriter لكتابة تدفقات الأحرف ويمكن لـ FileOutputStream كتابة تدفقات البايت الخام.
تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.
8. كيف يمكنك إيجاد أكبر أو أصغر عدد في مصفوفة أعداد صحيحة؟
لهذا الحل ، يجب علينا ترميز دالة أو طريقة يمكنها العثور على أكبر أو أصغر رقم من المصفوفات التي هي أعداد صحيحة كاملة. يجب علينا أولاً إنشاء ملف مصدر في Java باستخدام الاسم MaximumMinimumArrayDemo.java ونسخ الكود المكتوب هنا للترجمة والتنفيذ.
يمكننا استخدام متغيرين يمكن أن نشير إليهما بـ "الأكبر" و "الأصغر" لتخزين القيم القصوى والدنيا على التوالي من المصفوفات. يمكن تهيئة أصغر رقم باستخدام عدد صحيح. يمكن تهيئة MIN_VALUE والأكبر باستخدام عدد صحيح. MAX_VALUE.
مع كل تكرار للحلقات التي بدأتها ، يمكنك مقارنة الأرقام الحالية بـ "الأكبر" و "الأصغر" وتحديثها وفقًا لذلك. لا تتجاوز المصفوفات طريقة toString في Java ، لذا يمكنك استخدام Arrays.toString () لطباعة محتويات المصفوفات الهدف.
يمكنك استخدام هذه الطريقة الثابتة للاتصال مباشرة بالوظيفة الرئيسية. يجب عليك بعد ذلك تمرير المصفوفات العشوائية من خلال هذه الطريقة للتحقق مما إذا كان قد تم إرجاع القيم القصوى والدنيا بدقة. يمكنك أيضًا اختيار أتمتة هذا الاختبار من خلال اختبارات الوحدة في IDE الخاص بك.
الخروج: أهم 4 مهارات كمبيوتر لوضعها في سيرتك الذاتية
خاتمة
لا تعد الدورات التي تركز على البرمجة رائعة لحل المشكلات فحسب ، بل تزيد أيضًا من فرص اختيارك عند التقدم للوظائف. إذا كنت ترغب في معرفة المزيد حول برمجة Java ومشكلات الترميز الأكثر تقدمًا ، فيمكنك تسجيل نفسك في دورة تدريبية شاملة مثل ماجستير العلوم في upGrad's في علوم الكمبيوتر أو الدورة التدريبية الكاملة لتطوير المكدس .