Agar siz Java dasturchisi lavozimi uchun intervyuga tayyorgarlik ko'rgan bo'lsangiz yoki sertifikat olish uchun biron bir imtihonni topshirgan bo'lsangiz (dasturlash bo'yicha shart emas), demak, ular bergan savollar juda aniq ekanligini allaqachon payqagansiz. Ularning ko'pchiligi sizni tilning arxitekturasi haqida o'ylashga majbur qiladi, ba'zilari chuqur bilim uchun mo'ljallangan. Bundan tashqari, jumboqlarga o'xshab ketadigan yoki amaliyotsiz his qilish juda qiyin bo'lgan nuanslarga o'xshash narsalar ham bor. Ushbu maqolada dasturchi Saraans Singx bir nechta Java savollarini taqdim etadi. Javoblar bilan, albatta. 1. Agar try/catch blokiga return yoki System.exit() ko'rsatmalarini qo'ysangiz nima bo'ladi? Bu Java-da juda mashhur "qo'lga olish" savolidir. Ayyorlik shundaki, ko'plab dasturchilar blokning
finally
har qanday holatda ham bajarilishiga ishonishadi. Bu savol bayonotni return
blokga joylashtirish try/catch
yoki try/catch
bayonot blokidan qo'ng'iroq qilish orqali ushbu kontseptsiyani shubha ostiga qo'yadi System.exit ()
. Ushbu qiyin savolga javob: blok bayonot blokga finally
joylashtirilganda bajariladi va blokdan chaqirilganda bajarilmaydi . 2. Java bir nechta merosni qo'llab-quvvatlaydimi? Bu juda qiyin savol. Suhbatdoshlar ko'pincha shunday deyishadi: agar C++ to'g'ridan-to'g'ri bir nechta merosni qo'llab-quvvatlasa, nega Java buni qo'llab-quvvatlamaydi? Javob ko'rinadiganidan biroz murakkabroq, chunki Java ko'p turdagi merosni qo'llab-quvvatlaydi, chunki undagi interfeys boshqa interfeyslarni kengaytirishi mumkin. Ammo Java tili ilovalarning bir nechta merosini qo'llab-quvvatlamaydi. 3. Agar usul ota-klassda istisno qilsa, uni tashlaydigan usul bilan bekor qilish mumkinmi ? Haddan tashqari yuklash va bekor qilish tushunchalari bilan bog'liq yana bir qiyin savol. Javob: Siz bekor qilingan usulda ota-klass istisnosini xavfsiz tarzda tashlashingiz mumkin , lekin turidagi tekshirilgan istisno bilan xuddi shunday qila olmaysiz . 4. Tarmoqlar manbalarga blokirovkasiz kirishiga qanday kafolat berish mumkin? Agar siz ko'p tarmoqli kod yozishni yaxshi bilmasangiz, bu savol siz uchun juda qiyin bo'ladi. Bu hatto boshi berk ko'chaga chiqish va poyga sharoitlari bilan shug'ullanmagan tajribali dasturchi uchun ham qiyin bo'lishi mumkin. Bu erda hiyla-nayrang tartibda: resurslarni sotib olingan teskari tartibda bo'shatish orqali boshi berk ko'chaga tushishning oldini olish mumkin. 5. Java tilidan sinflarning farqi nimada ?return
try/catch
try/catch
System.exit ()
NullPointerException
RuntimeException
NullPointerException – RuntimeException
Exception
N
N
StringBuffer
StringBuilder
Java tili haqidagi klassik savol, ba'zi ishlab chiquvchilar tomonidan qiyin va boshqalar tomonidan juda oddiy deb hisoblanadi. Sinf StringBuilder
JDK 1.5 da kiritilgan va ular orasidagi yagona farq shundaki, sinfning usullari StringBuffer
, masalan, length()
yoki capacity()
, append()
sinxronlashtiriladi, sinfning mos keladigan usullari esa StringBuilder
sinxronlashtirilmaydi. Ushbu asosiy farq tufayli satr StringBuilder
bilan birlashtirish tezroq bo'ladi StringBuffer
. Aslida, StringBuffer
foydalanish tavsiya etilmaydi, chunki 99% foydalanish holatlarida satrlarni birlashtirish bir xil ipda amalga oshiriladi. 6. 1,0/0,0 ifodasi nimani qaytaradi? U istisno qiladimi yoki kompilyatsiya xatosiga olib keladimi? Sinf haqida yana bir qiyin savol Double
. Java dasturchilari oddiy ma'lumotlar turi double va sinfini bilishlariga qaramay , suzuvchi nuqta amallarini bajarishda , ga va ular bilan bog'liq arifmetik hisoblarni tartibga soluvchi qoidalarga Double
yetarlicha e'tibor bermaydilar . Bu savolga javob oddiy: hech qanday istisno tashlanmaydi, qiymat qaytariladi . 7. Agar asosiy ob'ektni unda mavjud bo'lgan asosiy ob'ektga kiritishga harakat qilsangiz nima bo'ladi ? Bu qiyin savol yana bir tez-tez beriladigan savolning bir qismidir: ular Java-da qanday ishlaydi? Java tili haqidagi chalkash va qiyin savollar uchun mashhur mavzu. Javob shuki, agar siz kalitni ga qayta kiritishga harakat qilsangiz , u eskisini almashtiradi, chunki sinf takroriy kalitlarga ruxsat bermaydi. Xuddi shu kalit bir xil xesh kodini anglatadi, shuning uchun u hash segmentida xuddi shu joyda tugaydi. Quora materiallari asosidaDouble.INFINITY
NaN
-0.0
ArithmeticException
Double.INFINITY
HashMap
HashMap
HashMap
HashMap
HashMap
GO TO FULL VERSION