اگر تا به حال برای یک مصاحبه برای موقعیت برنامه نویس جاوا آماده شده اید یا هر آزمون گواهینامه (نه لزوماً در مورد برنامه نویسی) را گذرانده اید، احتمالاً قبلاً متوجه شده اید که سؤالات پرسیده شده در آنجا بسیار خاص هستند. بسیاری از آنها شما را مجبور می کنند در مورد طراحی زبان فکر کنید. برخی برای بررسی عمق دانش شما طراحی شده اند. سوالاتی وجود دارد که بیش از هر چیز دیگری شبیه پازل هستند، در حالی که برخی دیگر به نکات ظریف زبان مربوط می شوند که درک آنها بدون تمرین بسیار دشوار است. در این مقاله، توسعه دهنده Sarans Sing چند سوال از این قبیل در مورد جاوا ارائه می کند. البته با جواب
1. اگر یک عبارت return یا System.exit() را در یک بلوک try/catch قرار دهم چه اتفاقی می افتد؟ این یک سوال بسیار محبوب و ظریف جاوا است. ترفند این است که بسیاری از برنامه نویسان معتقدند که

finally
بلوک همیشه اجرا می شود. با قرار دادن یک return
عبارت در یک try/catch
بلوک یا فراخوانی System.exit()
از داخل یک try/catch
بلوک، این سؤال این باور را زیر سؤال می برد. پاسخ به این سوال پیچیده این است: بلوک زمانی که دستوری در یک بلوک قرار میگیرد finally
اجرا میشود ، اما زمانی که از داخل یک بلوک فراخوانی میشود ، اجرا نمیشود . 2. آیا جاوا از وراثت چندگانه پشتیبانی می کند؟ این یک سوال بسیار مشکل است. مصاحبه کنندگان اغلب می پرسند، "اگر C ++ از وراثت مستقیم چندگانه پشتیبانی می کند، پس چرا جاوا نمی تواند؟" پاسخ کمی پیچیده تر از آن چیزی است که به نظر می رسد، زیرا جاوا از وراثت چند نوع پشتیبانی می کند . پس از همه، یک رابط جاوا می تواند رابط های دیگر را گسترش دهد. گفتنی است، جاوا از وراثت چندگانه پیاده سازی ها پشتیبانی نمی کند. 3. اگر متدی در یک کلاس والد s را پرتاب کند، آیا می توان آن را با متدی که s را پرتاب می کند لغو کرد؟ این یکی دیگر از سوالات پیچیده مربوط به اضافه بار و نادیده گرفتن است. پاسخ: یک روش لغو شده میتواند با خیال راحت کلاس والد - RuntimeException را پرتاب کند، اما شما نمیتوانید این کار را با یک نوع استثنای علامتگذاری شده مانند . 4. چگونه تضمین می کنید که موضوعات می توانند بدون بن بست به منابع دسترسی پیدا کنند؟ اگر نوشتن کد چند رشته ای نقطه قوت شما نیست، ممکن است واقعاً به این سؤال دچار شوید. حتی برای یک برنامه نویس باتجربه که با بن بست ها و شرایط مسابقه مواجه نشده است، می تواند دشوار باشد. کل ترفند در اینجا به ترتیب است: شما می توانید با انتشار منابع به ترتیب معکوس که به دست آمده اند، از بن بست جلوگیری کنید. 5. تفاوت کلاس ها و در جاوا چیست؟ این یک سوال کلاسیک زبان جاوا است که برخی از توسعه دهندگان آن را مشکل و برخی دیگر بسیار ساده می دانند. اینreturn
try/catch
System.exit()
try/catch
NullPointerException
RuntimeException
NullPointerException
Exception
N
N
StringBuffer
StringBuilder
StringBuilder
کلاس در JDK 1.5 ظاهر شد. تنها تفاوت بین این کلاس ها این است که StringBuffer
متدهای 's، مانند length()
، capacity()
و append()
، همگام هستند، در حالی که متدهای مربوطه در این گونه StringBuilder
نیستند. این تفاوت اساسی به این معنی است که الحاق رشته با سریعتر StringBuilder
از با است StringBuffer
. در واقع، استفاده از آن StringBuffer
توصیه نمی شود، زیرا الحاق رشته ها در 99٪ مواقع روی یک رشته انجام می شود. 6. نتیجه ارزیابی عبارت 1.0/0.0 چیست؟ آیا یک استثنا ایجاد می کند یا یک خطای کامپایل؟ این یکی دیگر از سوالات پیچیده در مورد کلاس است. توسعه دهندگان جاوا از وجود یک نوع داده دوگانه اولیه و یک کلاس آگاه هستند ، اما هنگام انجام عملیات ممیز شناور به , , و قوانین حاکم بر محاسبات حسابی مرتبط توجه کافی نمی کنند. پاسخ به این سوال ساده است: an پرتاب نخواهد شد. عبارت به . 7. اگر بخواهید کلیدی را در کلیدی که قبلاً حاوی آن کلید است وارد کنید، چه اتفاقی میافتد؟ این سؤال پیچیده بخشی از سؤال متداول دیگری است: چگونه در جاوا کار می کند؟ منبع محبوب سوالات گیج کننده و پیچیده در مورد جاوا است. پاسخ این است: اگر بخواهید یک کلید را دوباره در یک وارد کنید ، کلید قدیمی جایگزین خواهد شد، زیرا کلاس اجازه کلیدهای تکراری را نمی دهد. و همان کلید همان کد هش را دریافت می کند، به این معنی که در همان مکان در سطل هش قرار می گیرد. بر اساس مواد Quora

Double
Double
Double.POSITIVE_INFINITY
Double.NEGATIVE_INFINITY
NaN
-0.0
ArithmeticException
Double.POSITIVE_INFINITY
HashMap
HashMap
HashMap
HashMap
HashMap
GO TO FULL VERSION