Kelajakdagi Java dasturchisi uchun qo'llanma. Intervyu va martaba. O'rta Java dasturchisi intervyulari Java intervyu Tez-tez so'raladigan savollar

Men boshqa shaharga ko'chib o'tdim, ish topaman, suhbatlarga boraman. Menga shunday tuyuldiki, u erda berilgan savollar, garchi ma'lum bo'lsa-da, birgalikda to'plangan bo'lsa-da, tayyorgarlik ko'rishga va o'zini ishonchli his qilishga yordam beradi.

DBMS qurish tamoyillarini tushunish uchun savollar.
1. Birinchi normal shakl va normalizatsiya jarayoni qanday? Oddiy shakllar qanday?
2. DBMS indeksi nimani anglatadi, ular qanday joylashtirilgan, qanday saqlanadi? Xuddi shu funksiyani qanday amalga oshirgan bo'lardingiz? Indekslar haqida aniq tushuncha bo'lmasa, oxirgi savol so'raladi.
3. Ko‘p-ko‘p munosabatini chizing. Masalan: Mualliflar va Kitoblar jadvallari. Bitta muallifning bir nechta kitoblari bo'lishi mumkin va kitob bir nechta muallif tomonidan yozilishi mumkin. Muayyan muallifning kitoblarini tanlash uchun SQL so'rovini tuzing.

Java haqida asosiy savollar.
4. Java tilidagi asosiy klass Object ekanligi ma'lum. Qanday usullarni nomlashingiz mumkin?
5. Ayting-chi, tenglar va hashCode nima? Ushbu usullarni amalga oshirish uchun qanday qoidalar va konventsiyalar mavjud? Ular qachon murojaat qilishadi?
6. Kutish, xabar berish, barcha usullar haqida bizga xabar bering. Ular qanday ishlatiladi, qachon, nima uchun kerak? Sinxronizatsiya nima?
7. Yakunlash nima? Nima uchun kerak? Axlat yig'uvchi va uning algoritmlari haqida nima deya olasiz?
8. Nima uchun klonlash usuli himoyalangan deb e'lon qilinadi? Klonlashni amalga oshirish uchun nima kerak?
9. Modifikatorlar (ruxsat va boshqalar) nima? O'zgaruvchan va vaqtinchalik nima? Nima uchun va qanday hollarda sukut bo'yicha foydalanish mumkin?

Java to'plami ramkasi
10. Java-da qanday yig'ish interfeyslari mavjud? Ular qanday farq qilishini tushuntiring.
11. Ushbu interfeyslarning qanday amalga oshirilishini bilasiz?
12. ArrayList va LinkedList o'rtasidagi farq nima. Ular qanday tartibga solingan? Ular qachon ishlatilishi kerak.
13. HashMap va TreeMap o'rtasidagi farq nima? Ular qanday tashkil etilgan va ular qanday ishlaydi? Ob'ektlarga kirish vaqti bilan nima, qanday bog'liqliklar?
14. Hashtable nima, u HashMapdan nimasi bilan farq qiladi? Bugungi kunga qadar u eskirgan, siz hali ham kerakli funksiyadan qanday foydalanasiz?

Istisnolar
15. Istisno nima? Istisnolarning qanday turlarini bilasiz, ular qanday farqlanadi?
16. Try-catch-finally bloklari bilan jumboq taklif qilinishi mumkinmi va nima qaytariladi yoki qanday istisnolar oxir-oqibat o'tib ketadi?

Algoritmlar
17. Qanday tartiblash algoritmlarini bilasiz? Qanday algoritmlarni bilasiz?
Bundan tashqari, bu erda algoritmlarning murakkabligini baholash, ularni bir-biri bilan taqqoslash bo'yicha turli xil qo'shimcha savollar berilishi mumkin.

Dizayn naqshlari.
18. Har qanday dizayn naqshlari bilan tanishmisiz?
19. Singleton yozing... Va dangasa yuklash bilan. Agar u ip bilan xavfsiz bo'lishi kerak bo'lsa-chi? Qachon dangasa yuklash yomonroq?
20. MVC haqida nima deya olasiz? Diagramma chizing va MVC qanday ishlashini tushuntiring.

J2EE texnologiya to'plamini tushunish uchun bir qator savollar.
21. Servlet, jsp nima, ularning farqi?
22. Ajax nima? Ushbu texnologiya printsipial jihatdan qanday tartibga solingan?
23. ORM nima, uni qanday tarjima qilish mumkin va u qanday ishlashi kerak?

Algoritm yozish uchun oddiy vazifalar.
24. Faktorialni hisoblash funksiyasini yozing.
25. Fibonachchi raqamlarini hisoblash funktsiyasi berilgan bo'lsa, u ishlashi ma'lum. Mantiqiy xatoni toping. Olingan algoritmning murakkabligini hisoblang.
26. Chiziqni teskari tomonga o'tkazing.
27. Massivning o‘rtacha qiymatini hisoblang.

Shuni yodda tutish kerakki, o'zingizni juda ishonchli his qilmasangiz, ortiqcha so'zlarni aytishingiz shart emas. Siz qo'shimcha so'z aytasiz va ular unga yopishib olishadi, zanjirni bo'shatishadi. Ular o'zlari ishonmaydigan narsalarni hayajonga soladilar. Odamlarning bu qobiliyati - yopishib olish - foydalanish kerak, lekin sizning foydangizga ;-)

Bilim va tushunish ... narsalar butunlay boshqacha, shuning uchun
- saralash kabi turli xil algoritmlarni o'zingiz, hatto darslikdan ham yozishingiz kerak. Ularning bir-biridan qanday farq qilishini ko'ring, ularning murakkabligini solishtiring.
- turli yordamchi dasturlar va kutubxonalar, sinflarni paketlarga guruhlash tamoyillari va kod yozish, sharhlash uslubini ko'rib chiqish foydalidir. Bu kirish modifikatorlarini, loyihani tashkil qilishni tushunishda ko'p yordam berishi mumkin.
- aniq bir narsani tushunish, siz kam biladiganlarga yordam berishingiz mumkin. Har qanday forumga o'ting va mavzuni qiziqtirgan savollarga javob berishga harakat qiling. Munozarada siz o'zingiz uchun biror narsa olishingiz mumkin. Siz qisqa maqola yozishingiz mumkin. Albatta, siz mavzuni yaxshi tushunishingiz kerak.
O'z malakasini oshirishga qaratilgan har qanday ish malakali suhbatdoshga ko'rinadi va e'tibordan chetda qolmaydi. Bu haqda halol gapirishingiz kerak bo'lgan yagona narsa, o'z imkoniyatlaringiz va qobiliyatlaringizni kamsitmang.
O'zingizni mutaxassis sifatida tayyorlash yoki rivojlantirish uchun qandaydir mezonga ega bo'lish uchun siz shunga o'xshash narsani ko'rib chiqishingiz mumkin.

Aslida, yuqorida sanab o'tilgan savollar, men tasavvur qilganimdek, Junior Developer darajasidir. Qaerdadir, ehtimol chuqurroq, qaerdadir kamroq, lekin haqiqat sifatida - Junior.

Har bir yechim yangi muammolarni keltirib chiqaradi.

Ushbu bo'lim Java dasturchisi lavozimi uchun suhbatdan o'tishda so'raladigan savollarga bag'ishlangan.

Maqsad nafaqat savollarni (Internetda ular juda ko'p), balki ularga javoblarni ham bir joyda to'plashdir.

Atribut uchun Intervyu bo'limining asosiy sahifasida o'qing

  1. Til tomonidan nechta kalit so'z zahiralangan, bu qanday so'zlar, qaysilari ishlatilmaydi?
  2. O'zgaruvchining nomi qanday belgilardan iborat bo'lishi mumkin (to'g'ri identifikator)?
  3. "Initializatsiya" so'zi nimani anglatadi?
  4. Ma'lumotlar turlarining asosiy guruhlari qanday?
  5. Qanday ibtidoiy turlarini bilasiz?
  6. Ibtidoiy ma'lumotlar turlarini konvertatsiya qilish haqida nimalarni bilasiz, ma'lumotlar yo'qoladimi, mantiqiy tipga aylantirish mumkinmi?
  7. Qaysi qiymatlar sukut bo'yicha ishga tushirilgan o'zgaruvchilar hisoblanadi?
  8. O'zgaruvchining qiymati qanday uzatiladi (mos yozuvlar/qiymat bo'yicha)?
  9. Asosiy funktsiya haqida nimalarni bilasiz, uni belgilash uchun qanday shartlar mavjud?
  10. Qanday mantiqiy amallar va operatorlarni bilasiz?
  11. Qisqa va uzun mantiqiy operatorlarning yozuvlari o'rtasidagi farq nima?
  12. Haqiqat jadvali nima?
  13. Uchlik tanlash operatori nima?
  14. Qanday birlik va ikkilik arifmetik amallarni bilasiz?
  15. Qanday bitli operatsiyalarni bilasiz?
  16. Tanlangan bayonotni (almashtirishni) yozishning roli va qoidalari qanday?
  17. Qanday sikllarni bilasiz, ularning farqlari nimada?
  18. “Loopning takrorlanishi” nima?
  19. For tsikli qanday parametrlarga ega, ularni o'tkazib yuborish mumkinmi?
  20. Loopni darhol to'xtatish uchun qanday gap ishlatiladi?
  21. Qaysi ibora siklning keyingi takroriga o‘tish uchun ishlatiladi?
  22. Massiv nima?
  23. Massivlarning qanday turlarini bilasiz?
  24. O'rash sinflari haqida nimalarni bilasiz?
  25. Avtomatik qadoqlash (boxing/boxing) nima?

  1. OOP tamoyillarini nomlang va har birini tavsiflang.
  2. "Sinf" atamasini aniqlang.
  3. Sinf maydoni/atributi nima?
  4. Sinf maydonlariga kirishni qanday qilib to'g'ri tashkil qilish kerak?
  5. "Konstruktor" atamasini aniqlang.
  6. Standart konstruktorlar, nusxa ko'chirish konstruktorlari va parametrli konstruktor o'rtasidagi farq nima?
  7. Kirish darajasining qanday modifikatsiyalarini bilasiz, ularning har biri haqida bizga xabar bering.
  8. Bitta xususiy konstruktorli sinfning xususiyatlari haqida bizga xabar bering.
  9. "Bu", "super" kalit so'zlari nimani anglatadi, ularni qayerda va qanday ishlatish mumkin?
  10. “Usul” atamasini aniqlang.
  11. Usul imzosi nima?
  12. Qanday usullar ortiqcha yuk deb ataladi?
  13. Statik bo'lmagan usullar statik usullarni ortiqcha yuklay oladimi?
  14. Bizga bekor qilish usullari haqida gapirib bering.
  15. Usul har xil miqdordagi parametrlarni (o'zgaruvchan uzunlikdagi argumentlar) olishi mumkinmi?
  16. Usulni bekor qilishda kirish darajasini/qaytish turini toraytirish mumkinmi?
  17. Ota-onalar sinfining bekor qilingan usullariga qanday kirish mumkin?
  18. Yuqoridan pastga va pastdan yuqoriga qanday o'zgarishlar mavjud?
  19. Ortiqcha yuklash va ortiqcha yuklash o'rtasidagi farq nima?
  20. Statik/statik bo'lmagan maydonlarni qayerda ishga tushirish mumkin?
  21. Nega instanceof operatori kerak?
  22. Nima uchun bizga kerak va ishga tushirish bloklari nima?
  23. Ikki sinfning konstruktorlari va ishga tushirish bloklarini chaqirish tartibi qanday: bola va uning ajdodi?
  24. Abstrakt modifikator qayerda va nima uchun ishlatiladi?
  25. Usulni bir vaqtning o'zida mavhum va statik deb e'lon qilish mumkinmi?
  26. Statik kalit so'z nimani anglatadi?
  27. Statik modifikator qaysi Java konstruksiyalariga qo'llaniladi?
  28. Statik kod blokida istisno sodir bo'lsa nima bo'ladi?
  29. Statik usulni ortiqcha yuklash mumkinmi?
  30. Statik sinf nima, undan foydalanish xususiyatlari qanday?
  31. Yakuniy statik o'zgaruvchilarni ishga tushirish xususiyatlari qanday?
  32. Statik modifikator sinf/usul/maydonga qanday ta'sir qiladi?
  33. Yakuniy kalit so'z nimani anglatadi?
  34. "Interfeys" atamasini aniqlang.
  35. Interfeys maydonlari va usullari uchun standart modifikatorlar qanday?
  36. Nima uchun interfeys usulini yakuniy yoki statik deb e'lon qilish mumkin emas?
  37. Java-da qanday sinflar mavjud (ichki ... va hokazo)
  38. Ichki sinflarni yaratish xususiyatlari qanday: oddiy va statik.
  39. Ichki sinflar haqida nimalarni bilasiz, ular nima uchun ishlatiladi? Tasniflash, foydalanish holatlari, inkapsulyatsiyaning buzilishi.
  40. Ichki va ichki sinflar o'rtasidagi farq nima?
  41. Qanday sinflar anonim deb ataladi?
  42. Ichki sinfdan tashqi sinf maydoniga qanday kirish mumkin?
  43. Ushbu usulning asosiy qismida e'lon qilingan anonim sinfdan usulning mahalliy o'zgaruvchisiga qanday kirishingiz mumkin? Bunday o'zgaruvchiga cheklovlar bormi?
  44. Har qanday maxsus sinf Ob'ekt sinfiga qanday bog'liq?
  45. Object sinfining har bir usullari haqida bizga xabar bering.
  46. equals() usuli nima. Bu == operatsiyasidan qanday farq qiladi.
  47. Agar teng () ni bekor qilmoqchi bo'lsangiz, bekor qilingan usul uchun qanday shartlar bajarilishi kerak?
  48. Agar equals() bekor qilingan bo'lsa, bekor qilinishi kerak bo'lgan boshqa usullar bormi?
  49. HashCode va teng usullarning o'ziga xos xususiyati nimada? Object sinfida hashCode va teng usullari qanday amalga oshiriladi? Ushbu usullarni amalga oshirish uchun qanday qoidalar va konventsiyalar mavjud? Ular qachon murojaat qilishadi?
  50. Qaysi usul ob'ektning satrli tasvirini qaytaradi?
  51. Tenglarni hashCode-ni bekor qilmasdan bekor qilsangiz nima bo'ladi? Qanday muammolar paydo bo'lishi mumkin?
  52. HashCode ni hisoblashda qaysi maydonlardan foydalanish kerakligi haqida ko'rsatma bormi?
  53. HashMap-da kalit sifatida ishlatiladigan ob'ekt hashCode ta'rifida ishtirok etadigan maydonni o'zgartirsa, qandaydir muammo bo'ladi deb o'ylaysizmi?
  54. Mavhum sinf va interfeys o'rtasidagi farq nima, uni qanday hollarda ishlatasiz?
  55. Shaxsiy sinf o'zgaruvchilariga kirish mumkinmi va agar shunday bo'lsa, qanday qilib?
  56. O'zgaruvchan va vaqtinchalik nima? Nima uchun va qanday hollarda sukut bo'yicha foydalanish mumkin?
  57. Usullarni meros qilib olish, bekor qilish va yashirishda modifikatorlarni kengaytirish. Agar ota-onalar sinfida shaxsiy usul bo'lsa, bola uning ko'rinishini kengaytira oladimi? Himoyalangan bo'lsa-chi? Va ko'rishni qisqartirish uchunmi?
  58. Usulni xususiy final deb e'lon qilish mantiqiymi?
  59. Yakuniy o'zgaruvchilarni ishga tushirishning xususiyatlari qanday?
  60. Yagona sinf konstruktori yakuniy deb e'lon qilinsa nima bo'ladi?
  61. Yakuniylashtirish nima? Nima uchun kerak? Axlat yig'uvchi va uning algoritmlari haqida nima deya olasiz?
  62. Nima uchun klonlash usuli himoyalangan deb e'lon qilingan? Klonlashni amalga oshirish uchun nima kerak?
  63. Har qanday dizayn naqshlari bilan tanishmisiz?
  64. Singleton yozing ... Lekin dangasa yuklash bilan. Agar u ip bilan xavfsiz bo'lishi kerak bo'lsa-chi? Qachon dangasa yuklash yomonroq?
  65. MVC haqida nima deya olasiz? Diagramma chizing va MVC qanday ishlashini tushuntiring.
  66. Faktorialni hisoblash funksiyasini yozing.
  67. Fibonachchi raqamlarini hisoblash funktsiyasini hisobga olgan holda, u ishlashi ma'lum. Mantiqiy xatoni toping. Olingan algoritmning murakkabligini hisoblang.

  1. "Istisno" ni aniqlang
  2. Istisnolar ierarxiyasi qanday.
  3. Jvm xatolarini hal qila olamanmi/kerakmi?
  4. Istisnolarni hal qilish usullari qanday?
  5. throws kalit so'zi nimani anglatadi?
  6. Finally blokining o'ziga xos xususiyati nimada? U har doim bajariladimi?
  7. Istisnolarni ushlashda catch bloki bo'lishi mumkinmi?
  8. Nihoyat blok bajarilmaydigan vaziyat haqida o'ylay olasizmi?
  9. Bitta catch bloki bir nechta istisnolarni (bir xil va turli meros shoxlaridan) ushlay oladimi?
  10. Qayta ishlangan va ishlanmagan (tekshirilgan/tekshirilmagan) istisnolar haqida nimalarni bilasiz?
  11. RuntimeException-ning o'ziga xos xususiyati nimada?
  12. O'zingizning ("maxsus") istisnoni qanday yozish kerak? Istisno turini tanlashda qanday sabablarga amal qilasiz: tekshirilgan / belgilanmagan?
  13. Qaysi operator istisnoni majburan tashlashga imkon beradi?
  14. Istisnoni keltirib chiqarishi mumkin bo'lgan usul uchun qo'shimcha shartlar bormi?
  15. Asosiy usul istisnoni tashqariga chiqarishi mumkinmi va agar shunday bo'lsa, bu istisno qayerda ko'rib chiqiladi?
  16. Qaytish bayonoti catch blokida ham, finally blokida ham mavjud bo'lsa, qaysi biri "muhimroq"?
  17. OutOfMemoryError haqida nimalarni bilasiz?
  18. SQLException haqida nimalarni bilasiz? Qaysi turdagi tekshirilgan yoki belgilanmagan, nima uchun?
  19. Xato nima? Qaysi holatda Error ishlatiladi. Xatoga misol keltiring.
  20. Istisnolarni qayta ishlash uchun Java-da qanday konstruktsiya ishlatiladi?
  21. Aytaylik, u erda try-nihoyat bloki mavjud. Sinov blokida istisno o'rnatildi va bajarish finally blokiga o'tkazildi. Nihoyat blok ham istisno qildi. Ikki istisnolardan qaysi biri try-finally blokidan “tashlab qo‘yadi”? Ikkinchi istisno bilan nima sodir bo'ladi?
  22. Aytaylik, IOException va FileNotFoundException ni tashlashi mumkin bo'lgan usul bor, tutib olish bloklari qanday tartibda ketishi kerak? Qancha tutqich bloklari bajariladi?

  1. "To'plam" atamasiga ta'rif bering.
  2. To'plamlardan foydalanishning afzalliklarini sanab o'ting.
  3. To'plamlar qanday ma'lumotlarni saqlashi mumkin?
  4. To'plam ierarxiyasi nima?
  5. List to'plamlari haqida nimalarni bilasiz?
  6. Set kollektsiyalari haqida nimalarni bilasiz?
  7. Queue kolleksiyalari haqida nimalarni bilasiz?
  8. Xarita to'plamlari haqida nimalarni bilasiz, ularning asosiy farqi nimada?
  9. List, Set, Map ning asosiy ilovalarini ayting.
  10. SortedSet ning qanday ilovalarini bilasiz va ularning xususiyatlari qanday?
  11. List va Set o'rtasidagi farqlar/o'xshashliklar qanday?
  12. ArrayList va LinkedList sinflari o'rtasidagi farq/umumiy nima, qachon ArrayList-dan foydalanish yaxshiroq va qachon LinkedList-dan foydalanish yaxshiroq?
  13. ArrayList emas, balki massivdan foydalanish qachon oqilona?
  14. ArrayList Vektordan qanday farq qiladi?
  15. HashSet va TreeSet sinflarini amalga oshirish haqida nimalarni bilasiz?
  16. HashMap va TreeMap o'rtasidagi farq nima? Ular qanday tashkil etilgan va ular qanday ishlaydi? Ob'ektlarga kirish vaqti bilan nima, qanday bog'liqliklar?
  17. Hashtable nima, u HashMapdan nimasi bilan farq qiladi? Bugungi kunga qadar u eskirgan, siz hali ham kerakli funksiyadan qanday foydalanasiz?
  18. Agar bir xil kalit bilan Xaritaga ikkita qiymat qo'ysak nima bo'ladi?
  19. To'plamdagi ob'ektlarning tartibi qanday o'rnatiladi, to'plam qanday saralanadi?
  20. "Iterator" atamasini aniqlang.
  21. Collections klassi qanday funksiyalarni beradi?
  22. O'zgartirilmaydigan to'plamni qanday olish mumkin?
  23. Qaysi to'plamlar sinxronlashtiriladi?
  24. Sinxronlashtirilgan to'plamni sinxronlashtirilmaganidan qanday olish mumkin?
  25. Faqat o'qish uchun to'plamni qanday olish mumkin?
  26. Nima uchun Xarita Collectiondan meros qilib olinmaydi?
  27. Iterator va Enumeration o'rtasidagi farq nima?
  28. Foreach tsikli qanday amalga oshiriladi?
  29. Nima uchun to'plamga elementlar qo'shish uchun iterator.add() usuli yo'q?
  30. Nega iterator sinfida kursorni harakatlantirmasdan keyingi elementni olish usuli yo'q?
  31. Iterator va ListIterator o'rtasidagi farq nima?
  32. Roʻyxatning barcha elementlarini takrorlashning qanday usullari bor?
  33. Muvaffaqiyatsiz va tezkor xususiyatlar o'rtasidagi farq nima?
  34. ConcurrentModificationExceptionni tashlamaslik uchun nima qilishim kerak?
  35. Stack va navbat nima, ayting-chi, ularning farqlari nimada?
  36. Comparator va Comparator interfeyslari o'rtasidagi farq nima?
  37. Nima uchun to'plamlar Clone va Serializable interfeyslarini meros qilib olmaydi?

  1. Siz qanday “string” sinflarini bilasiz?
  2. “String” sinflarining asosiy xossalari (ularning xususiyatlari) qanday?
  3. String turini meros qilib olish mumkinmi, nima uchun?
  4. Satrlarni birlashtirish atamasini aniqlang.
  5. Stringni raqamga qanday aylantirish mumkin?
  6. Ikki qatorning qiymatini qanday solishtirish mumkin?
  7. Stringni qanday o'zgartirish mumkin?
  8. Ikki qatorni solishtirish qanday ishlaydi?
  9. Satr oxiridagi bo'shliqlarni qanday kesish mumkin?
  10. Satrdagi belgini qanday almashtirish mumkin?
  11. String qismini qanday olish mumkin?
  12. "String puli" atamasini aniqlang.
  13. Qaysi usul qatordagi pastki qatorni tanlash imkonini beradi?
  14. Qanday qilib qatorni berilgan ajratuvchi orqali pastki qatorlarga ajratish mumkin?
  15. O'zgaruvchini satrga aylantirish uchun qanday usul deyiladi?
  16. Satrdagi tartib raqamini bilgan holda, satrning muayyan belgisining qiymatini qanday topish mumkin?
  17. Satrdagi kerakli belgini qanday topish mumkin?
  18. Qatorga kirishni sinxronlashtirish mumkinmi?
  19. Intern() usuli nima qiladi?
  20. String, StringBuffer va StringBuilder sinflari qanday farqlanadi va ularda qanday umumiylik bor?
  21. String va StringBuffer tipidagi ikki xil ob'ektning satr qiymatlarini solishtirishning to'g'ri usuli qanday?
  22. Nima uchun string Java-da o'zgarmas va yakunlangan?
  23. Nima uchun parolni saqlash uchun belgilar qatori qatordan afzalroq?
  24. Nima uchun string Java-dagi HashMap-da mashhur kalit hisoblanadi?
  25. Satrdan berilgan belgini olib tashlash usulini yozing.

  1. I/U oqimlarining qanday turlari mavjud?
  2. I/U oqimlarining asosiy ajdodlarini ayting.
  3. Quyidagi oqimlar o'rtasidagi o'xshashlik va farqlar qanday: InputStream, OutputStream, Reader, Writer?
  4. RandomAccessFile haqida nimalarni bilasiz?
  5. Faylga kirish usullari qanday?
  6. Oqim sinflari qanday paketlarda?
  7. Ustki tuzilish darslari haqida nimalarni bilasiz?
  8. Qaysi qo'shimcha sinf kirish bayt oqimidan ma'lumotlarni ibtidoiy ma'lumotlar turlari formatida o'qish imkonini beradi?
  9. Qaysi qo'shimcha sinf buferdan foydalanish orqali o'qish/yozishni tezlashtirishga imkon beradi?
  10. Qaysi sinflar bayt oqimlarini belgilar oqimiga va aksincha aylantirish imkonini beradi?
  11. Qaysi sinf fayl tizimi (EFS) elementlari bilan ishlash uchun mo'ljallangan?
  12. EFSga yo'lni belgilashda ajratuvchi qaysi belgi bo'ladi?
  13. Qanday qilib ma'lum bir katalogning barcha EFSlarini mezon bo'yicha tanlash mumkin (masalan, ma'lum bir kengaytma bilan)?
  14. FilenameFilter interfeysi haqida nimalarni bilasiz?
  15. Serializatsiya nima?
  16. Ob'ektni "xavfsiz" ketma-ketlashtirish uchun qanday shartlar mavjud?
  17. Qaysi sinflar obyektlarni arxivlash imkonini beradi?

  1. "Jarayon" atamasini aniqlang.
  2. "Oqim" atamasini aniqlang.
  3. "Tipni sinxronlashtirish" atamasini aniqlang.
  4. Dasturlar, jarayonlar va oqimlar qanday o'zaro ta'sir qiladi?
  5. Qachon bir nechta ipni yaratish tavsiya etiladi?
  6. Agar dasturda ikkita ip bir xil kodni bajarsa nima bo'lishi mumkin?
  7. Dasturning asosiy mavzusi haqida nimalarni bilasiz?
  8. Tarmoqlarni yaratish va ishga tushirish usullari qanday?
  9. Qaysi usul ijro uchun ipni boshlaydi?
  10. Qaysi usul bajarilish vaqtida ipning harakatini tavsiflaydi?
  11. Ip qachon o'z bajarilishini tugatadi?
  12. Usulni qanday sinxronlashtirish kerak?
  13. Qanday qilib ipni majburan to'xtatish kerak?
  14. "Daemon thread" atamasini aniqlang.
  15. Demon ipini qanday yaratish mumkin?
  16. Hozirgi mavzuni qanday olish mumkin?
  17. “Monitor” atamasini aniqlang.
  18. Qanday qilib ipning bajarilishini to'xtatib turish mumkin?
  19. Oqim qaysi shtatlarda bo'lishi mumkin?
  20. Statik bo'lmagan va statik usulni chaqirganda monitor nima?
  21. Usul kodining bo'limini bajarishda monitor nima?
  22. Qanday usullar iplarning bajarilishini sinxronlashtirishga imkon beradi?
  23. Qaysi usul ipni bo'sh rejimga qo'yadi?
  24. Notify va notifyAll usullarining funksiyasi qanday?
  25. Birlashish usuli nima qiladi?
  26. Kutish/xabar berish usulini chaqirish uchun qanday shartlar mavjud?
  27. "O'zaro blokirovka" atamasini aniqlang.
  28. Interrupt, interrupted, isInterrupted usullari o'rtasidagi farq nima?
  29. Qaysi holatda InterruptedException tashlanadi, qaysi usullar uni tashlashi mumkin?
  30. uchuvchi modifikatorlar va yield() usuli.
  31. java.util.concurrent paketi
  32. i++ operatsiyasini bajaradigan ba'zi bir usul mavjud. int tipidagi i o‘zgaruvchisi. Kod ko'p tarmoqli muhitda bajariladi deb taxmin qilinadi. Blokni sinxronlashtirish kerakmi?
  33. Agar usul statik sinxronlangan deb e'lon qilingan bo'lsa, mutex sifatida nima ishlatiladi? Statik sinxronlashtirilgan usul ishlayotgan vaqtda sinfning yangi namunalarini yaratish mumkinmi?
  34. Ishlash usulida tutilmagan RuntimeException sodir bo'ldi deylik. Oqim bilan nima bo'ladi? Istisno sodir bo'lganligini bilishning bir usuli bormi (butun yugurish tanasini try-catch blokiga o'ramasdan)? Bu sodir bo'lgandan keyin ipni qayta tiklashning bir yo'li bormi?
  35. Ip hovuzini amalga oshirish uchun qanday standart Java vositalaridan foydalanasiz?
  36. ThreadGroup nima va u nima uchun kerak?
  37. ThreadPool nima va u nima uchun kerak?
  38. ThreadPoolExecutor nima va u nima uchun kerak?
  39. Java'da "atom turlari" nima?
  40. ThreadLocal klassi nima uchun kerak?
  41. Ijrochi nima?
  42. ExecutorService nima?
  43. Nima uchun ScheduledExecutorService kerak?
300 dan ortiq savollar roʻyxati (javoblarsiz) http://becomejavasenior.com/ saytida topilgan. U erda boshqa mualliflar ro'yxati keltirilgan.

58489 Jami Ko'rishlar Bugun 15 Ko'rish

Ko'rishlar: 38 283

  • OOP nima?
  • Ob'ekt nima?
  • OOPning asosiy tamoyillarini ayting.
  • Meros nima?
  • Polimorfizm nima? Java tilidagi polimorfizmning qanday ko'rinishlarini bilasiz?
  • Kapsülleme nima?
  • Abstraksiya nima?
  • Ob'ektga yo'naltirilgan dasturlash tillarining afzalliklari nimada?
  • Ob'ektga yo'naltirilgan yondashuvdan foydalanish dasturiy ta'minotni ishlab chiqishni qanday yaxshilaydi?
  • "Is" va "has" iboralari mavjud. OOP tamoyillari nuqtai nazaridan ular nimani anglatadi? Kompozitsiya va agregatsiya o'rtasidagi farq nima?
  • Polimorfizm, inkapsulyatsiya va dinamik bog'lanish deganda nimani tushunasiz?

java yadrosi.

  • JRE, JVM va JDK o'rtasidagi farq nima?
  • Java-da kirish modifikatorlarini tavsiflang.
  • Paket darajasidagi kirish nima.
  • Mavhum sinf interfeysdan qanday farq qiladi? Qachon mavhum sinfdan foydalanasiz va qachon interfeysdan foydalanasiz?
  • Ob'ekt xususiy sinf o'zgaruvchisiga kira oladimi? Agar shunday bo'lsa, qanday qilib?
  • Java-da statik bloklar nima uchun?
  • Statik usulni ortiqcha yuklash mumkinmi?
  • Bizga ichki sinflar haqida gapirib bering. Ulardan qachon foydalanasiz?
  • Namuna o'zgaruvchisi va statik o'zgaruvchi o'rtasidagi farq nima? Misol keltiring.
  • Statik usuldan foydalanishingiz mumkinligiga misol keltiring?
  • Bizga yuklovchi sinflari va dinamik sinf yuklanishi haqida gapirib bering.
  • Java tilidagi "assert" operatorining maqsadi nima?
  • Nima uchun ba'zi interfeyslar usullarni umuman aniqlamaydi?
  • String, StringBuffer, StringBuilder o'rtasidagi asosiy farq nima?
  • Java I/U oqimlari haqida gapirib bering.
  • Java-da Heap va Stack xotirasi nima?
  • Java-da Stack va Heap xotirasi o'rtasidagi farq nima?
  • Java-da xotira modeli haqida gapirib bering?
  • Axlat yig'uvchi qanday ishlaydi?
  • Kasting turi haqida bizga xabar bering. Pastga tushirish va ko'tarilish nima? ClassCastException-ni qachon olasiz?
  • Statik sinf nima, undan foydalanish xususiyatlari qanday?
  • Ichki sinfdan tashqi sinf maydoniga qanday kirish mumkin.
  • Qanday turdagi ichki sinflar mavjud? Ular nima uchun ishlatiladi?
  • Usulni bekor qilishda o'zgartirish mumkinmi:
  • Kirish modifikatori
  • qaytish turi
  • Argument turi yoki raqami
  • Argument nomi
  • Buyurtmani, miqdorni o'zgartirasizmi yoki otish qismini butunlay olib tashlaysizmi?
  • Avtoboks nima?
  • Jenerik nima?
  • Java-da umumiy turlardan foydalanishning asl maqsadi nima?
  • O'zgaruvchilar qiymat yoki havola bo'yicha usullarga qanday uzatiladi?
  • Object klassi qanday usullarga ega?
  • Object.equals() usulini bekor qilish qoidalari.
  • Agar teng () ni bekor qilmoqchi bo'lsangiz, bekor qilingan usul uchun qanday shartlar bajarilishi kerak?
  • HashCode va tenglar o'rtasidagi munosabat qanday?
  • Object sinfida hashCode va teng usullari qanday amalga oshiriladi?
  • Tenglarni hashCode-ni bekor qilmasdan bekor qilsangiz nima bo'ladi? Qanday muammolar paydo bo'lishi mumkin?
  • HashCode ni hisoblashda qaysi maydonlardan foydalanish kerakligi haqida ko'rsatma bormi?
  • hashCode() usuli nima uchun?
  • Object.hashCode() usulini bekor qilish qoidalari.
  • Ob'ektni klonlash haqida bizga xabar bering. Sayoz va chuqur klonlash o'rtasidagi farq nima?
  • Object.clone() usulini bekor qilish qoidalari.
  • Shaxsiy konstruktordan qayerda va qanday foydalanishingiz mumkin?
  • Standart konstruktor nima?
  • Object.finalize() usulini tavsiflang.
  • Yakuniy, yakuniy va yakunlovchi so'zlari o'rtasidagi farq nima?
  • Istisnolar ierarxiyasini tavsiflang.
  • Java-da qanday istisnolarni bilasiz, ular qanday farq qiladi?
  • Belgilangan va belgilanmagan Istisno nima?
  • O'zingizning belgilanmagan Istisnoni qanday yaratishingiz mumkin?
  • Belgini olib tashlash istisnolari nima?
  • Xato nima?
  • try-catch-finally bloki qanday ishlashini tasvirlab bering.
  • try-finally (tutmasdan) blokdan foydalanish mumkinmi?
  • Finally bloki har doim bajariladimi?
  • String sinfining xususiyatlari qanday? intern() usuli nima qiladi.
  • String turini meros qilib olish mumkinmi, nima uchun?
  • Nima uchun string Java-dagi HashMap-da mashhur kalit hisoblanadi?
  • Satrlarni birlashtirish atamasini aniqlang.
  • Stringni qanday o'zgartirish mumkin?
  • Ikki qatorning qiymatini qanday solishtirish mumkin?
  • Satrning boshida va oxirida bo'shliqlarni qanday kesish mumkin?
  • "String puli" atamasini aniqlang.
  • Qatorga kirishni sinxronlashtirish mumkinmi?
  • String va StringBuffer tipidagi ikki xil ob'ektning satr qiymatlarini solishtirishning to'g'ri usuli qanday?
  • Nima uchun string Java-da o'zgarmas va yakunlangan?
  • Satrdan berilgan belgini olib tashlash usulini yozing.
  • Ko'zgu nima?
  • Agar biron bir ob'ektning finalize() usulini bajarish paytida istisno yuzaga kelsa, axlat yig'uvchi (GC) bilan nima sodir bo'ladi?
  • Xalqarolashtirish, mahalliylashtirish nima?
  • Java-da izohlar nima?
  • Annotatsiya qanday funktsiyalarni bajaradi?
  • Java-da qanday o'rnatilgan izohlarni bilasiz?
  • @Retention, @Documented, @Target va @Inherited izohlari nima qiladi?
  • @Override, @Deprecated, @SafeVarargs va @SuppressWarnings izohlari nima qiladi?
  • @Retention bilan qanday izoh hayot aylanishini belgilash mumkin?
  • Qaysi elementlarga izoh berish mumkin, uni qanday belgilash kerak?
  • Annotatsiyani qanday yaratish kerak?
  • Izohlarda qanday turdagi atributlarga ruxsat beriladi?
  • JMX nima?
  • JMX qanday imtiyozlarni taklif qiladi?
  • JMX masofadan boshqarishdan tashqari yana nima qila oladi?
  • MBean nima?
  • MBeanlarning qanday turlari mavjud?
  • MBean Server nima?
  • Java texnologiyasida qanday mexanizmlar xavfsizlikni ta'minlaydi?
  • Java bayt-kod tekshirgichi qanday tekshiruvlarni amalga oshiradi?
  • Java'da "himoya menejeri" haqida nimalarni bilasiz?
  • JAS nima?
  • Refaktoring nima?

Java Collections Framework.

  • To'plam nima?
  • To'plamlarning asosiy interfeyslarini va ularni amalga oshirishni nomlang.
  • ArrayList LinkedList dan qanday farq qiladi? Qaysi hollarda birinchisini qo'llash yaxshiroq va qaysi biri ikkinchisi?
  • HashMap va Hashtable o'rtasidagi farq nima?
  • ArrayList Vektordan qanday farq qiladi?
  • To'plam elementlari qanday taqqoslanadi?
  • Quyidagi interfeyslarni ierarxiyaga joylashtiring: List, Set, Map, SortedSet, SortedMap, Collection, Iterable, Iterator, NavigaableSet, NavigableMap.
  • Ro'yxat va to'plam to'plam bo'lsa, nima uchun Xarita To'plam emas?
  • "Iterator" atamasini aniqlang.
  • Iterable interfeysi haqida nimalarni bilasiz?
  • HashSet-ni bir qatorda ArrayList-ga qanday o'zgartirish mumkin?
  • ArrayList-ni bir qatorda HashSet-ga qanday o'zgartirish mumkin?
  • Xarita takrorlanmasligi sababli Xaritaning barcha tugmachalarini qanday takrorlash mumkin?
  • Xarita takrorlanmaydigan bo'lsa, Xaritaning barcha qiymatlarini qanday takrorlash mumkin?
  • Xarita takrorlanmasligi sababli Xaritadagi barcha kalit-qiymat juftliklarini qanday takrorlash mumkin?
  • toString() hamma narsani tartibda chop etishidan tashqari, SortedMap ning "saralash" nima?
  • Bir qo'ng'iroqda har qanday To'plamdan massivga elementlarni qanday nusxalash mumkin?
  • To'plam usullari (addAll(), removeAll(), retainAll()) yordamida ikkita to'plamning nosimmetrik farqini amalga oshiring.
  • Enumeration va iteratorni solishtiring.
  • Iterator va Iterator qanday bog'liq?
  • Java 5 da kiritilgan Iterable, Iterator va "for-har biri" o'rtasidagi munosabat qanday?
  • Iterator va ListIteratorni solishtiring.
  • Iterator.hasNext() ni "so'ramasdan" Iterator.next() ga qo'ng'iroq qilsam nima bo'ladi?
  • Iterator.hasNext() ga 10 marta qo'ng'iroq qilishdan oldin Iterator.next() ga qo'ng'iroq qilsam nima bo'ladi? Menga 9 ta narsa yetishmayaptimi?
  • Agar menda to'plam va bola iterator bo'lsa, iterator.remove() ga qo'ng'iroq qilsam, to'plam o'zgaradimi?
  • Agar menda to'plam va bola iterator bo'lsa, collection.remove(..) ga qo'ng'iroq qilsam, iterator o'zgaradimi?
  • Agar Vektor allaqachon mavjud bo'lsa, nima uchun ular ArrayListni qo'shishdi?
  • ArrayList sinfini amalga oshirish quyidagi maydonlarga ega: Object elementData, int size. Har doim elementData.length olishingiz mumkin bo'lsa, nima uchun o'lchamni alohida saqlashingiz kerakligini tushuntiring?
  • LinkedList yakka bog'langan, ikki yoki to'rtta bog'langan ro'yxatmi?
  • LinkedList (O(1), O(log(N)), O(N), O(N*log(N)), O()dagi element uchun contain() usuli uchun eng yomon vaqt qaysi? N*N))?
  • ArrayList (O(1), O(log(N)), O(N), O(N*log(N)), O()dagi element uchun contain() usuli uchun eng yomon vaqt qaysi? N*N))?
  • LinkedList add() usuli (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N)) uchun eng yomon vaqt qaysi?
  • ArrayList add() usuli (O(1), O(log(N)), O(N), O(N*log(N)), O(N*N)) uchun eng yomon vaqt qaysi?
  • ArrayList.add() chaqirilganda xotirada nechta element ajratiladi?
  • LinkedList.add() chaqirilganda xotirada nechta element ajratiladi?
  • LinkedList-da bitta bayt turini saqlash uchun xotira hajmini hisoblang?
  • ArrayList-da bitta bayt turini saqlash uchun xotira hajmini hisoblang?
  • Roʻyxatning oʻrtasiga element qoʻshaman: list.add(list.size()/2, newElem). Kim uchun bu operatsiya sekinroq - ArrayList uchunmi yoki LinkedList uchunmi?
  • LinkedList elementlarini sekin olish (index) dan foydalanmasdan teskari tartibda qanday takrorlash mumkin?
  • Ro'yxatni bitta qo'ng'iroq bilan birinchi va oxirgi 3 tadan tashqari barcha elementlar bilan qanday olish mumkin?
  • Xotiradagi turli ob'ektlar (ref0 != ref1) ref0.hashCode() == ref1.hashCode() ga ega bo'lishi mumkinmi?
  • Xotiradagi turli ob'ektlar (ref0 != ref1) ref0.equals(ref1) == rost bo'lishi mumkinmi?
  • Xotiradagi bir xil ob'ektga turli murojaatlar (ref0 == ref1) ref0.equals(ref1) == noto'g'ri bo'lishi mumkinmi?
  • Point(int x, y;) sinfi mavjud. Nima uchun x + y dan 31 * x + y shaklidagi xesh-kod afzalroq?
  • Agar Point(int x, y;) klassi tenglashtirish usulini qo'llash uchun "to'g'ri" bo'lsa (ref0.x == ref1.x && ref0.y == ref1.yni qaytaring), lekin xesh kodini int hashCode( kabi qiling. ) (qaytish x;), bunday nuqtalar to'g'ri joylashtiriladi va HashSet'dan olinadimi?
  • equals() ekvivalentlik munosabatini hosil qiladi. Bunday munosabat qaysi xossalarga ega: kommutativlik, simmetriya, refleksivlik, distributivlik, assotsiativlik, tranzitivlik?
  • Equs(Object that) (this.hashCode() == that.hashCode()) ni shu tarzda amalga oshirish mumkinmi?
  • teng argument (equals(Object that)) ob'ektning o'zi bilan bir xil ekanligini tekshirishni talab qiladi. this.getClass() == that.getClass() va MyClass misoli o'rtasidagi farq nima?
  • MyClass sinfining teng usulini quyidagicha amalga oshirish mumkinmi: klass MyClass (ommaviy mantiqiy teng (MyClass that) (buni == that;) qaytaring)?
  • Agar barcha tugmalar int hashCode() ni qaytarsa ​​(42;) qaytarsa, HashMap ishlaydimi?
  • Agar Hashtable allaqachon mavjud bo'lsa, nima uchun ular HashMap-ni qo'shdilar?
  • Knut va Kormenning fikriga ko'ra, xesh-jadvalning ikkita asosiy amalga oshirilishi mavjud: ochiq manzilga asoslangan va zanjirlash usuliga asoslangan. HashMap qanday amalga oshiriladi? Nega ular buni qilishdi (sizning fikringizcha)? Har bir yondashuvning ijobiy va salbiy tomonlari qanday?
  • Jadvaldagi kalitda HashMap.get(kalit) ni bajarganingizda nechta havola bosiladi?
  • HashMap-ga yangi element qo'shganda qancha yangi ob'ektlar yaratiladi?
  • HashMap ikkita elementni bir xil hashCode bilan kalitlar orqali saqlashga harakat qilganingizda qanday ishlaydi, lekin buning uchun == noto'g'ri bo'ladi?
  • HashMap hatto turli xil hashCodeli kalitlar uchun ham ro'yxatga aylanishi mumkin. Bu qanday bo'lishi mumkin?
  • Jadvalda bo'lmagan kalit (O(1), O(log(N)), O(N), O(N*log(N)) uchun get(key) usuli uchun eng yomon vaqt nima? O(N*N))?
  • Jadvaldagi (O(1), O(log(N)), O(N), O(N*log(N)), O kalit uchun get(kalit) usuli uchun eng yomon vaqt qaysi? (N*N))?
  • HashMap(int initialCapacity, float loadFactor) konstruktoridagi parametrlarning ma'nosini tushuntiring.
  • HashMap va IdentityHashMap o'rtasidagi farq nima? IdentityHashMap nima uchun? Serializatsiya yoki klonlashni amalga oshirish qanday foydali bo'lishi mumkin?
  • HashMap va WeakHashMap o'rtasidagi farq nima? WeakHashMap nima uchun?
  • WeakHashMap WeakReferences-dan foydalanadi. Nega SoftReferences-da SoftHashMap yaratmaysiz?
  • WeakHashMap WeakReferences-dan foydalanadi. Nega PhantomReferences-da PhantomHashMap yaratmaysiz?
  • HashMap-dan HashSet yarating (faqat bir nechta kalitlardan foydalaning, bir nechta qiymatlardan emas).
  • HashSet (HashSet.) dan HashMap yarating >).
  • Java.util.Queue va java.util.Deque interfeyslarini solishtiring.
  • Kim kimni uzaytiradi: Navbat Dequeni uzaytiradi yoki Deque Navbatni uzaytiradi?
  • Nima uchun LinkedList ham List, ham Dequeni amalga oshiradi?
  • Java.util.Arrays va java.lang.reflect.Array sinflari o'rtasidagi farq nima?
  • Java.util.Collection va java.util.Collections sinflari o'rtasidagi farq nima?
  • To'plamni ConcurrentModificationException ni chiqarishga olib keladigan torli bo'lmagan dasturni yozing.
  • "Muvaffaqiyatsiz xatti-harakatlar" nima?
  • Enumlar to'plami uchun java.util.EnumSet maxsus klassi bormi? Nima uchun? Nega mualliflarga HashSet yoki TreeSet yoqmadi?
  • java.util.Stack - "eskirgan" deb hisoblanadi. Uni almashtirish uchun nima tavsiya etiladi? Nega?
  • Qaysi to'plam FIFO xizmati intizomini amalga oshiradi?
  • Qaysi to'plam FILO xizmati intizomini amalga oshiradi?
  • To'plam UnsupportedOperationExceptionni tashlaganiga misol keltiring.
  • Nima uchun "ArrayList" deb yozolmaysiz raqamlar = yangi ArrayList ();" lekin siz "Ro'yxat raqamlar = yangi ArrayList ();"?
  • LinkedHashMap - bu "hayvon" nima? Unda LinkedList-dan nima bor va HashMap-dan nima?
  • LinkedHashSet - bu "hayvon" nima? Unda LinkedList-dan nima bor va HashSet-dan nima?
  • Ular LinkedHashMap-da "yaroqsiz qilish siyosati" bilan oddiy kesh yaratish oson deyishadi, bilasizmi?
  • PriorityQueue sizga nima qilish imkonini beradi?
  • Java.util.Comparator va java.lang.Comparable o'rtasidagi farqlar qanday?

Java 8.

  • Ramziy havola nima?
  • I/U va NIO o'rtasidagi farq nima?
  • NIO ning qanday xususiyatlarini bilasiz?
  • I/U oqimlarining qanday turlari mavjud?
  • Kirish/chiqish oqimlarining asosiy sinflarini ayting.
  • OutputStream, InputStream, Writer, Reader qanday farqlanadi va ularda qanday umumiylik bor?
  • InputStream asosiy sinfining qaysi kichik sinflari nima uchun ekanligini bilasizmi?
  • RandomAccessFile haqida nimalarni bilasiz?
  • RandomAccessFile qanday fayllarga kirish rejimlariga ega?
  • OutputStream asosiy sinfining quyi sinflari nima va ular nima uchun ekanligini bilasizmi?
  • PushbackInputStream nima uchun ishlatiladi?
  • SequenceInputStream nima uchun ishlatiladi?
  • Reader asosiy sinfining qaysi kichik sinflari nima uchun ekanligini bilasizmi?
  • Writer asosiy sinfining qaysi kichik sinflari nima uchun ekanligini bilasiz?
  • Mutlaq yo'l va nisbiy yo'l nima?
  • Oqim sinflari qanday paketlarda?
  • Ustki tuzilish darslari haqida nimalarni bilasiz?
  • Qaysi qo'shimcha sinf kirish bayt oqimidan ma'lumotlarni ibtidoiy ma'lumotlar turlari formatida o'qish imkonini beradi?
  • Qaysi qo'shimcha sinf buferdan foydalanish orqali o'qish/yozishni tezlashtirishga imkon beradi?
  • Qaysi sinflar bayt oqimlarini belgilar oqimiga va aksincha aylantirish imkonini beradi?
  • PrintWriter sinfi va PrintStream sinfi o'rtasidagi farq nima?
  • Qaysi sinf fayl tizimi elementlari bilan ishlashga mo'ljallangan?
  • Fayl tizimidagi yo‘lni belgilashda chegaralovchi qaysi belgi bo‘ladi?
  • File sinfining qanday usullarini bilasiz?
  • FileFilter interfeysi haqida nimalarni bilasiz?
  • Qaysi sinflar obyektlarni arxivlash imkonini beradi?

  • Statik sinxronlashtirilgan usul chaqirilganda sinxronizatsiya qaysi ob'ektda sodir bo'ladi?
  • O'zgaruvchan, sinxronlashtirilgan, vaqtinchalik, mahalliy kalit so'z nima uchun ishlatiladi?
  • Tarmoq ustuvorligi nimani anglatadi?
  • Java-da daemon iplari nima?
  • Oqimni to'xtatish nimani anglatadi?
  • Java-da ip qanday holatlarda bo'lishi mumkin? Oqim aslida qanday ishlaydi?
  • Runnable va Callable vazifalarini amalga oshirish uchun ikkita interfeys o'rtasidagi farq nima?
  • CyclicBarrier va CountDownLatch o'rtasidagi farqlar?
  • Poyga sharti nima?
  • Qanday qilib ipni to'xtatish kerak?
  • Mavzuda istisno sodir bo'lganda nima bo'ladi?
  • ThreadLocal o'zgaruvchisi nima?
  • FutureTask nima?
  • Interrupted va isInterrupted o'rtasidagi farq bormi?
  • Nima uchun kutish va ogohlantirish usullari sinxronlashtirilgan blokda chaqiriladi?
  • Ip hovuzi nima?
  • Jonli qulf va o'lik o'rtasidagi farqlar?
  • Ipning qulfni ushlab turishini qanday tekshirish mumkin?
  • Qanday qilib ip to'plamini olish mumkin?
  • Ip stekining o'lchamini boshqarish uchun qanday JVM sozlamalari qo'llaniladi?
  • Sinxronlashtirilgan va ReentrantLock o'rtasidagi farqlar?
  • Semafor nima?
  • Agar iplar havzasi navbati allaqachon to'lgan bo'lsa va siz topshiriq topshirsangiz nima bo'ladi?
  • Ip hovuzining submit() va execute() usullari o'rtasidagi farqlar bormi?
  • Bloklash usuli nima?
  • ReadWriteLock nima?
  • Singletonning ikki marta tekshirilgan qulfi nima?
  • Fork/Join ramkasi nima?
  • Kuch - bu ko'pchilik ichishi mumkin bo'lgan daryo va Jedi mashg'ulotlari undan olishning yagona yo'li emas." - Lyuk Skywalker Barcha kitoblar to'plamlari ortda qoldi. Ulardan qaysi birini o'qish kerak, nima emas - bu sizga bog'liq. Endi sizda faqat bitta maqsad qoldi: rakega qadam qo'ymasdan ishga joylashish va martaba qurish. Oxirgi maqola bo'limlarga bo'lingan: - Ishdan oldin - Suhbat - Ish paytida Bu qismda mening shaxsiy fikrim juda ko'p, shuning uchun iboralarni kontekstdan olib tashlamang va eski do'stingiz bilan ochiq suhbat sifatida munosabatda bo'ling :).

    Ishdan oldin

    Quyida ruh dasturlashga jalb qilinganda paydo bo'ladigan o'nta eng mashhur klişedir, ammo ma'lum holatlar insonga xalaqit beradi. Mening vazifam sizning shubhangizni to'xtatish va sizni ijobiy fikrlash tarziga o'rnatishdir. Agar siz ushbu maqolani o'qiyotgan bo'lsangiz, siz o'ylaganingizdan ham uzoqdasiz! Aqliy jihatdan, siz allaqachon kerakli joydasiz va agar siz allaqachon ba'zi kitoblarni o'qigan bo'lsangiz, unda yo'lning yarmi allaqachon o'tib ketgan. Shuning uchun, shubhalanishni to'xtating - bu zaiflarning taqdiri. Faqat oldinga! Allaqachon yaxshiroqmi? Unda ketaylik! "Mening ma'lumotim yo'q" Yirik autsorsing firmalaridan birining akademiyasiga kirganimda, intervyu oluvchilar menga muloyimlik bilan ularni diplomga umuman qiziqmasliklariga ishora qilishdi, shuning uchun savollar aniq edi - OOP va asosiy Java. Albatta, ular mavjud bo'lgan bo'sh ish o'rinlarini uchratasiz. ta'lim aniq talab bo'ladi. Shu kunlarda uning yo'qligi to'siq emasligini aytmoqchiman. Ko'pgina xorijiy idoralar BS / MS Computer Science yoki e'tibor, tegishli tajribani so'rashadi. Ishonchli emasmi? Ehtimol, men texnik ma'lumotga ega emasligim sizni ruhlantirar;), lekin bu menga yirik kompaniyalarda tajriba orttirishga mutlaqo to'sqinlik qilmadi. Endi mendan so'rang, agar lentani orqaga o'rasam nima qilardim? Albatta, men KPI / NAU ga borardim, lekin kirmaganimda ko'p qayg'urmasdim. Bu haqda g'azablanishni bas qiling. Vaqt o'tadi - agar xohlasangiz, 40 yoshda qobiq olishingiz mumkin - ammo hozircha bu erda va hozir kichik dasturchi bo'lishga e'tibor qarating. "Mendan aqlli odamlar bo'ladi" Har doim sizdan ko'ra aqlli, aqlli, moslashuvchan, qobiliyatli odamlar bo'ladi va har qanday ish ham bundan mustasno emas. Bu haqiqat sizga maqsaddan chetga chiqish huquqini mutlaqo bermaydi. Ehtimol, dunyoning narigi tomonida sizdan ko'ra tezroq raqamlarni ko'paytiruvchi va bo'luvchi yaponiyalik kichkina bola bor va Chexiyadan kelgan buvisi mobil telefon klaviaturasida har qanday o'smirdan tezroq yozadi. Lekin siz bu haqda o'ylamaysiz, shunday emasmi? Xo'sh, nega siz o'rnashib olganingizdan so'ng birga ishlaydigan odamlar haqida qayg'urishingiz kerak? Bo'lajak hamkasblaringiz qaysidir ma'noda sizdan o'zib ketishadi, qaysidir ma'noda sizdan mag'lub bo'lishadi. Bu odatiy! Chizib tashlang. "Men qila olmayman deb o'ylayman" Xo'sh, birinchi navbatda, hech kim bu oson bo'ladi deb aytmadi, lekin bu sizning maqsadingiz amalga oshmaydi degani emas. Agar siz hozirda buxgalter yoki savdo bo'yicha yordamchi bo'lib ishlayotgan bo'lsangiz ham, uni shunchaki sinab ko'rishingizga hech narsa xalaqit bermaydi. Ish kunidan keyin keling va o'qish uchun o'tiring. Agar bir muncha vaqt o'tgach, siz qandaydir taraqqiyotni ko'rsangiz, bu sizning to'g'ri yo'nalishda harakat qilayotganingizning belgisidir. Toxtama! Agar siz bu narsaga ozgina qiziqsangiz va u sizga berilgan bo'lsa, unda men sizni bunga loyiq emasligingizga ishontiradigan biron bir narsani bilmayman. "Men dangasaman" Dangasalik - bu shunchaki motivatsiyaning etishmasligi. Agar siz bo'sh vaqtingizning ko'p qismini o'qish va kursdan voz kechmaslik o'rniga ahmoqona axlat bilan shug'ullanayotganingizni sezsangiz - men sizga shuni aytishga shoshilamanki, dasturchining ishi sizniki emas. Hech bo'lmaganda hozir emas. Ba'zilar dangasalikni gunoh, kasallik, semizlik bilan birga zamonaviy davr vabosi deb ataydi. Bu biznesni mansab isteriklariga qoldiring. Menimcha, bu hayotdagi hamma narsa kurash va raqobat illyuziyasi bilan to'yingan: kim baland, kim kuchli, kim boy. Kimning mashinasi salqinroq, jamoada kimning maoshi ko‘proq, kim sport zalida shtangani qattiqroq bosadi, qaysi qizlardan qaysi biri erta turmushga chiqib, farzandli bo‘ladi – bu sizni kasal qiladi, hidli fastfud kabi. Odamlar yashashni va hayotdan zavqlanishni, orzulariga ergashishni, o'zlarining konfor zonalarini Pepsi va Coca-Cola o'rtasidagi tanlovga almashishni to'xtatdilar. Men uchun dangasalik yaxshi, shunchaki ajoyib. Bu tanangizning oddiy himoya funktsiyasi bo'lib, vaqt va energiyani foydasiz narsalarga tejash imkonini beradi. Inson erkin bo'lish uchun yaratilgan, shuning uchun agar siz dangasa bo'lsangiz - eshagingizni divandan ko'tarishga urinishni to'xtating - ehtimol u hozir o'z o'rnida :). "Men u erga pul uchun boraman" Agar biz ishlab chiquvchilarni yig'ib aytsak: bundan buyon sizning maoshingiz har qanday darajadagi 3-4 ming grivnani tashkil qiladi va testerlar bir xil stavkalarni olishda davom etadilar, unda savol boshqacha bo'ladi: qancha bombardimon qilinadi, lekin qancha. bu xabardan keyin dasturchilar shunchaki dasturchi bo'lib qoladilar. Ko'p odamlar xamir tufayli ITga kirishadi. Ish haqi dollar, pishloq va qimmat DSLR dan tarjima qilingan. Odamlar bilan qancha ishlagan bo'lsam ham, bu haqdagi suhbatlar doimo o'tib ketardi. Men buni yomon deb aytmayapman, shunchaki dunyoni yaxshi tomonga o'zgartirish uchun sof ruhiy maqsadlardan chiqib ketayotganingizga o'zingizni ishontirishga urinmasligingizni istayman. Men kichik bo'lib ishga kirishdan oldin, men keksalar, texnik rahbarlar va hatto o'rtadagilarning maoshi nima ekanligini bilardim va bu fikrlar meni faqat ilhomlantirdi: mening vaqtimda, dasturchi bo'lib ishlashdan oldin, men buni faqat orzu qilardim. raqamlar. Bu narsalarni o'z nomlari bilan chaqiring va bundan uyalmang. "Menimcha, bu meniki emas" Keyin kimniki? Bilasizmi, tekshirish oson. Hortsmannning birinchi jildini oching va o'qishni boshlang, misollardan kodni yozing. Agar siz zerikmasangiz va ikkinchi haftada xuddi shu bobda vaqtni belgilamasangiz, shubhalaringizni qoldiring. Texnik mutaxassisliklarni o'rganish izchil narsadir. A ni bilmasdan B ga bora olmaysiz, lekin sizda har doim bir bobga qaytish va poydevorni mustahkamlash imkoniyati bo'ladi. Davom etishga ruxsat. "Menga o'xshaganlar ko'p" Har doim joy uchun raqobat mavjud. Men bahslashmayman, masalan, hozir bu ko'rsatkich tajribasiz 300-400 tester yoki bir joy uchun undan ham ko'proq. Ha, bu achchiq haqiqat, lekin boshqa tomondan, bunday ko'rsatkichlar bilan ham men etarlicha jiddiy fikr topa olmayapman. Ha, kamida 100500 joyida !! Sizda har doim o'z loyihalaringizda tajriba orttirish imkoniyati mavjud: qandaydir xizmat turini, ish stoli dasturini yarating, o'zingiz bilgan to'liq stekdan foydalaning - va siz allaqachon zarba beryapsiz, qolganlari esa rezyumeingizni yuborishdan tashqari, hech narsa qilmang. boshqa. “Mening rezyumega hech kim javob bermaydi” Yuqoridagi paragrafning davomi sifatida. Katta ehtimol bilan, tajribaga ega bo'lmagan bo'lajak IT mutaxassislari uchun chiroyli rezyume yozish imkoniyati yaxshi, lekin bitta bo'sh ish o'rniga ko'p odamlar bo'lsa, ko'plab rezyumelar bir-biriga juda o'xshash: albatta, siz fotosuratni yuborishingiz mumkin. bo'yinbog' (agar qiz bo'lsa) yoki ko'plab texnologiyalarni yozing , siz o'zingiz faqat Vikipediyadan bilasiz. Ikkala holatda ham HR shunchaki ahamiyat bermaydi: agar loyiha bo'sh joyida, masalan, AWSni biladigan odam bo'lishi kerak bo'lsa, ular rezyumeda AWSni qidiradilar. Hamkasblarning tavsiyalari kabi yana bir muhim narsani hisobga oling. Bunday tanish-bilishlari bo'lmagan har qanday odamning dardi shu, chunki kichiklarning sher ulushi o'sha erdan olinadi (agar o'sha odam, tavsiyaga ko'ra, ahmoq bo'lmasa, albatta). Odatda, ta'kidlayman, o'rganishga va hatto ovqatga tayyor bo'lgan adekvat faol odam kichik lavozimga olinadi. Va agar bunday nomzod muvaffaqiyatsizlikka uchrasa, siz keyingi bo'lish ehtimoli ko'proq. Xo'sh, qolganlari intervyu qilinayotganda, sizda salqinlash mumkin bo'lgan ko'plab sohalar mavjud: ochiq manba, Internetdagi jumboqlar va ehtimol freelancing. "Men intervyudan o'tmayman / ma'lum bir kompaniyada ishlashni xohlayman" Ha, ehtimol, birinchi intervyu muvaffaqiyatsiz bo'ladi, lekin siz olgan tajriba bebahodir. Har bir keyingi intervyuda siz yanada ishonchli va zukko bo'lasiz. Hozir men birinchi o'zimni eslayman ... Xudo, men qanday bema'nilik haqida gapirgan edim ?! Uning ortidan ketish naqadar sharmandali edi (yuzimga tirjaygan o‘sha arvoh esimda), lekin uyga kelib, o‘ylab ko‘rganimda, bu ajoyib saboq ekanligini angladim. Undan keyin keyingi barcha shunga o'xshash voqealar osonlik va ishonch bilan to'ldirilgan. Hech kim o'lmadi, ular menga o'xshaganlarni qidirmoqdalar, shuning uchun men kelaman. O'zingga ishon! Agar siz ma'lum bir kompaniyani xohlasangiz, men sizga bizning muhitimizda mashhur bo'lgan hayotni buzmayman deb o'ylayman, lekin baribir: ushbu ofis bilan uchrashuv tashkil qilishdan oldin, undan oldin raqobatchilar bilan suhbatdan o'ting. Ehtimol, sizga rad etmaydigan narsa taklif qilinadi yoki shartlar keskinroq bo'ladi. Men bir narsani aniq bilaman: bundan afsuslanmaysiz. "Men bu ishda yaxshiman" Bilasizmi, qadimgi maqol bor: Le mieux est I'enneini du bien ("Eng yaxshisi yaxshining dushmani"). Ehtimol, sizning ishingiz eng yomon joy emas, lekin ha, xo'jayin echki, shuning uchun nima? Yoki, masalan, bonussiz uchinchi yil, lekin barqaror ish haqi, ayniqsa, men allaqachon 30 yoshdan oshganim uchun. Qaysidir darajada, shunday bo'lishi mumkin, faqat sizda bitta hayot borligini esda tuting va unga sarflanmaslik kerak. umidsizliklar, xayoliy tasalli uchun, atrofida juda ko'p qiziqarli narsalar mavjud bo'lganda va butun hayot tushunish uchun etarli emas. Yaxshi bo'lishdan qo'rqmang, yaxshiroq bo'lishdan qo'rqmang. Hech kimga quloq solmang, agar siz haqiqatan ham shunday qilishni xohlayotganingizni bilsangiz, maqsad sari qat'iyat bilan boring. O'zgartirishdan qo'rqmang!

    Intervyu

    Umuman olganda, siz bularning barchasini Internetda topishingiz yoki do'stlaringiz bilan so'rashingiz mumkin, ammo menimcha, bu ortiqcha bo'lmaydi. Quyida kichik Java dasturchisi uchun intervyu misoli keltirilgan, chunki men suhbatdosh bo'lganimda u hozir bo'lardi. Savollar har qanday bo'lishi mumkin, men faqat shifoxona uchun o'rtacha narsalarni yig'ishga harakat qildim. Keling, omadingiz borligini ko'rsataylik. Standart sxema 1-qadam. Ishga qabul qiluvchi sizga qo'ng'iroq qiladi va siz u bilan suhbat uyushtirasiz, masalan, ertaga soat 11:00 da. 2-qadam Siz erta kelasiz, chunki soat 11:00 ehtimol siz uchun emas, balki sizni qiynoqqa soladigan qandaydir xona ajratilgan ishlab chiquvchilar uchun vaqt. Har qanday ishga yollovchining bu haqda ogohlantirishi yaxshi odobdir. 3-qadam Aslida, 3-bosqichdan boshlab, barcha fikrlarni aralashtirish mumkin, chunki intervyular turli yo'llar bilan o'tkazilishi mumkin. Misol uchun, bu erda sizdan asosiy narsalar haqida so'rashingiz mumkin, siz qayerdansiz, nega biz bilansiz va hokazo. Buni HRning o'zi qila olishi mumkin va albatta ingliz tilida ham bo'lishi mumkin. To'g'ri, bu kompaniyaga bog'liq. 4-qadam Sizni yig'ilish xonasiga taklif qilishadi, u erda siz bir, ikki, uch kishi bilan suhbat qurasiz, ulardan biri katta yoki texnik rahbar bo'lib, kelajakda siz bilan ishlaydi, qolganlar orasida ham bo'lishi mumkin. Scrum master, boshqa ishlab chiquvchilar yoki HR. Biroz intervyu berishadi, keyin qo‘l siltab qo‘yib yuborishadi. 5-qadam Ehtimol, bu ertasi kuni yoki 4-bosqichdan so'ng darhol bo'ladi - siz chet ellik mijoz bilan suhbatlashasiz (agar mavjud bo'lsa) yoki ehtimol u o'zi intervyu beradi. Ko'rib turganingizdek, ko'plab variantlar mavjud. Qaerdadir mijozlar bor, qayerdadir telefon suhbati ham bor. Bu faqat bir misol. Junior Java dasturchisi uchun texnik intervyuga misol Intervyu uchun abituriyentning oldida cho'kib ketish / ezib tashlash / ko'rsatish uchun aqlli narsalarni o'qigan kam ishlab chiquvchilarga juda achinaman. Agar bunday odam sizning oldingizda ekanligini ko'rsangiz va siz undan bosim va taranglikni his qilsangiz, darhol uni uchta kulgili odamga yuboring, chunki bu kretin bilan muvaffaqiyatli o'tishdan keyin siz ishlashingiz kerak bo'ladi. Qimmatli nervlarni behuda sarflamang. Suhbat, birinchi navbatda, nomzod nimani bilmasligini emas, balki nimani bilishini aniqlash maqsadida o'tkazilishi kerak. Tabiiyki, agar sizga aniq bir narsani biladigan odam kerak bo'lsa - undan so'rang, uni loyihada foydalanmaydigan foydasiz narsalar bilan qiynamang. Axir, odam bo'l! Quyida intervyuda duch kelishi mumkin bo'lgan taxminiy savollar mavjud. Har bir texnologiya uchun 5 ta savol. OOP 1. Polimorfizmga hayotdan misol keltiring? Qanday foyda bor? Kamchiliklar? Oddiy kod yozing. 2. Interfeys deb nimaga aytiladi? Abstrakt sinf? Agar siz hamma narsani sinflar bilan ahmoqona yozishingiz mumkin bo'lsa (ozgina provokatsiya) nima uchun bizga interfeyslar kerak? Xuddi shu narsa mavhum sinf uchun ham amal qiladi. Java 8 da standart usullar qanday? 3. Xayoliy ma'lumotlar bazasi yoki dasturning (ma'lumotlar bazasidan turli toifadagi ishchilar ro'yxati mavjud) va ular o'rtasidagi o'zaro ta'sirning (jamlash, tarkib) aniq misolida sinflar ierarxiyasini qurish. 4. Kompozitsiyaning yig‘ilishdan (is-a, has-a) farqi nimada? 5. Java-da bir nechta merosni taqiqlashdan qanday qutulish mumkin? JDK/JRE 1. JDK JRE dan nimasi bilan farq qiladi? JVM nima? 2. Sinf yo‘li nima va u nima uchun? Masalan, sinf yo'lidagi boshqa sinflarni qanday yuklash kerak? 3. Classloader haqida nimalarni bilasiz? 4. Javadoc haqida gapirib bering? Bu nima uchun? 5. JAR, WAR nima? Java umumiy 1. Statik usullarning nostatik usullardan farqi nimada? Yakuniy nima? 2. Boks-unboxing nima? bayt b = 127, b++, natija nima va nima uchun? 3. O‘ramlar nima, ular nima uchun? 4. Annotatsiya yaratish uchun nima qilishim kerak? Ortiqcha yuklash/ortiqcha yuklash nima? 5. Nima uchun String sinfi yakuniy hisoblanadi? Intern() usuli nima qiladi? Ma'lumotlar tuzilmalari 1. Java tilidagi Collections API ning tuzilishi haqida gapirib bering? Stream API bilan allaqachon ishlaganmisiz? 2. ArrayList va LinkedList o'rtasidagi farq nima? ArrayList-dan qayerda foydalanish yaxshiroq va LinkedList qayerda? 3. HashMap qanday ishlashini ayting? TreeSet, HashSet bilan ishlashning qanday xususiyatlari bor? Guava kolleksiyalari bilan tajribangiz bormi? 4. Java tilidagi massivlar, ikki o'lchovli massivga misol. 5. hashCode, HashMap misolida tengmi? Bir vaqtning o'zida 1. Jarayon nima? Oqim? Qanday qilib ipni yaratish kerak? Sinxronizatsiya nima? U yoki bu ip-xavfsiz kodni qanday tushunish mumkin? 2. Thread.sleep, shuningdek kutish, xabar berish, hosil qilish nima? 3. Tugallanishga misol keltiring? 4. Ko'p oqim bilan ishlashda to'plamlar. 5. ThreadLokal va Atom operatsiyalari SQL/JDBC 1. Muayyan misolda, Foydalanuvchilar ma'lumotlar bazasidan maoshi 5000 dan yuqori bo'lganini oling. 2. INNER JOIN, OUTER JOIN, Order By, Group By misollari. 3. Nima uchun menga JDBC drayveri kerak? Misollar. 4. ResultSet haqida bilgan hamma narsani ayting, bir nechta misol. 5. RS yordamida oddiy DAO yozing. JPA/Hibernate 1. JPA ning afzalliklari va kamchiliklari qanday? 2. EntityManager nima? tashkilot? 3. JPA/Hibernate rejimidagi mezonlar. 4. JPA/Hibernate'da birdaniga, ko'pdan ko'pga 5. Hibernate rejimida JOINni qanday qilgan bo'lardingiz? HQL? Bahor 1. DI/IoC nima? Afzalliklar. 2. Ilova konteksti nima? Bean? 3. IoC ishga tushirish turlari qanday? 4. Singleton, bahorda prototip? Izohga asoslangan bahormi? 5. Fasollarning hayot aylanishi? boshlang'ich usuli, yo'q qilish usuli? @PostConstruct, @PostDeploy? Maven 1. Mavenning asosiy fazalari, hayot aylanishi. 2. Mavenni testlar bilan, testlarsiz qanday ishga tushirish kerak? Arxetip, mvn qaramligi nima? 3. Mavendagi profillar, qanday yaratiladi, qanday ishga tushiriladi. 4. Mavenda snapshot nima? Markaziy/masofaviy omborlar? 5. Mvn dagi plaginlar, ishlash prinsipi, bir-ikki misol. Algo 1. Algoritm haqida tushuncha, uning tezligi, Big-O-Notation. 2. LinkedList dagi o'rta elementni bir marta qanday topish mumkin? 3. Primitiv stekni yozing? Stack va Queue o'rtasidagi farq nima? LIFO, FIFO? 4. Tezkor saralash, Birlashtirish saralash. 5. Sonning palindrom ekanligini tekshiradigan dastur tuzing. Qabul qilaman, ehtimol bar kichikroqqa qaraganda o'rtaga bir oz ko'proq egilgandir, lekin menimcha, bunday tayyorgarlik sizga zarar keltirmaydi. Har bir savolni chuqurroq o'rganishga harakat qiling. Aytgancha, Java-da ko'plab yo'nalishlar bu erda ko'rsatilmagan, iltimos, hisobga oling.

    Ish paytida

    Bu erda allaqachon o'rnashib qolgan kichik/o'rta ishlab chiquvchilar uchun kichik tavsiyalar mavjud. Bu oddiy maslahatlar menga o'z navbatida yordam berganidek siz uchun ham foydali bo'lishi mumkin. O‘jar bo‘lmang O'z fikringizni isbotlashni to'xtating, hatto u haqiqatga yaqin bo'lsa ham. Siz allaqachon tushungansiz, siz uzoq vaqtdan beri janjalda bo'lgansiz, demak, barrikadalarning narigi tomonida hayotda faqat ikkita fikrga ega bo'lgan oddiy eshak bor: o'ziniki va noto'g'ri. Bizda aql bovar qilmaydigan ko'p o'jar odamlar bor, ular o'zlarining nafslari silkitmas ekan, o'zlarining so'nggi nuqtalarida turishadi. Va bular nafaqat sizning hamkasblaringiz, ular hamma joyda - mikroavtobusda, do'konda, qarindoshlaringiz, yaqin do'stlaringiz - siz ulardan qochib qutula olmaysiz. Biror kishi ochiq-oydin bema'ni gapirayotganini tushunsangiz ham, ular bilan qandaydir tarzda muloqot qilishingiz kerak. Bundan tashqari, xuddi shu narsa siz bilan sodir bo'lishi mumkin. Qabul qilaman, oddiy narsalarni hatto qaysar odamga ham tushuntirish mumkin, lekin agar biz loyihada yoki shaxsiy fikrda arxitektura masalalari haqida gapiradigan bo'lsak-chi? Bu keraksiz narsalarni unuting - moslashuvchan bo'ling. Men hammaning oldida xatosini tan oladigan insonlarni juda hurmat qilaman. Aynan shu fazilat kichik mutaxassis sifatida sizga foydali bo'ladi - ochiq odamga qarshi turish qiyin, ayniqsa u o'rganayotganini va xato qilish huquqiga ega ekanligini tan olganida. Kechikmang Bu sinov davrimi yoki shunchaki juma kunimi, farqi yo'q, bunda hamma ball to'playdi va 11 ga keladi. Yana bir narsa muhim: punktuallik bu o'z-o'zidan qo'shimcha ball oladigan mutaxassisning xususiyati. Va tajribasiz odam uchun qo'shimcha ball zarar qilmaydi, to'g'rimi? Kechikmaslikka harakat qiling va 8 soat ishlagandan keyin ishni halol qoldiring. Hisob-kitoblarni suiiste'mol qilmang Afsuski, bu men o'tmishda bir marta o'zimni qo'lga kiritgan juda keng tarqalgan rasm. Ishlab chiquvchi vazifani bajarish uchun o'ziga 8-16 soat vaqt ajratdi va kutilmaganda uni 3-4 soat ichida yakunladi. Qolgan soatlarni u men bilan bo'lgani kabi stol tennisi yoki youtube va boshqa o'yin-kulgilarni tomosha qilish shaklida shaxsiy vaqtini o'tkazadi. Huquqiy nuqtai nazardan, ular rozi bo'lgandek tuyuladi, lekin insoniy nuqtai nazardan, siz o'zingizni juda muhim narsalardan mahrum qilasiz: 1. Siz ortiqcha vaqtni keraksiz narsalar bilan to'ldirganingiz uchun bir joyda turibsiz; 2. Rivojlanmaysiz, chunki siz o'zingizning tezkor taraqqiyotingiz haqida rahbariyatga xabar bermaysiz, vazifalarni kutilganidan tezroq bajarayotganingizni hech kim bilmaydi; 3. Qadriyatlar uchun o'rtacha vaqt miqdorini doimiy ravishda oshirib ko'rishni boshlaysiz, bu shunchaki hech qaerga yo'l. O'rganish uchun vaqt ajrating Dvigatelning orqasida qolib ketish ehtimoli juda yuqori, shuning uchun texnologiya va yangi versiyalar juda tez rivojlanayotganini yodda tuting. Bizning kunimizning Java xushxabarchilariga obuna bo'ling, Java dayjestlarini o'qing va umuman qiziqing, yangi narsalarni o'rganing. Bu sizning brendingizni saqlash va rivojlantirishga yordam beradi. Boshqalarga yordam bering Boshqalarga yordam berishdan qo'rqmang, garchi ular siz kabi yashil bo'lsa ham. Birinchidan, siz o'z bilimingizni ancha mustahkamlaysiz, ikkinchidan, siz boshqalarning ko'zida hurmatga sazovor bo'lasiz va ular sizga bir vaqtning o'zida yordam berishadi. Bunday muhitda eng yaxshi jamoalar tug'iladi, shuningdek, juda tez texnik va shaxsiy o'sish. Sport bilan shug'ullaning. Xobbi bilan shug'ullaning Yo'q jiddiy. Sport bilan shug'ullanadigan odamlar nafaqat ko'rinishi va o'zini yaxshi his qiladilar, balki ularning miya faoliyati ham yuqori darajada! Skolioz, belning pastki qismi, ortiqcha vazn, ichki organlar bilan bog'liq turli muammolar - kompyuterda kechayu-kunduz yig'ilishlar, hatto ishdan tashqarida ham bunga hissa qo'shadi. Agar siz sport bilan shug'ullana olmasangiz (bu men bunga shubha qilaman), kichik layfxiklardan foydalaning: vaqti-vaqti bilan tik turib ishlang, ikki bekatdan erta qoldiring va ishga piyoda yetib boring. Ha, ko'proq yuring. Agar dasturlash haftasiga 40 soatdan ko'proq vaqtni olsa, charchash xavfi ham mavjud. Shaxsiy sevimli mashg'ulotlar yordamga keladi - masalan, fotografiya, musiqa va boshqalar. Ma'naviyatga muntazam vaqt ajrating. Shaxsiy hayotingizda muvozanat Qiz do'sti/xotini: "noutbuk yoki men" desa, dasturlash hayotingizda qanday o'rin tutishi haqida jiddiy o'ylab ko'rishingiz kerak. Boshqa tomondan, IT bo'yicha sayohatingizni boshlaganingizda, siz o'z hamkasbingizga ko'proq narsaga erishish uchun ko'p o'rganishingiz kerakligini aniq tushuntirishingiz kerak. Umid qilamanki, ular tushunishadi. Xo'sh, siz vaqtingizni muvozanatlash va to'g'ri taqsimlashga harakat qilasiz. tashqariga chiqish Tashabbuskor bo'ling, agar siz, masalan, bilim almashishingiz yoki qiziqarli mavzularga ega ekanligingizni his qilsangiz, nega boshqalar uchun kompaniya ichida kichik kurslarni tashkil qilmaysiz? Qanday yordam berishni bilsangiz, katta ochiq manba loyihalariga hissa qo'shishdan qo'rqmang. Agar siz o'yin, ijtimoiy loyiha yoki boshqa g'oya yozmoqchi bo'lsangiz - buni qiling, qiling, qiling! Bir joyda turmang, har doim rivojlanish yo'llarini qidiring. Raqobatbardosh bo'ling Yangi tendentsiyalarni kuzatib boring, Java hamjamiyatida sodir bo'layotgan tendentsiyalardan xabardor bo'ling. Masalan, vaqti-vaqti bilan, vaqti-vaqti bilan DOU-da Java bo'sh ish o'rinlarini kuzatib tursangiz, ishdan qochish uchun emas, balki qaysi texnologiyalar dolzarbligini va bozordan asta-sekin yo'qolib borayotganini bilish uchun ortiqcha bo'lmaydi. . Shuningdek, Coursera, Udacity va boshqalar bo'yicha kurslarni olishga harakat qiling, yangi ufqlarni o'rganing. Va hatto ingliz tilida: suhbatlashish qobiliyatingizni yaxshilash uchun sevimli filmlaringizni / teleko'rsatuvlaringizni asl nusxada subtitrlar bilan tomosha qilishga harakat qiling, tilni o'rganish uchun bir nechta qiziqarli dasturlarni yuklab oling (masalan, LinguaLeo) va oxirida kurslarga boring. .

    Xulosa

    Xo'sh, mening kichik DOU loyiham nihoyasiga yetmoqda. Hurmatli do'stlar, sizga chin dildan ishga kirishingizni tilayman va umid qilamanki, men ushbu 7 ta maqolada aytib o'tganlarim siz uchun, hatto Java dasturchisi sifatida ishlayotganlar uchun ham qimmatli qo'llanma bo'ladi. Bo'lajak o'smirlar, esda tutingki, imkonsiz narsa yo'q va agar siz haqiqatan ham turtki bo'lsangiz, albatta muvaffaqiyatga erishasiz. Nihoyat, bu sizniki yoki yo'qligini hal qilishingizni, batafsil mashg'ulot rejasini ishlab chiqishingizni va unga sovuqqonlik bilan amal qilishingizni xohlayman. Buning evaziga jim bo'lsangiz, xafa bo'lmang - bularning barchasi vaqtinchalik, asosiysi ishonish va hech qanday holatda adashmang, balki o'qing, o'qing va yana o'rganing. DOU jamoasiga katta hajmdagi materiallarni tahrir qilgani va dushanba kunlari menga vaqt ajratgani uchun chuqur minnatdorchiligimni bildirmoqchiman. DOU - bu Ukraina IT-odamlari uchun shunchaki sayt bo'lishni to'xtatgan ajoyib jamoa. Maqolalarimni diagonal bo‘ylab o‘qib, iboralarni kontekstdan chiqarib tashlagan barcha sharhlovchilarga ham rahmat aytmoqchiman. Sizsiz maqolalar unchalik qiziq ko'rinmasdi :) Kuch siz bilan bo'lsin!

    Java Core so'zini birinchi marta eshitganlar uchun bu tilning asosiy asoslari. Ushbu bilim bilan siz allaqachon xavfsiz amaliyot / stajirovkaga o'tishingiz mumkin. Bu savollar intervyu oldidan bilimingizni yangilashga yoki o'zingiz uchun yangi narsalarni o'rganishingizga yordam beradi. Amaliy ko'nikmalar uchun, o'rganing.

      Java'da o'zgarmas ob'ektni qanday yaratish mumkin? Barcha imtiyozlarni sanab o'ting

      O'zgarmas sinf - bu yaratilganidan keyin holatini o'zgartirib bo'lmaydigan sinf. Bu erda ob'ektning holati ibtidoiy yoki mos yozuvlar turlari bo'ladimi, sinf misolida saqlanadigan qiymatlardir.

      Sinfni o'zgarmas qilish uchun quyidagi shartlar bajarilishi kerak:

      1. Maydonlarni yoki maydonlarga tegishli ob'ektlarni o'zgartiruvchi sozlagichlar yoki usullarni taqdim qilmang. Sozlagichlar ob'ektning holatini o'zgartirishni nazarda tutadi, biz bu erda oldini olishni xohlaymiz.
      2. Barcha maydonlarni yakuniy va maxfiy qiling. Shaxsiy deb belgilangan maydonlarga sinfdan tashqarida kirish imkoni bo'lmaydi va ularni yakuniy belgilash ularni hatto tasodifan o'zgartirmaslikni ta'minlaydi.
      3. Pastki sinflarga usullarni bekor qilishga ruxsat bermang. Buning eng oson yo'li sinfni yakuniy deb e'lon qilishdir. Java-da yakunlangan sinflarni bekor qilib bo'lmaydi.
      4. Har doim esda tutingki, o'zgaruvchan misollaringiz o'zgaruvchan yoki o'zgarmas bo'lishi mumkin. Ularni aniqlang va barcha o'zgaruvchan ob'ektlar (mos yozuvlar turlari) uchun ko'chirilgan tarkibga ega yangi ob'ektlarni qaytaring. O'zgarmas o'zgaruvchilar (ibtidoiy turlar) qo'shimcha harakatlarsiz xavfsiz tarzda qaytarilishi mumkin.

      Bundan tashqari, siz o'zgarmas sinflarning keyingi afzalliklarini yodda tutishingiz kerak. Ular sizga intervyu uchun kerak bo'lishi mumkin. O'zgarmas sinflar:

      • dizayn, sinov va foydalanish uchun qulay
      • avtomatik ravishda ip xavfsiz va sinxronlash bilan bog'liq muammolar yo'q
      • nusxa ko'chirish konstruktorini talab qilmaydi
      • heshkodni "dangasa ishga tushirish" va qaytariladigan qiymatni keshlash imkonini beradi
      • maydon sifatida foydalanilganda xavfsiz nusxani talab qilmaydi
      • Xarita tugmachalarini va sozlash elementlarini yaxshi yarating (bu ob'ektlar to'plamda bo'lganda holatini o'zgartirmasligi kerak)
      • sinfini bir marta yaratish orqali doimiy qiling va uni qayta tekshirish shart emas
      • har doim "muvaffaqiyatsiz atomiklik" mavjud, bu atama Joshua Bloch tomonidan ishlab chiqilgan: agar o'zgarmas ob'ekt istisno qilsa, u hech qachon istalmagan yoki aniqlanmagan holatda qolmaydi.

      Ushbu postda yozilgan misolga qarang.

      Java spetsifikatsiyasi Java-dagi hamma narsa qiymat bo'yicha uzatilishini bildiradi. Java'da "ma'lumotnoma orqali o'tish" degan narsa yo'q. Bu shartlar usullarni chaqirish va o'zgaruvchilarni usul parametrlari sifatida o'tkazish bilan bog'liq. Xo'sh, ibtidoiy turlar har doim hech qanday chalkashliksiz qiymat bo'yicha o'tkaziladi. Biroq, kontseptsiyani murakkab turlarning usul parametri kontekstida tushunish kerak.


      Yuqoridagi misolda, birinchi instansiyaning manzil bitlari boshqa mos yozuvlar o'zgaruvchisiga ko'chiriladi, bu ikkala havola ham ob'ekt saqlanadigan bir xil xotira joyiga ishora qiladi. Esda tutingki, ikkinchi havolaga null belgilash orqali siz birinchi havolaga null belgilamaysiz. Ammo bitta havola qilingan o'zgaruvchiga ega bo'lgan ob'ekt holatining o'zgarishi boshqa havolada ham aks etadi.

      Finally blokidan qanday foydalanish kerak? Ushbu blok o'z kodining bajarilishini kafolatlaydimi? Qachon final bloki chaqirilmaydi?

      Agar try bloki mavjud bo'lsa finally bloki har doim chaqiriladi. Bu kutilmagan istisno sodir bo'lganda ham finally blokining chaqirilishini ta'minlaydi. Biroq, nihoyat, istisnolarni ko'rib chiqishdan ko'ra foydaliroqdir - bu blok tasodifan qaytish, davom ettirish yoki buzishni chetlab o'tgan kodni tozalash imkonini beradi. Tozalash kodini finally blokiga joylashtirish har doim yaxshi amaliyotdir, hatto istisnolar kutilmasa ham.

      Agar try or catch bloki bajarilayotganda virtual mashina chiqsa, finally bloki bajarilmaydi. Xuddi shunday, agar sinash yoki catch blokini bajarishda ip uzilib qolsa yoki o'chirilgan bo'lsa, finally bloki dastur hali ham ishlayotgan bo'lsa ham bajarilmaydi.

      Nima uchun ikkita Date sinfi mavjud, biri java.util paketida, ikkinchisi java.sql da?

      java.util.Date sana va vaqtni, java.sql.Sana esa faqat sanani bildiradi. Java.sql.Date ning to'ldiruvchisi java.sql.Time klassi bo'lib, u faqat vaqtni ifodalaydi.

      Java.sql.Date klassi java.util.Date sinfining kichik sinfi (kengaytmasi) hisoblanadi. Shunday qilib, java.sql.Date da nima o'zgardi:

      • toString() boshqa satr tasvirini ishlab chiqaradi: yyyy-aa-dd
      • statik usul valueOf(String) yuqoridagi tasvirga ega satrdan sana yaratadi
      • soatlar, daqiqalar va soniyalar uchun qabul qiluvchilar va o'rnatuvchilar bundan mustasno

      Java.sql.Date klassi JDBC da qo'llaniladi va vaqt komponentiga ega bo'lmaslik uchun mo'ljallangan, ya'ni soatlar, daqiqalar, soniyalar va millisekundlar nolga teng bo'lishi kerak... lekin bu sinf tomonidan talab qilinmaydi.

      Marker interfeyslarini tushuntiring.

      Marker interfeysi namunasi - bu dasturlash tillari tomonidan qo'llaniladigan kompyuter fanining dizayn namunasidir ish vaqtida ob'ektlar haqida ma'lumot berish. Bu tilda bunday metamaʼlumotlar uchun aniq qoʻllab-quvvatlanmasa, sinf metamaʼlumotlarini bogʻlash usulini taqdim etadi. Java buning uchun usullarni ko'rsatmasdan interfeyslardan foydalanadi.

      Java-da marker interfeysidan foydalanishning yaxshi namunasi - Serializable interfeysi. Sinf ushbu interfeysni uning vaqtinchalik bo'lmagan ma'lumotlarini bayt oqimiga yoki fayl tizimiga yozish mumkinligini ko'rsatish uchun amalga oshiradi.

      Asosiy muammo Marker interfeysi - bu interfeys uni amalga oshiradigan sinflar uchun konventsiyani belgilaydi va bu konventsiya barcha kichik sinflar tomonidan meros qilib olinadi. Bu shuni anglatadiki, siz tokenni "realizatsiya qila olmaysiz". Yuqoridagi misolda, agar siz seriyali bo'lishni istamaydigan kichik sinf yaratsangiz (ehtimol, u vaqtinchalik holatda bo'lgani uchun), siz NotSerializableException ni aniq tashlashga murojaat qilishingiz kerak.

      Nima uchun main() usuli umumiy statik bekor deb e'lon qilingan?

      Nima uchun ommaviy? Asosiy usulda ommaviy kirish modifikatori mavjud, shuning uchun unga hamma joyda va dasturni ishga tushirish uchun ushbu usuldan foydalanmoqchi bo'lgan har qanday ob'ektga kirish mumkin. Bu erda men JDK/JRE ning shunga o'xshash sababi borligini aytmayapman, chunki java.exe yoki javaw.exe (Windows uchun) usulni ishga tushirish uchun Java Native Interface (JNI) chaqiruvidan foydalanadi, shuning uchun ular kirish modifikatoridan qat'i nazar, baribir uni chaqirishlari mumkin. .

      Nima uchun statik? Faraz qilaylik, bizning asosiy usulimiz statik emas. Endi har qanday usulni chaqirish uchun sizga sinfning namunasi kerak bo'ladi. To'g'rimi? Java sizga haddan tashqari yuklangan konstruktorlarga ega bo'lishga imkon beradi, buni hammamiz bilamiz. Keyin qaysi birini ishlatish kerak va ortiqcha yuklangan konstruktor parametrlari qayerdan keladi?

      Nega bekor? Ushbu usulni aslida chaqiradigan virtual mashinada qaytarish qiymatidan foydalanish mumkin emas. Ilova qo'ng'iroq qilish jarayoniga aytmoqchi bo'lgan yagona narsa - bu normal yoki g'ayritabiiy tugatish. Bu allaqachon System.exit(int) yordamida mumkin. Nolga teng bo'lmagan qiymat g'ayritabiiy tugatishni nazarda tutadi, aks holda hamma narsa yaxshi.

      Satrni new() va literal (ikkita tirnoq yordamida) sifatida yaratish o'rtasidagi farq nima?

      Biz new() yordamida satr yaratganimizda, u to'pda yaratiladi va shuningdek, satrlar hovuziga qo'shiladi, literal bilan yaratilgan satr esa faqat string hovuzida yaratiladi.

      Ushbu yoki shunga o'xshash savollarga javob berish uchun string hovuz tushunchasi haqida ko'proq ma'lumotga ega bo'lishingiz kerak. Mening maslahatim: String sinfini va string hovuzini yaxshi o'rganish.

      String sinfining substring() usuli qanday ishlaydi?

      Boshqa dasturlash tillari singari, Java tilidagi satrlar ham belgilar ketma-ketligidir. Bu sinf ko'proq ushbu ketma-ketlik bilan ishlash uchun yordamchi sinfga o'xshaydi. Belgilar ketma-ketligi quyidagi o'zgaruvchi tomonidan taqdim etiladi:

      /** Qiymat belgilarni saqlash uchun ishlatiladi. */ /** Qiymat belgilarni saqlash uchun ishlatiladi */ xususiy yakuniy char qiymati; Turli stsenariylarda ushbu massivga kirish uchun quyidagi o'zgaruvchilardan foydalaniladi /** Ofset - bu foydalaniladigan saqlashning birinchi indeksidir. */ /** Ofset foydalanish uchun saqlashning birinchi indeksidir. */ xususiy yakuniy int ofset; /** Hisob - bu Stringdagi belgilar soni. */ /** Hisob - bu satrdagi belgilar soni. */ xususiy yakuniy int soni;

      Har safar biz mavjud satr misolidan pastki satr yaratganimizda, substring() usuli faqat ofset va o'zgaruvchilarni yangi qiymatlarga o'rnatadi. Ichki belgilar qatori o'zgartirilmagan. Agar substring() usuli beparvo ishlatilsa, bu xotira oqishining mumkin bo'lgan manbasi:

      Qiymatning asl qiymati o'zgartirilmaydi. Shunday qilib, agar siz 10000 ta belgidan iborat qator yaratsangiz va har biri 5-10 ta belgidan iborat 100 ta pastki qator yaratsangiz, barcha 101 ta ob'ekt 10000 ta belgidan iborat bir xil belgilar qatorini o'z ichiga oladi. Bu, shubhasiz, xotirani behuda sarflashdir.

      Buni kodni quyidagi kabi o'zgartirish orqali oldini olish mumkin:

      original.substring(beginIndex) ni yangi String(original.substring(beginIndex)) bilan almashtiring, bu yerda asl satr asl.

      HashMap qanday ishlashini tushuntiring. Dublikatlar muammosi qanday hal qilinadi?

      Ko'pchiligingiz HashMap hozirda eng sevimli suhbat mavzusi ekanligiga rozi bo'lasiz. Agar kimdir mendan "HashMap qanday ishlaydi?" Deb so'rasa, men shunchaki javob beraman: "Xeshlash printsipi bo'yicha". Qanchalik oddiy bo'lsa.

      Shunday qilib, xeshlash, aslida, har qanday formula/algoritmni uning xususiyatlariga qo'llaganidan so'ng, har qanday o'zgaruvchi/ob'ektga noyob kodni belgilash usulidir.

      Xaritaning ta'rifi: "Kalitlarni qiymatlarga bog'laydigan ob'ekt". Juda oddiy, to'g'rimi? Shunday qilib, HashMap o'zining ichki sinfini o'z ichiga oladi Entry , u quyidagicha ko'rinadi:

      statik sinf Kirish ilovalari Map . Kirish(Yakuniy K tugmasi; V qiymati; Keyingi kirish; yakuniy int xesh; …//Qo'shimcha kod shu yerda)

      Kimdir HashMap ga kalit-qiymat juftligini qo'yishga harakat qilganda, quyidagilar sodir bo'ladi:

      • Avvalo, kalit ob'ekt null ga qarshi tekshiriladi. Agar kalit null bo'lsa, qiymat pozitsiyalar jadvalida saqlanadi. Chunki null uchun xeshkod har doim 0 ga teng.
      • Keyin, keyingi qadam, kalit o'zgaruvchida hashCode() usulini chaqirish orqali xesh qiymatini hisoblashdir. Ushbu xesh Entry obyektini ushlab turish uchun massivdagi indeksni hisoblash uchun ishlatiladi. JDK ishlab chiquvchilari hashCode() usuli yomon yozilishi va juda katta yoki juda kichik qiymat qaytarishi mumkinligini yaxshi bilishardi. Ushbu muammoni hal qilish uchun ular boshqa hash() usulini joriy qildilar va ushbu qiymatni massiv indeksining o'lcham oralig'iga o'tkazish uchun ob'ektning xeshkodini ushbu usulga o'tkazdilar.
      • Entry ob'ektini saqlash uchun aniq pozitsiyani hisoblash uchun indexFor(hash, table.length) usuli chaqiriladi.
      • Endi asosiy qism. Ikki xil ob'ekt bir xil xeshkod qiymatiga ega bo'lishi mumkinligini bilganimizdek, qanday qilib ikki xil ob'ekt arxivda bir xil joyda saqlanishi mumkin [axlat qutisi deb ataladi]?

      Javob LinkedList. Esingizda bo'lsa, Entry sinfida "keyingi" xususiyat mavjud. Bu xususiyat har doim zanjirdagi keyingi ob'ektga ishora qiladi. Ushbu xatti-harakatlar LinkedList ga juda o'xshaydi.

      Shunday qilib, xeshkodlar mos kelsa, Entry ob'ektlari LinkedList shaklida saqlanadi. Yozuvni ma'lum bir indeksga joylashtirish kerak bo'lganda, HashMap o'sha joyda boshqa yozuv mavjudligini tekshiradimi? Agar u erda hech qanday yozuv bo'lmasa, bizning ob'ektimiz shu joyda saqlanadi.

      Agar indeksimizda boshqa ob'ekt mavjud bo'lsa, uning keyingi maydoni tekshiriladi. Agar u null bo'lsa, bizning ob'ektimiz LinkedList ning keyingi tuguniga aylanadi. Agar next null bo'lmasa, keyingi null maydon topilmaguncha bu protsedura takrorlanadi.

      Oldin qo'shganga teng boshqa kalit qiymatini qo'shsak nima bo'ladi? Eski qiymatni almashtirish mantiqan to'g'ri. Bu qanday sodir bo'ladi? Entry ob'ekti uchun pozitsiya indeksini aniqlagandan so'ng, indeksimizda joylashgan LinkedList bo'yicha takrorlash orqali HashMap har bir Entry ob'ekti uchun kalit qiymati bo'yicha equals() usulini chaqiradi. LinkedList-dagi ushbu Entry ob'ektlarining barchasi bir xil xeshkod qiymatiga ega, ammo equals() usuli haqiqiy tenglikni tekshiradi. Agar kalit. teng(k) iroda rost, keyin ikkalasi ham bir xil ob'ekt sifatida ko'rib chiqiladi. Bu faqat Entry ob'ektidagi qiymat ob'ektini almashtirishga olib keladi.

      Shunday qilib, HashMap kalitlarning o'ziga xosligini ta'minlaydi.

      Interfeyslar va mavhum sinflar o'rtasidagi farqlar?

      Agar siz kichik darajadagi dasturchi uchun suhbatlashayotgan bo'lsangiz, bu juda keng tarqalgan savol. Eng muhim farqlar quyida keltirilgan:

      • Java interfeyslarida o'zgaruvchilar a priori final hisoblanadi. Abstrakt sinflar yakuniy bo'lmagan o'zgaruvchilarni o'z ichiga olishi mumkin.
      • Java-dagi interfeys, albatta, amalga oshirilishi mumkin emas. Mavhum sinfda asosiy xatti-harakatni amalga oshiradigan usullarning misollari bo'lishi mumkin.
      • Interfeys a'zolari ommaviy bo'lishi kerak. Abstrakt sinf har qanday turdagi kirish modifikatorlariga ega bo'lishi mumkin.
      • Interfeys implements kalit so'zi bilan amalga oshirilishi kerak. Mavhum sinf kalit so'z bilan kengaytirilishi kerak uzaytiradi.
      • Java-da sinf ko'plab interfeyslarni amalga oshirishi mumkin, lekin faqat bitta mavhum sinfdan meros bo'lishi mumkin.
      • Interfeys butunlay mavhum va uni namuna qilib bo'lmaydi. Mavhum sinfda sinfning namunalari ham bo'lishi mumkin emas, lekin agar main() usuli mavjud bo'lsa, chaqirilishi mumkin.
      • Mavhum sinf interfeysdan biroz tezroq, chunki interfeys Java-da bekor qilingan har qanday usulni chaqirishdan oldin qidirishni kutadi. Ko'pgina hollarda, bu kichik farq, ammo agar siz vaqt talab qiladigan ariza yozayotgan bo'lsangiz, bu faktni ham hisobga olishingiz kerak.
    1. HashCode() va equals() usullarini qachon bekor qilasiz?

      hashCode() va equals() usullari barcha Java obyektlarining asosiy klassi bo'lgan Object sinfida aniqlanadi. Shu sababli, barcha Java ob'ektlari ushbu usullarning asosiy amalga oshirilishini meros qilib oladi.

      HashCode() usuli berilgan obyekt uchun yagona butun son qiymatini olish uchun ishlatiladi. Ushbu qiymat ob'ekt HashTable kabi ma'lumotlar tuzilmasida saqlanishi kerak bo'lganda savatning joylashishini aniqlash uchun ishlatiladi. Odatiy bo'lib, hashCode() usuli ob'ekt saqlanadigan xotira manzilining butun sonli ko'rinishini qaytaradi.

      Nomidan ko'rinib turibdiki, equals() usuli oddiy ob'ekt ekvivalentligi uchun ishlatiladi. Usulning asosiy amalga oshirilishi ikki ob'ektning mos yozuvlarini ularning ekvivalentligini tekshirishdir.

      E'tibor bering, har doim teng() usuli bekor qilinganda hashCode() usulini bekor qilish kerak bo'ladi. Bu hashCode usulining umumiy konventsiyasini qo'llab-quvvatlash uchun zarur bo'lib, unda teng ob'ektlar teng xeshkodlarga ega bo'lishi kerakligini ta'kidlaydi.

      equals() usuli munosabatning tengligini aniqlashi kerak (u rekursiv, simmetrik va tranzitiv bo'lishi kerak). Bundan tashqari, u doimiy bo'lishi kerak (agar ob'ekt o'zgarmagan bo'lsa, usul bir xil qiymatni qaytarishi kerak). Bundan tashqari, o.equals(null) har doim qaytishi kerak yolg'on.

      hashCode() ham barqaror bo'lishi kerak (agar ob'ekt equals() usuli shartlarida o'zgarmagan bo'lsa, u bir xil qiymatni qaytarishda davom etishi kerak.

      Ikki usul o'rtasidagi munosabat: har doim a.equals(b) bo'lsa, a.hashCode() b.hashCode() bilan bir xil bo'lishi kerak.

    O'qishlaringizga omad!! Maqola muallifi Lokesh Gupta Asl maqola Boshqa qismlarga havolalar: