CodeGym /جاوا بلاگ /Random-SD /جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن...
John Squirrels
سطح
San Francisco

جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا. حصو 11

گروپ ۾ شايع ٿيل
سلام ايستائين جو تيز ترين ٻيڙي به رڳو لهرن جي مٿان چڙهي ويندي جيڪڏهن ان جو ڪو رستو نه هجي. جيڪڏھن توھان ھي مضمون پڙھي رھيا آھيو ھاڻي، توھان کي ضرور ھڪڙو مقصد آھي. بنيادي شيءَ نه وڃڻ جي آهي ڪورس ۽ ان جي بدران جاوا ڊولپر ٿيڻ لاءِ. اڄ آئون جاوا ڊولپرز لاءِ سوالن جو جائزو جاري رکڻ چاهيان ٿو ته جيئن توهان جي نظريي ۾ ڪجهه خال ڀرڻ ۾ مدد لاءِ. جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 11 - 1

97. ڇا ڪو ضابطو لاڳو ٿئي ٿو جڏهن اوور رائڊنگ برابر ()؟

جڏهن هڪجهڙائي () طريقي کي ختم ڪري، توهان کي هيٺين قاعدن سان عمل ڪرڻ گهرجي:
  • reflexivity - ڪنهن به قدر لاءِ x ، x.equals(x) هميشه سچو موٽڻ گهرجي (جتي x != null ).

  • symmetry - ڪنهن به قدر x ۽ y لاءِ ، x.equals(y) کي صحيح موٽڻ گهرجي صرف ان صورت ۾ جڏهن y.equals(x) سچو موٽائي .

  • transitivity - ڪنهن به قدر لاءِ x ، y ۽ z ، جيڪڏهن x.equals(y) سچو موٽائي ٿو ۽ y.equals(z) به سچو ڏي ٿو ، ته پوءِ x.equals(z) کي سچو موٽڻ گهرجي .

  • consistency — ڪنهن به قدر لاءِ x ۽ y ، بار بار x.equals(y) کي ڪال ڪرڻ سان هميشه ساڳي قدر موٽندي جيستائين ٻن شين جي مقابلي لاءِ استعمال ٿيل فيلڊ هر ڪال جي وچ ۾ تبديل نه ٿيا آهن.

  • null comparison - ڪنهن به قدر x لاءِ ، سڏڻ x.equals(null) کي غلط موٽڻ گهرجي .

98. ڇا ٿيندو جيڪڏھن توھان اوور رائڊ نه ڪندا equals() ۽ hashCode()؟

انهي صورت ۾، hashCode() ميموري سيل جي ايڊريس جي بنياد تي ٺاهيل نمبر واپس ڪندو جتي اعتراض ذخيرو ٿيل آهي. ٻين لفظن ۾، جڏهن اصل hashCode() طريقو سڏيو وڃي ٿو ٻن شين تي بلڪل ساڳين شعبن سان، نتيجو مختلف ٿيندو (ڇاڪاڻ ته اهي مختلف ميموري جڳهن ۾ محفوظ ٿيل آهن). اصل equals() طريقو حوالن جو مقابلو ڪري ٿو، يعني اهو اشارو ڪري ٿو ته ڇا حوالا ساڳيا اعتراض ڏانهن اشارو ڪن ٿا. ٻين لفظن ۾، مقابلو استعمال ڪري ٿو == آپريٽر، ۽ اهو هميشه مختلف شين لاء غلط موٽندو ، جيتوڻيڪ انهن جا شعبا هڪجهڙا آهن. صحيح موٽايو ويندو آهي صرف ان صورت ۾ جڏهن ساڳئي اعتراض جي حوالن جي مقابلي ۾. ڪڏهن ڪڏهن اهو احساس ٿئي ٿو ته انهن طريقن کي ختم نه ڪيو وڃي. مثال طور، توهان چاهيو ٿا ته هڪ خاص طبقي جون سڀئي شيون منفرد هجن - انهن طريقن کي ختم ڪرڻ صرف منفرد هيش ڪوڊس جي موجوده گارنٽي کي خراب ڪري سگهي ٿو. اهم شيء انهن طريقن جي nuances کي سمجهڻ آهي، ڇا اووررائيڊ يا نه، ۽ جيڪو به طريقو استعمال ڪرڻ لاء صورتحال کي سڏي ٿو.

99. ڇو صرف برابري جي گهرج پوري ٿئي ٿي جڏهن x.equals(y) صحيح موٽائي؟

هي سوال ٿورو عجيب آهي. جيڪڏهن اعتراض A اعتراض B جي برابر آهي ته پوء اعتراض B اعتراض A جي برابر آهي. جيڪڏهن B اعتراض A جي برابر نه آهي ته پوء واپس ڪيئن ممڪن ٿي سگهي ٿو؟ هي عام فهم آهي.

100. هڪ HashCode ٽڪر ڇا آهي؟ توهان ان سان ڪيئن ڊيل ڪندا؟

هڪ HashCode تصادم تڏهن ٿئي ٿو جڏهن ٻه مختلف شيون ساڳيا HashCode آهن . اهو ڪيئن ممڪن آهي؟ خير، هيش ڪوڊ هڪ انٽيجر تي ميپ ڪيو وڃي ٿو، جنهن جي حد -2147483648 کان 2147483647 تائين آهي. اهو آهي، اهو تقريبا 4 بلين مختلف انٽيجرن مان هڪ ٿي سگهي ٿو. هي سلسلو تمام وڏو آهي پر لامحدود نه آهي. ان جو مطلب آهي ته حالتون آهن جڏهن ٻه مڪمل طور تي مختلف شيون ساڳيا هيش ڪوڊ هجن. اهو تمام گهڻو ممڪن ناهي، پر اهو ممڪن آهي. هڪ خراب طريقي سان لاڳو ٿيل هيش فنڪشن هڪجهڙائي واري هيش ڪوڊس کي وڌيڪ بار بار ڪري سگهي ٿو واپسي نمبرن کي ننڍي رينج ۾، اهڙيءَ طرح ٽڪراءَ جو موقعو وڌائي ٿو. ٽڪرن کي گھٽائڻ لاءِ، توھان کي ھئش ڪوڊ طريقي جي سٺي عمل درآمد ڪرڻ جي ضرورت آھي جيڪا یکساں طور تي قدرن کي پکڙجي ۽ بار بار ويلن جي موقعن کي گھٽائي.

101. ڇا ٿيندو جيڪڏهن هيش ڪوڊ ڪانٽريڪٽ ۾ حصو وٺندڙ عنصر جي قيمت تبديل ٿي وڃي؟

جيڪڏهن هيش ڪوڊ جي ڳڻپ ۾ شامل هڪ عنصر تبديل ٿي وڃي، پوء اعتراض جو هيش ڪوڊ تبديل ٿيڻ گهرجي (جيڪڏهن هيش فنڪشن سٺو آهي). ان ڪري توهان کي هيش ميپ ۾ ڪيئيز طور تبديل نه ٿيندڙ شيون استعمال ڪرڻ گهرجن ، ڇاڪاڻ ته انهن جي اندروني حالت (فيلڊز) ٺاهڻ کان پوءِ تبديل نه ٿي ڪري سگهجي. ۽ اهو ان جي پٺيان آهي ته انهن جو هيش ڪوڊ ٺهڻ کان پوء تبديل ٿئي ٿو. جيڪڏهن توهان هڪ مٽائيندڙ شئي کي ڪيئي طور استعمال ڪندا آهيو، ته پوءِ جڏهن اعتراض جا شعبا تبديل ٿيندا، ته ان جو هيش ڪوڊ تبديل ٿي ويندو، ۽ توهان HashMap ۾ لاڳاپيل ڪيئي-قدر جوڙو وڃائي سگهو ٿا . آخرڪار، اهو اصل هيش ڪوڊ سان لاڳاپيل بالٽ ۾ ذخيرو ڪيو ويندو، پر اعتراض تبديل ٿيڻ کان پوء، توهان ان کي مختلف بالٽ ۾ ڳوليندا.

102. لکو equals() ۽ hashCode() طريقن هڪ شاگرد طبقي لاءِ جنهن ۾ String name ۽ int age fields آهن.

public class Student {
int age;
String name;

 @Override
 public boolean equals(final Object o) {
   if (this == o) {
     return true;
   }
   if (o == null || this.getClass() != o.getClass()) {
     return false;
   }

   final Student student = (Student) o;

   if (this.age != student.age) {
     return false;
   }
   return this.name != null ? this.name.equals(student.name) : student.name == null;
 }

 @Override
 public int hashCode() {
   int result = this.age;
   result = 31 * result + (this.name != null ? this.name.hashCode() : 0);
   return result;
 }
}
برابر():
  • پهرين، اسان حوالن کي سڌو سنئون موازنہ ڪريون ٿا، ڇاڪاڻ ته جيڪڏهن حوالن جي نقطي ساڳئي اعتراض تي، برابري جي جانچ جاري رکڻ ۾ ڪهڙو نقطو آهي؟ اسان اڳ ۾ ئي ڄاڻون ٿا ته نتيجو صحيح ٿيندو .

  • اسان null لاءِ چيڪ ڪريون ٿا ۽ ڇا ڪلاس جا قسم ساڳيا آهن ڇو ته جيڪڏهن پيرا ميٽر null يا ڪنهن ٻئي قسم جو آهي ته پوءِ شيون برابر نه ٿي سگهن ٿيون، ۽ نتيجو غلط هجڻ گهرجي .

  • اسان پيٽرولر کي ساڳي قسم ۾ اڇلائي ڇڏيو (آخر، ڇا ٿيندو جيڪڏهن اهو والدين جي قسم جو اعتراض آهي).

  • اسان ابتدائي شعبن جو مقابلو ڪريون ٿا (هڪ مقابلو استعمال ڪندي =! ڪافي ٿيندو). جيڪڏهن اهي برابر نه آهن، اسان غلط موٽندا آهيون .

  • اسان غير پرائمري فيلڊ کي چيڪ ڪريون ٿا ته ڏسو ته اهو null آهي ۽ برابر طريقو استعمال ڪري ٿو ( اسٽرنگ ڪلاس طريقي کي ختم ڪري ٿو، تنهنڪري اهو مقابلو صحيح طريقي سان انجام ڏيندو). جيڪڏهن ٻئي فيلڊس null آهن، يا برابر آهي واپسي true ، اسان چيڪ ڪرڻ بند ڪريون ٿا، ۽ طريقو صحيح موٽائي ٿو .

hashCode() :
  • اسان هيش ڪوڊ جي شروعاتي قيمت کي اعتراض جي عمر جي فيلڊ جي قيمت جي برابر مقرر ڪيو .

  • اسان موجوده هيش ڪوڊ کي 31 سان ضرب ڪريون ٿا (ويلز ۾ وڏي پکيڙ لاءِ) ۽ پوءِ شامل ڪريون ٿا هيش ڪوڊ جو غير پرائميٽ اسٽرنگ فيلڊ (جيڪڏهن اهو ناڪاري ناهي).

  • اسان نتيجو واپس آڻينداسين.

  • هن طريقي سان هن طريقي کي ختم ڪرڻ جو مطلب آهي ته شيون ساڳئي نالي سان ۽ انٽ ويلز هميشه ساڳيا هيش ڪوڊ واپس ڪندا.

103. "if (obj instanceof Student)" ۽ "if (getClass() == obj.getClass())" استعمال ڪرڻ ۾ ڪهڙو فرق آهي؟

اچو ته هڪ نظر رکون ته هر اظهار ڇا ڪندو آهي:
  • instanceof چيڪ ڪري ٿو ته ڇا کاٻي پاسي واري اعتراض جو حوالو ساڄي پاسي واري قسم جو مثال آهي يا ان جي ذيلي قسم مان هڪ آهي.

  • "getClass() == ..." چيڪ ڪري ٿو ته ڇا قسم ساڳيا آهن.

ٻين لفظن ۾، getClass() ڪلاس جي مخصوص سڃاڻپ کي واپس ڏئي ٿو، پر مثال جي واپسي صحيح آهي جيتوڻيڪ اعتراض صرف هڪ ذيلي قسم آهي، جيڪو اسان کي وڌيڪ لچڪ ڏئي سگهي ٿو جڏهن پوليمورفيزم استعمال ڪندي. ٻئي طريقا واعدو ڪندڙ آهن جيڪڏهن توهان سمجهو ٿا ته اهي ڪيئن ڪم ڪن ٿا ۽ انهن کي صحيح جڳهن تي لاڳو ڪريو.

104. ڪلون () طريقي جي مختصر وضاحت ڏيو.

ڪلون () طريقو آبجیکٹ ڪلاس سان تعلق رکي ٿو. ان جو مقصد موجوده شئي جو ڪلون (ڪاپي) ٺاھڻ ۽ واپس ڪرڻ آھي. جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 11 - 2ھن طريقي کي استعمال ڪرڻ لاء، توھان کي لاڳو ڪرڻ جي ضرورت آھي Cloneable مارڪر انٽرفيس:
Student implements Cloneable
۽ ڪلون () طريقو پاڻ کي ختم ڪريو:
@Override
protected Object clone() throws CloneNotSupportedException {
 return super.clone();
}
آخرڪار، اهو آبجیکٹ ڪلاس ۾ محفوظ آهي، يعني اهو صرف شاگردن جي طبقي ۾ نظر ايندو ۽ ٻاهرئين طبقن کي نظر نه ايندو.

105. ڪنهن شئي ۾ ڪلون() ميٿڊ ۽ ريفرنس متغيرن جي حوالي سان توهان کي ڪهڙيون خاص ڳالهيون ذهن ۾ رکڻ گهرجن؟

جڏهن شيون ڪلون ڪيون وينديون آهن، صرف ابتدائي قدر ۽ اعتراض جي حوالن جو قدر نقل ڪيو ويندو آهي. هن جو مطلب اهو آهي ته جيڪڏهن هڪ اعتراض هڪ فيلڊ آهي جيڪو ڪنهن ٻئي اعتراض جو حوالو ڏئي ٿو، پوء صرف حوالو ڪلون ڪيو ويندو - هي ٻيو حوالو ڪيل اعتراض ڪلون نه ڪيو ويندو. اهو ئي آهي جنهن کي ٿلهي ڪاپي سڏيو ويندو آهي. تنهن ڪري، ڇا جيڪڏهن توهان کي هڪ مڪمل ڪاپي جي ضرورت آهي، جتي هر گهريل اعتراض ڪلون ٿيل آهي؟ توهان ڪيئن پڪ ڪندا آهيو ته اهي صرف حوالن جون ڪاپيون نه آهن، پر ان جي بدران مختلف شيون جي مڪمل ڪاپيون آهن جيڪي ڍير ۾ مختلف ياداشت جي پتي تي قبضو ڪن ٿا؟ دراصل، اهو تمام سادو آهي - هر ڪلاس لاءِ جيڪو اندروني طور تي حوالو ڏنو ويو آهي، توهان کي کلون () طريقي کي ختم ڪرڻ ۽ ڪلون ايبل مارڪر انٽرفيس شامل ڪرڻ جي ضرورت آهي. هڪ دفعو توهان ائين ڪيو، ڪلون آپريشن موجوده شين جي حوالن کي نقل نه ڪندو، پر ان جي بدران حوالو ڪيل شيون نقل ڪندو، ڇاڪاڻ ته هاڻي اهي پڻ پاڻ کي نقل ڪرڻ جي صلاحيت رکن ٿا.

استثنا

106. هڪ غلطي ۽ هڪ استثنا جي وچ ۾ ڇا فرق آهي؟

استثنا، گڏوگڏ غلطيون، Throwable جا ذيلي ڪلاس آهن . تنهن هوندي به، انهن جا پنهنجا اختلاف آهن. غلطي هڪ مسئلو ظاهر ڪري ٿو جيڪو بنيادي طور تي سسٽم وسيلن جي کوٽ جي ڪري ٿئي ٿو. ۽ اسان جي ايپليڪيشن کي انهن قسمن جا مسئلا نه ڏسڻ گهرجن. انهن غلطين جا مثال شامل آهن هڪ سسٽم حادثي ۽ يادگيري کان ٻاهر جي غلطي. غلطيون اڪثر ڪري رن ٽائم تي ٿينديون آهن، ڇاڪاڻ ته اهي اڻ چيڪ ٿيل آهن. جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 11 - 3استثنا اهي مسئلا آهن جيڪي رن ٽائم ۽ مرتب وقت تي ٿي سگهن ٿيون. اهي مسئلا عام طور تي ڪوڊ ۾ پيدا ٿين ٿا جيڪي اسان ڊولپرز طور لکندا آهيون. ان جو مطلب اهو آهي ته اهي استثنا اسان تي وڌيڪ متوقع ۽ وڌيڪ منحصر آهن. ان جي ابتڙ، غلطيون اسان کان وڌيڪ بي ترتيب ۽ وڌيڪ آزاد آهن. ان جي بدران، اهي سسٽم ۾ مسئلن تي ڀاڙين ٿا ته اسان جي ايپليڪيشن تي هلندڙ آهي.

107. چيڪ ٿيل، اڻ چيڪ ٿيل، استثنا، اڇلائڻ ۽ اڇلائڻ ۾ ڇا فرق آهي؟

جيئن مون اڳ ۾ چيو آهي، هڪ استثنا هڪ ​​رن ٽائم يا مرتب وقت جي غلطي آهي جيڪا ڊولپر طرفان لکيل ڪوڊ ۾ ٿئي ٿي (ڪجهه غير معمولي صورتحال جي ڪري). چيڪ ٿيل اھو آھي جنھن کي اسين استثنا سڏين ٿا ته ھڪڙو طريقو ھميشه ھٿ ڪرڻ گھرجي ڪوشش-ڪيچ ميڪانيزم کي استعمال ڪندي يا ڪالنگ جي طريقي کي ريٿرو ڪندي. اڇلائي لفظ استعمال ڪيو ويندو آهي طريقي جي هيڊر ۾ استثنا ظاهر ڪرڻ لاءِ ته طريقو اڇلائي سگھي ٿو. ٻين لفظن ۾، اهو اسان کي هڪ ميکانيزم مهيا ڪري ٿو جيڪو ڪالنگ جي طريقي سان استثناء کي اڇلائڻ لاء. اڻ چيڪ ٿيل استثنان کي سنڀالڻ جي ضرورت ناهي. اهي گهٽ پيش گوئي وارا هوندا آهن ۽ گهٽ امڪان هوندا آهن. اھو چيو، توھان انھن کي سنڀالي سگھوٿا جيڪڏھن توھان چاھيو. اسان اڇلائي استعمال ڪندا آهيون جڏهن دستي طور تي هڪ استثنا اڇلائي، مثال طور:
throw new Exception();

108. استثنيٰ ڇا آهي؟

استثناءَ جو درجو تمام وسيع آهي. هتي بيان ڪرڻ لاء تمام گهڻو آهي. تنهن ڪري، ان جي بدران اسان صرف ان جي اهم شاخن تي غور ڪنداسين: جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 11 - 4 هتي، درجه بندي جي بلڪل چوٽي تي، اسان کي Throwable طبقو نظر اچي ٿو، جيڪو استثنا واري درجي جو عام اباڙ آهي ۽ بدلي ۾ ورهايو ويو آهي:
  • غلطيون - نازڪ، اڻ چيڪ ٿيل مسئلا.
  • استثنا - استثنا جيڪي چيڪ ڪري سگھجن ٿا.
استثناءَ کي ورهايو ويو آھي مختلف اڻ چيڪ ٿيل رن ٽائم استثناءَ ۽ مختلف چيڪ ٿيل استثنان ۾.

109. چيڪ ٿيل ۽ اڻ چيڪ ٿيل استثنا ڇا آهن؟

جيئن مون اڳ چيو:
  • چيڪ ٿيل استثنا اهي استثنا آهن جيڪي توهان کي ڪنهن نه ڪنهن طريقي سان سنڀالڻ گهرجن. اھو آھي، توھان کي لازمي طور تي انھن کي ھٿ ڪرڻ گھرجي ھڪڙي ڪوشش-ڪيچ بلاڪ ۾ يا انھن کي مٿي ڏنل طريقي ڏانھن اڇلايو. هن کي ڪرڻ لاء، طريقي جي دستخط ۾ طريقي جي دليلن کي لسٽ ڪرڻ کان پوء، استعمال ڪريو throws <exception type> ظاهر ڪرڻ لاءِ ته طريقو اهو استثنا اڇلائي سگهي ٿو. اهو ڪجهه حد تائين هڪ ڊيڄاريندڙ وانگر آهي، ڪالنگ جو طريقو نوٽيس تي رکي ٿو ته اهو ان استثنا کي سنڀالڻ جي ذميواري قبول ڪرڻ گهرجي.

  • اڻ چيڪ ٿيل استثناء کي هٿ ڪرڻ جي ضرورت ناهي، ڇاڪاڻ ته اهي مرتب وقت تي چيڪ نه ڪيا ويا آهن ۽ عام طور تي وڌيڪ غير متوقع آهن. انهن جو بنيادي فرق چيڪ ٿيل استثنان سان اهو آهي ته انهن کي هٿ ڪرڻ هڪ ڪوشش-ڪيچ بلاڪ استعمال ڪندي يا ٻيهر اڇلائڻ لازمي آهي بجاءِ اختياري.

101. ھڪڙو مثال لکو جتي توھان استعمال ڪريو ڪوشش-ڪيچ بلاڪ ھڪڙي استثنا کي پڪڙڻ ۽ ھٿ ڪرڻ لاءِ.

try{                                                 // Start of the try-catch block
 throw new Exception();                             // Manually throw an exception
} catch (Exception e) {                              // Exceptions of this type and its subtypes will be caught
 System.out.println("Oops! Something went wrong =("); // Display the exception
}

102. ھڪڙو مثال لکو جتي توھان پنھنجي ذاتي استثنا کي پڪڙي ۽ ھٿ ڪريو.

پهرين، اچو ته اسان جو پنهنجو استثناء وارو ڪلاس لکون جيڪو Exception کي وراثت ۾ وٺي ٿو ۽ ان جي تعمير ڪندڙ کي اوور رائيڊ ڪري ٿو جيڪو هڪ غلطي جو پيغام وٺي ٿو دليل طور:
public class CustomException extends Exception {

 public CustomException(final String message) {
   super(message);
 }
}
اڳيون اسان دستي طور تي ھڪڙي اڇلائينداسين ۽ ان کي پڪڙينداسين جيئن اسان اڳئين سوال جي مثال ۾ ڪيو آھي.
try{
 throw new CustomException("Oops! Something went wrong =(");
} catch (CustomException e) {
 System.out.println(e.getMessage());
}
هڪ دفعو ٻيهر، جڏهن اسان اسان جو ڪوڊ هلائيندا آهيون، اسان هيٺ ڏنل پيداوار حاصل ڪندا آهيون:
اڙي! ڪجھ غلط ٿيو =(
جاوا ڊولپر پوزيشن لاءِ نوڪري جي انٽرويو کان سوالن ۽ جوابن جي ڳولا.  حصو 11 - 5خير، اهو سڀ ڪجهه اڄ لاء آهي! ايندڙ حصي ۾ ملنداسين!
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION