JavaRush /جاوا بلاگ /Random-UR /جاوا ڈویلپر کے انٹرویوز سے سوالات اور جوابات کا تجزیہ۔ حص...

جاوا ڈویلپر کے انٹرویوز سے سوالات اور جوابات کا تجزیہ۔ حصہ 2

گروپ میں شائع ہوا۔
ہیلو ایک بار پھر سب! ہم جونیئر، مڈل اور سینئر ڈویلپرز کے لیے 250+ سوالات کے جوابات تلاش کرتے رہتے ہیں ۔ سوالات کافی دلچسپ ہیں، اور میں خود ان کا تجزیہ کرنا چاہتا ہوں: ایسے لمحات میں آپ نظریاتی علم اور انتہائی غیر متوقع جگہوں پر خلاء تلاش کر سکتے ہیں۔ انٹرویو کے سوالات اور جوابات کا تجزیہ۔  حصہ 2 - 1پچھلا حصہ اس مضمون میں پایا جا سکتا ہے ۔ لیکن اس سے پہلے کہ ہم شروع کریں، میں آپ کو یاد دلانا چاہتا ہوں کہ:
  1. میں ان سوالات کو چھوڑ دوں گا جو مضامین کی اس سیریز کے ساتھ ملتے ہیں تاکہ معلومات کو دوبارہ نقل نہ کیا جائے۔ میں ان مواد کو پڑھنے کی تجویز کرتا ہوں، کیونکہ ان میں جاوا کور انٹرویو کے سب سے عام (مقبول) سوالات ہوتے ہیں۔
  2. DOU پر سوالات یوکرین میں پیش کیے جاتے ہیں، لیکن میرے پاس یہاں سب کچھ روسی زبان میں ہوگا۔
  3. جوابات کو مزید تفصیل سے بیان کیا جا سکتا ہے، لیکن میں نہیں کروں گا، اس کے بعد سے ہر سوال کا جواب ایک پورا مضمون لے سکتا ہے۔ اور وہ کسی انٹرویو میں آپ سے اتنی تفصیل سے نہیں پوچھیں گے۔
اگر ضروری ہوا تو میں گہرے مطالعہ کے لیے لنکس چھوڑ دوں گا۔ چلو اڑتے ہیں!

11. آبجیکٹ کلاس کے تمام طریقوں کو نام دیں۔

آبجیکٹ کلاس کے 11 طریقے ہیں:
  • کلاس<?> getClass() - موجودہ آبجیکٹ کی کلاس حاصل کرنا؛
  • int hashCode() - موجودہ آبجیکٹ کا ہیش کوڈ حاصل کرنا؛
  • بولین مساوی (آبجیکٹ آبجیکٹ) - موجودہ چیز کا کسی اور چیز سے موازنہ؛
  • آبجیکٹ کلون () - موجودہ آبجیکٹ کی کاپی بنانا اور واپس کرنا؛
  • String toString() — کسی چیز کی سٹرنگ کی نمائندگی حاصل کرنا؛
  • void notify() — اس آبجیکٹ کے مانیٹر پر انتظار کر رہے ایک تھریڈ کو جگانا (تھریڈ کا انتخاب بے ترتیب ہے)؛
  • void notifyAll() - اس آبجیکٹ کے مانیٹر پر منتظر تمام تھریڈز کو بیدار کرتا ہے۔
  • void wait() - موجودہ مانیٹر پر موجودہ تھریڈ کو اسٹینڈ بائی موڈ میں تبدیل کرتا ہے (اسے منجمد کر دیتا ہے)، صرف ایک مطابقت پذیر بلاک میں کام کرتا ہے جب تک کہ کچھ مطلع یا مطلع نہ کر دے تمام تھریڈ کو جاگتا ہے۔
  • باطل انتظار (طویل وقت ختم) - موجودہ مانیٹر پر موجودہ تھریڈ کو بھی منجمد کر دیتا ہے (موجودہ مطابقت پذیر پر)، لیکن اس حالت سے باہر نکلنے کے لیے ٹائمر کے ساتھ (یا دوبارہ: جب تک مطلع یا مطلع نہ ہو جائے)؛
  • void انتظار (طویل وقت ختم، int nanos) - اوپر بیان کردہ طریقہ سے ملتا جلتا طریقہ، لیکن منجمد کرنے کے لیے زیادہ درست ٹائمرز کے ساتھ؛
  • void finalize() - اس شے کو حذف کرنے سے پہلے، کوڑا اٹھانے والا اس طریقہ کو (آخر میں) کہتا ہے۔ اس کا استعمال مقبوضہ وسائل کو صاف کرنے کے لیے کیا جاتا ہے۔
hashCode , equals , clone , toString کو صحیح طریقے سے استعمال کرنے اور طریقوں کو حتمی شکل دینے کے لیے، موجودہ کام اور حالات کو مدنظر رکھتے ہوئے، ان کی دوبارہ وضاحت کی جانی چاہیے۔

12. وسائل سے نمٹنے کے دوران وسائل کے ساتھ کوشش کرنے اور آخر میں کوشش کرنے کے درمیان کیا فرق ہے؟

عام طور پر، ٹرائی کیچ-آخر میں استعمال کرتے وقت، حتمی بلاک وسائل کو بند کرنے کے لیے استعمال کیا جاتا تھا۔ Java 7 نے ایک نئی قسم کا آپریٹر try-with-resources متعارف کرایا، وسائل کو آزاد کرنے کے لیے try-catch-finally کا ایک اینالاگ ، لیکن زیادہ کمپیکٹ اور پڑھنے کے قابل۔ آئیے یاد رکھیں کہ ٹرائی کیچ آخر میں کیسا لگتا ہے :
String text = "some text......";
BufferedWriter bufferedWriter = null;
try {
   bufferedWriter = new BufferedWriter(new FileWriter("someFileName"));
   bufferedWriter.write(text);
} catch (IOException e) {
   e.printStackTrace();
} finally {
   try {
       bufferedWriter.close();
   } catch (IOException e) {
       e.printStackTrace();
   }
}
اب آئیے اس کوڈ کو دوبارہ لکھتے ہیں، لیکن وسائل کے ساتھ کوشش کریں :
String text = "some text......";
try(BufferedWriter bufferedWriter =new BufferedWriter(new FileWriter("someFileName"))) {
   bufferedWriter.write(text);
} catch (IOException e) {
   e.printStackTrace();
}
یہ کسی طرح آسان ہو گیا ہے، کیا آپ نہیں سوچتے؟ آسان بنانے کے علاوہ، چند نکات ہیں:
  1. وسائل کے ساتھ کوشش کرنے میں ، قوسین میں اعلان کردہ وسائل (جو بند ہو جائیں گے) کو لازمی طور پر AutoCloseable انٹرفیس اور اس کا واحد طریقہ، close() کو لاگو کرنا چاہیے ۔

    کلوز طریقہ ایک مضمر آخر میں بلاک میں عمل میں لایا جاتا ہے ، بصورت دیگر پروگرام کس طرح سمجھے گا کہ دیئے گئے وسائل کو کیسے بند کیا جائے؟

    لیکن، غالباً، آپ وسائل کے اپنے نفاذ اور ان کے اختتامی طریقہ کو شاذ و نادر ہی لکھیں گے۔

  2. بلاک پر عمل درآمد کا سلسلہ:

    1. بلاک کرنے کی کوشش کریں ۔
    2. مضمر آخر میں ۔
    3. ایک کیچ بلاک جو پچھلے مراحل میں مستثنیات کو پکڑتا ہے۔
    4. واضح آخر میں ۔

    ایک اصول کے طور پر، فہرست میں جو مستثنیات کم دکھائی دیتے ہیں وہ ان میں رکاوٹ بنتے ہیں جو اوپر دکھائی دیتے ہیں۔

ایک ایسی صورت حال کا تصور کریں جہاں try-catch استعمال کرتے وقت آپ کی کوشش میں ایک استثناء واقع ہوتا ہے ۔ اس کے مطابق، ایک مخصوص کیچ بلاک فوری طور پر کام کرنا شروع کر دیتا ہے ، جس میں آپ ایک اور استثنیٰ لکھتے ہیں (مثال کے طور پر، ایک پیغام کے ساتھ جو غلطی کو مزید تفصیل سے بیان کرتا ہے)، اور آپ چاہتے ہیں کہ طریقہ اس استثنا کو مزید پھینک دے۔ اس کے بعد آخر میں بلاک کا نفاذ آتا ہے ، اور اس میں ایک استثناء بھی ڈالا جاتا ہے۔ لیکن یہ مختلف ہے۔ یہ طریقہ آخر کار ان دونوں میں سے کس کو مستثنیٰ قرار دے گا؟ آخر میں بلاک کی طرف سے پھینک دیا استثناء ! لیکن وسائل کے ساتھ کوشش کرنے کے ساتھ ایک نقطہ بھی ہے ۔ اب اسی صورت حال میں وسائل کے ساتھ کوشش کرنے کے رویے کو دیکھتے ہیں ۔ ہمیں try block میں ایک استثنا ملتا ہے جب ہم وسائل بند کرنے کی کوشش کرتے ہیں close() طریقہ میں ، یعنی implicit finally ۔ ان میں سے کون کون سی استثنیٰ حاصل کرے گا ؟ کوشش بلاک کی طرف سے پھینک دیا گیا تھا کہ ایک ! ایک مضمر آخر میں ( close() طریقہ سے ) کی رعایت کو نظر انداز کر دیا جائے گا۔ اس نظر انداز کو استثنائی دباو بھی کہا جاتا ہے۔

13. بٹ وائز آپریشنز کیا ہیں؟

بٹ وائز آپریشنز بٹ سٹرنگز پر ہونے والے آپریشن ہیں جن میں منطقی آپریشنز اور بٹ وائز شفٹ شامل ہیں۔ منطقی آپریشنز:
  • bitwise AND - بٹ ویلیوز کا موازنہ کرتا ہے، اور اس عمل میں، کوئی بھی بٹ 0 (غلط) پر سیٹ کرتا ہے نتیجہ میں متعلقہ بٹ کو 0 کے طور پر سیٹ کرتا ہے۔ یعنی، اگر دونوں اقدار کا موازنہ کیا جائے تو بٹ 1 (سچ) تھا، نتیجہ بھی 1 ہوگا۔

    کے طور پر بیان کیا گیا - اور ، اور

    مثال: 10111101 اور 01100111 = 00100101

  • bitwise OR پچھلے والے کا الٹا آپریشن ہے۔ 1 پر سیٹ کوئی بھی بٹ نتیجہ میں 1 جیسا ہی بٹ سیٹ کرتا ہے۔ اور اس کے مطابق، اگر بٹ دونوں موازنہ کی قدروں میں 0 تھا، تو نتیجہ میں آنے والا بٹ بھی 0 ہوگا۔

    بطور - یا , |

    مثال: 10100101 | 01100011 = 11100111

  • bitwise NOT - ایک قدر پر لاگو ہوتا ہے، بٹس کو پلٹتا ہے (الٹا)۔ یعنی وہ بٹس جو 1 تھے 0 ہو جائیں گے۔ اور جو 0 تھے وہ 1 ہو جائیں گے۔

    کے طور پر بیان کیا گیا - نہیں ، ~

    مثال: ~10100101 = 01011010

  • bitwise exclusive OR - بٹ ویلیوز کا موازنہ کرتا ہے، اور اگر دونوں قدروں میں بٹ 1 کے برابر ہے، تو نتیجہ 0 ہوگا، اور اگر دونوں قدروں میں بٹ 0 ہے، تو نتیجہ 0 ہوگا۔ یعنی، نتیجہ 1 کے برابر ہونے کے لیے، بٹس میں سے صرف ایک 1 کے برابر ہونا چاہیے، اور دوسرا 0 کے برابر تھا۔

    بطور - XOR , ^

    مثال: 10100101 ^ 01100011 = 11000110

Bitwise shifts - >> یا << کسی قدر کے بٹس کو مخصوص سمت میں، مخصوص نمبر سے شفٹ کریں۔ مفت پوزیشنیں صفر سے بھری ہوئی ہیں۔ مثال کے طور پر:
  1. 01100011 >> 4 = 00000110
  2. 01100011 << 3 = 00011000
منفی نمبر کو دائیں منتقل کرتے وقت بھی ایک استثناء ہوتا ہے۔ جیسا کہ آپ کو یاد ہے، پہلا بٹ نشان کے لیے ذمہ دار ہے، اور اگر یہ بٹ 1 کے برابر ہے، تو نمبر منفی ہے۔ اگر آپ منفی نمبر کو منتقل کرتے ہیں، تو خالی جگہیں زیرو سے نہیں بھری جائیں گی، بلکہ ان سے، کیونکہ سائن بٹ کو برقرار رکھنا ضروری ہے۔ مثال کے طور پر: 10100010 >> 2 = 11101000 ایک ہی وقت میں، جاوا میں ایک اضافی غیر دستخط شدہ رائٹ شفٹ آپریٹر ہے >>> یہ آپریٹر >> کا ایک اینالاگ ہے، جب شفٹ ہوتا ہے، خالی جگہیں 0 سے بھر جاتی ہیں، قطع نظر اس کے کہ نمبر منفی یا مثبت ہے. مثال کے طور پر: 10100010 >>> 2 = 00101000 بٹ وائز آپریشنز کے بارے میں یہاں مزید پڑھیں ۔ انٹرویو کے سوالات اور جوابات کا تجزیہ۔  حصہ 2 - 2جاوا میں بٹ وائز شفٹس کے استعمال کی مثالوں کے طور پر، آپ ہیش میپ کا ہیش()انٹرویو کے سوالات اور جوابات کا تجزیہ۔  حصہ 2 - 3 طریقہ دے سکتے ہیں، جو کسی کلید کے لیے ایک خاص اندرونی ہیش کوڈ کا تعین کرنے کے لیے استعمال ہوتا ہے: یہ طریقہ آپ کو HashMap میں ڈیٹا کو کم سے کم کرنے کے لیے یکساں طور پر تقسیم کرنے کی اجازت دیتا ہے۔ تصادم کی تعداد.

14. جاوا میں کون سی معیاری غیر تبدیل شدہ کلاسیں آبجیکٹ ہیں؟

ناقابل تغیر ایک ایسی چیز ہے جو اپنے اصل پیرامیٹرز کو تبدیل کرنے کی اجازت نہیں دیتی ہے۔ اس میں ایسے طریقے ہوسکتے ہیں جو کسی مخصوص قسم کی نئی اشیاء کو واپس کرتے ہیں، ان پیرامیٹرز کے ساتھ جنہیں آپ تبدیل کرنا چاہتے ہیں۔ کچھ معیاری غیر متغیر اشیاء:
  • جاوا میں اب تک سب سے مشہور ناقابل تغیر آبجیکٹ String ہے۔
  • ریپر کلاسز کی مثالیں جو معیاری اقسام کو لپیٹتی ہیں: بولین، کریکٹر، بائٹ، شارٹ، انٹیجر، لانگ، ڈبل، فلوٹ؛
  • وہ اشیاء جو عام طور پر خاص طور پر بڑی تعداد کے لیے استعمال ہوتی ہیں - BigInteger اور BigDecimal؛
  • ایک ایسی چیز جو اسٹیک ٹریس میں اکائی ہے (مثال کے طور پر، ایک استثنائی اسٹیک ٹریس میں) StackTraceElement؛
  • فائل کلاس کا آبجیکٹ - فائلوں کو تبدیل کر سکتا ہے، لیکن ایک ہی وقت میں یہ خود ہی ناقابل تغیر ہے۔
  • UUID - جو اکثر عناصر کے لیے ایک منفرد شناخت کے طور پر استعمال ہوتا ہے۔
  • java.time پیکیج کی تمام کلاس اشیاء؛
  • مقامی - جغرافیائی، سیاسی، یا ثقافتی علاقے کی وضاحت کے لیے استعمال کیا جاتا ہے۔

15. ریگولر اشیاء کے مقابلے میں ناقابل تغیر آبجیکٹ کے کیا فائدے ہیں؟

  1. ایسی اشیاء محفوظ ہوتی ہیں جب کثیر دھاگے والے ماحول میں استعمال ہوتے ہیں ۔ ان کا استعمال کرتے ہوئے، آپ کو دھاگے کی دوڑ کے حالات کی وجہ سے ڈیٹا کھونے کے بارے میں فکر کرنے کی ضرورت نہیں ہے۔ عام اشیاء کے ساتھ کام کرنے کے برعکس: اس معاملے میں، آپ کو بہت احتیاط سے سوچنا ہوگا اور متوازی ماحول میں آبجیکٹ کو استعمال کرنے کے طریقہ کار پر کام کرنا ہوگا۔
  2. ناقابل تغیر آبجیکٹ نقشے میں اچھی چابیاں ہیں، کیونکہ اگر آپ ایک متغیر آبجیکٹ کا استعمال کرتے ہیں اور پھر آبجیکٹ اپنی حالت کو تبدیل کر لیتا ہے، تو HashMap کا استعمال کنفیوژن کا باعث بن سکتا ہے: آبجیکٹ اب بھی موجود رہے گا، اور اگر آپ استعمال کرتے ہیں containsKey() ، ایسا نہیں ہو سکتا۔ پایا
  3. ناقابل تغیر اشیاء ناقابل تغیر (مسلسل) ڈیٹا کو ذخیرہ کرنے کے لیے بہترین ہیں جنہیں پروگرام کے چلنے کے دوران کبھی تبدیل نہیں کیا جانا چاہیے۔
  4. "ایٹمیٹی ٹو ناکامی" - اگر کوئی غیر تبدیل شدہ شے مستثنیٰ ہے، تب بھی وہ ناپسندیدہ (ٹوٹی ہوئی) حالت میں نہیں رہے گی۔
  5. ان کلاسوں کی جانچ کرنا آسان ہے۔
  6. اضافی میکانزم جیسے کاپی کنسٹرکٹر اور کلون کے نفاذ کی ضرورت نہیں ہے۔

OOP کے بارے میں سوالات

انٹرویو کے سوالات اور جوابات کا تجزیہ۔  حصہ 2 - 4

16. عام طور پر OOP کے کیا فوائد ہیں اور طریقہ کار پروگرامنگ کے مقابلے میں؟

لہذا، OOP کے فوائد:
  1. پیچیدہ ایپلی کیشنز کو پروسیجرل پروگرامنگ کے مقابلے میں لکھنا آسان ہے، کیونکہ ہر چیز کو چھوٹے چھوٹے ماڈیولز میں تقسیم کیا جاتا ہے - وہ اشیاء جو ایک دوسرے کے ساتھ تعامل کرتے ہیں - اور اس کے نتیجے میں، پروگرامنگ اشیاء کے درمیان تعلقات پر آ جاتی ہے۔
  2. OOP کا استعمال کرتے ہوئے لکھی گئی ایپلی کیشنز میں ترمیم کرنا بہت آسان ہے (جب تک کہ ڈیزائن کے تصورات پر عمل کیا جائے)۔
  3. چونکہ اس پر موجود ڈیٹا اور آپریشنز ایک ہی ہستی کی تشکیل کرتے ہیں، اس لیے ان کو پوری ایپلی کیشن میں نہیں لگایا جاتا (جو اکثر طریقہ کار پروگرامنگ کے ساتھ ہوتا ہے)۔
  4. انفارمیشن انکیپسولیشن صارف کے انتہائی اہم ڈیٹا کی حفاظت کرتی ہے۔
  5. ایک ہی کوڈ کو مختلف ڈیٹا کے ساتھ دوبارہ استعمال کرنا ممکن ہے، کیونکہ کلاسز آپ کو بہت سی اشیاء بنانے کی اجازت دیتی ہیں، جن میں سے ہر ایک کی اپنی الگ الگ قدریں ہیں۔
  6. وراثت اور پولیمورفزم بھی آپ کو موجودہ کوڈ کو دوبارہ استعمال کرنے اور توسیع دینے کی اجازت دیتا ہے (اسی طرح کی فعالیت کو نقل کرنے کے بجائے)۔
  7. طریقہ کار کے مقابلے میں آسان درخواست کی توسیع۔
  8. OOP نقطہ نظر عمل درآمد کی تفصیلات سے خلاصہ کرنا ممکن بناتا ہے۔

17. ہمیں بتائیں کہ OOP میں کیا خامیاں ہیں۔

بدقسمتی سے، وہ بھی موجود ہیں:
  1. OOP کو بہت سارے نظریاتی علم کی ضرورت ہوتی ہے جس میں مہارت حاصل کرنے کی ضرورت ہے اس سے پہلے کہ آپ کچھ بھی لکھ سکیں۔انٹرویو کے سوالات اور جوابات کا تجزیہ۔  حصہ 2 - 5
  2. OOP کے خیالات کو سمجھنا اور عملی طور پر لاگو کرنا اتنا آسان نہیں ہے (آپ کو دل میں تھوڑا سا فلسفی بننے کی ضرورت ہے)۔
  3. OOP استعمال کرتے وقت، سسٹم کی زیادہ پیچیدہ تنظیم کی وجہ سے سافٹ ویئر کی کارکردگی قدرے کم ہو جاتی ہے۔
  4. OOP اپروچ کے لیے زیادہ میموری کی ضرورت ہوتی ہے، کیونکہ ہر چیز کلاسز، انٹرفیس، طریقوں پر مشتمل ہوتی ہے، جو عام متغیرات سے کہیں زیادہ میموری لیتی ہے۔
  5. ابتدائی تجزیہ کے لیے درکار وقت طریقہ کار کے مقابلے میں زیادہ ہے۔

18. جامد اور متحرک پولیمورفزم کیا ہے؟

پولیمورفزم اشیاء کو ایک ہی کلاس یا انٹرفیس کے لیے مختلف طریقے سے برتاؤ کرنے کی اجازت دیتا ہے۔ پولیمورفزم کی دو قسمیں ہیں، جنہیں ابتدائی اور دیر سے بائنڈنگ بھی کہا جاتا ہے ۔ جامد پولیمورفزم، یا اس سے قبل کا پابند:
  • مرتب وقت پر ہوتا ہے (پروگرام کے لائف سائیکل کے شروع میں)؛
  • فیصلہ کرتا ہے کہ مرتب وقت پر کون سا طریقہ کار انجام دینا ہے۔
  • طریقہ اوورلوڈنگ جامد پولیمورفزم کی ایک مثال ہے۔
  • ابتدائی بائنڈنگ میں نجی، جامد، اور ٹرمینل طریقے شامل ہیں؛
  • وراثت ابتدائی پابندی میں شامل نہیں ہے؛
  • جامد پولیمورفزم میں مخصوص اشیاء شامل نہیں ہوتی ہیں، لیکن اس کلاس کے بارے میں معلومات، جس کی قسم متغیر نام کے بائیں طرف ظاہر کی جاتی ہے۔
متحرک پولیمورفزم، یا دیر سے بائنڈنگ:
  • رن ٹائم پر ہوتا ہے (جب پروگرام چل رہا ہو)؛
  • ڈائنامک پولیمورفزم فیصلہ کرتا ہے کہ رن ٹائم کے وقت طریقہ کار پر کیا مخصوص عمل درآمد ہوگا۔
  • طریقہ اوور رائیڈنگ ڈائنامک پولیمورفزم کی ایک مثال ہے۔
  • لیٹ بائنڈنگ کسی مخصوص شے کی تفویض، اس کی قسم کا حوالہ، یا اس کی سپر کلاس ہے۔
  • وراثت کا تعلق متحرک پولیمورفزم سے ہے۔
آپ اس مضمون میں ابتدائی اور دیر سے پابندی کے درمیان فرق کے بارے میں مزید پڑھ سکتے ہیں ۔

19. OOP میں تجرید کے اصول کی وضاحت کریں۔

OOP میں تجرید غیر اہم تفصیلات کو چھوڑ کر کسی چیز کی اہم خصوصیات کے سیٹ کو اجاگر کرنے کا ایک طریقہ ہے۔ یعنی، OOP اپروچ کے ساتھ کسی پروگرام کو ڈیزائن کرتے وقت، آپ عام طور پر ماڈلز پر توجہ مرکوز کرتے ہیں، بغیر ان کے نفاذ کی تفصیلات میں۔ جاوا میں، انٹرفیس تجرید کے لیے ذمہ دار ہیں ۔ مثال کے طور پر، آپ کے پاس ایک مشین ہے، اور یہ انٹرفیس ہوگا۔ اور اس کے ساتھ مختلف تعاملات - مثال کے طور پر، انجن کو شروع کرنا، گیئر باکس کا استعمال - یہ وہ فنکشنز ہیں جنہیں ہم نفاذ کی تفصیلات میں جانے کے بغیر استعمال کرتے ہیں۔ بہر حال، اس وقت جب آپ گاڑی چلا رہے ہوتے ہیں، آپ یہ نہیں سوچتے کہ گیئر باکس اپنے مقصد کو کس طرح پورا کرتا ہے، یا چابی انجن کو کیسے شروع کرتی ہے، یا بالکل اسٹیئرنگ وہیل پہیوں کو کیسے گھماتا ہے۔ اور یہاں تک کہ اگر اس فعالیت میں سے کسی ایک کا نفاذ تبدیل کر دیا جائے (مثال کے طور پر، انجن)، تو ہو سکتا ہے آپ اسے محسوس نہ کریں۔ اس سے آپ کو کوئی فرق نہیں پڑتا: آپ نفاذ کی تفصیلات میں نہیں جاتے ہیں۔ یہ آپ کے لیے ضروری ہے کہ عمل کیا جائے۔ دراصل، یہ عمل درآمد کی تفصیلات سے خلاصہ ہے۔ یہ وہ جگہ ہے جہاں ہم آج رکیں گے: جاری رکھنے کے لیے!انٹرویو کے سوالات اور جوابات کا تجزیہ۔  حصہ 2 - 6
سیریز میں دیگر مواد:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION