Java intervyu savol-javoblari


ULASHISH

Java bo‘yicha intervyu savollari va javoblari

Bu sahifada qisqa javoblari bilan oddiy Java intervyu savollari berilgan. Savollar yangi boshlovchilar uchun tuzilgan, shuning uchun ulardan testlar va ish suhbatlariga tayyorlanishda foydalanishingiz mumkin.

  • Java tili asoslari (Core Java)
  • Obyektga yo‘naltirilgan dasturlash
  • Kolleksiyalar va generiklar
  • Istisnolar va xatolarni qayta ishlash
  • Ko‘p oqimlilik va parallellik (concurrency)
  • Java 8 va undan keyingi versiyalar imkoniyatlari
  • Amaliy dasturlash va nosozliklarni tuzatish

Java tili asoslari (Core Java)

1. Java tilida String nima?

Javob:

  • String matnni saqlash uchun ishlatiladi.
  • Misollar: "Hello", "Java".

2. == va equals() o‘rtasida qanday farq bor?

Javob:

  • == ikki qiymat aynan bitta obyektga tegishli ekanligini tekshiradi.
  • equals() ikki qiymat bir xil qiymatga ega ekanligini tekshiradi.
String a = new String("Java");
String b = new String("Java");

System.out.println(a == b);        // false, different objects
System.out.println(a.equals(b));   // true, same value

3. Java tilida main() metodining vazifasi nima?

Javob:

  • Dastur aynan shu yerdan ishga tushadi. Java kodni bajarishni boshlash uchun main() metodini qidiradi.
  • Metod quyidagi ko‘rinishda bo‘lishi kerak: public static void main(String[] args).
public class Main {
  public static void main(String[] args) {
    System.out.println("Hello World");
  }
}


4. Primitiv tiplar va o‘rovchi sinflar (wrapper classes) o‘rtasida qanday farq bor?

Javob:

  • Primitiv tiplar (masalan, int, double, boolean) oddiy qiymatlarni bevosita saqlaydi.
  • O‘rovchi sinflar (masalan, Integer, Double, Boolean) bu qiymatlarni obyektlar ichida saqlaydi.
  • O‘rovchi obyektlar ko‘pincha ArrayList kabi kolleksiyalar bilan ishlaganda qo‘llaniladi.

5. Java tilida o‘zgaruvchilar nima?

Javob:

  • O‘zgaruvchi — xotirada qiymatni saqlaydigan nom.
  • Java tilida o‘zgaruvchi nomidan oldin uning tipini yozishingiz shart.
int age = 35;
double price = 19.99;
String name = "Jenny";

6. Java tilida qanday ma’lumot tiplari bor?

Javob:

  • Primitiv tiplar oddiy qiymatlarni saqlaydi: byte, short, int, long, float, double, char, boolean.
  • Havola tiplari (reference types) obyektlarga ishora qiladi, masalan, String, massivlar va o‘zingiz yaratgan sinflar.

7. Java tilida shartli operatorlar (if/else) qanday ishlaydi?

Javob: Shartli operatorlar dasturingizga tekshiruv natijasi true yoki false bo‘lishiga qarab nima qilishni tanlash imkonini beradi.

int score = 85;

if (score >= 90) {
  System.out.println("Excellent");
} else if (score >= 75) {
  System.out.println("Good");
} else {
  System.out.println("Needs Improvement");
}

8. Java tilida sikl nima?

Javob:

  • Sikl bitta kod blokini bir necha marta takrorlaydi.
  • Java tilida for, while va do...while sikllari mavjud.
for (int i = 1; i <= 5; i++) {
  System.out.println("Count: " + i);
}

9. Java tilida tiplarni o‘zgartirish (type casting) nima?

Javob:

  • Kengaytiruvchi o‘zgartirish (widening casting) — kichikroq tipni kattaroq tipga o‘zgartirish (masalan, int dan long ga). Java buni avtomatik bajaradi.
  • Toraytiruvchi o‘zgartirish (narrowing casting) — kattaroq tipni kichikroq tipga o‘zgartirish (masalan, double dan int ga). Bunda tipni o‘zgartirishni o‘zingiz yozishingiz kerak.
double x = 9.7;
int y = (int) x;   // narrowing cast, y becomes 9

10. Java tilida final va const o‘rtasida qanday farq bor?

Javob:

  • final qiymat berilgandan keyin o‘zgartirib bo‘lmaydigan o‘zgaruvchi yaratish uchun ishlatiladi.
  • const Java tilida zaxiralangan so‘z, lekin undan foydalanilmaydi.
final int MAX_LIMIT = 100;
// MAX_LIMIT = 200;  // Error: you cannot change a final variable

Obyektga yo‘naltirilgan dasturlash

11. OOP’ning to‘rtta asosiy tamoyili qaysilar?

Javob:

  • Inkapsulyatsiya - ma’lumotlarni sinf ichida saqlash va ular bilan ishlash uchun metodlardan foydalanish.
  • Vorislik - bir sinf boshqa sinfdagi koddan qayta foydalana oladi.
  • Polimorfizm - bir xil nomli metod obyektga qarab turli amallarni bajarishi mumkin.
  • Abstraksiya - foydalanuvchiga faqat kerakli narsani ko‘rsatish, tafsilotlarni esa yashirish.

12. Abstrakt sinf va interfeys o‘rtasida qanday farq bor?

Javob:

  • Abstrakt sinf kodga ega oddiy metodlarga, kodsiz abstrakt metodlarga va maydonlarga ega bo‘lishi mumkin.
  • Interfeys asosan sinf amalga oshirishi (implement qilishi) kerak bo‘lgan metodlar ro‘yxatidir. Java 8 dan boshlab interfeyslarda kodga ega default va static metodlar ham bo‘lishi mumkin.

13. Metodni qayta yuklash (overloading) va metodni qayta aniqlash (overriding) o‘rtasida qanday farq bor?

Javob:

  • Qayta yuklash (overloading) - bitta sinfda nomi bir xil, lekin parametrlari turlicha bo‘lgan metodlar.
  • Qayta aniqlash (overriding) - voris sinf ota sinfdagi metodni o‘zining versiyasi bilan almashtiradi.
class Animal {
  void speak() {
    System.out.println("Animal sound");
  }
}

class Dog extends Animal {
  @Override
  void speak() {
    System.out.println("Woof");
  }

  void speak(String name) {
    System.out.println(name + " says Woof");
  }
}

Kolleksiyalar va generiklar

14. List, Set va Map o‘rtasida qanday farq bor?

Javob:

  • List - elementlarni tartib bilan saqlaydi va takroriy elementlarga ega bo‘lishi mumkin.
  • Set - takroriy elementlarga ruxsat bermaydi.
  • Map - kalit-qiymat juftliklarini saqlaydi. Har bir kalit noyob bo‘lib, bitta qiymatga ishora qiladi.

15. ArrayList va LinkedList o‘rtasida qanday farq bor?

Javob:

  • ArrayList ichkarida kengayadigan massivdan foydalanadi. U indeks bo‘yicha o‘qishda (masalan, list.get(0)) tez ishlaydi.
  • LinkedList bir-biriga bog‘langan tugunlardan (node) foydalanadi. Ro‘yxat o‘rtasiga element qo‘shish va u yerdan element o‘chirishda u tezroq bo‘lishi mumkin.

16. Java tilida generiklardan nima uchun foydalanamiz?

Javob: Generiklar kolleksiyaga qaysi tipdagi qiymatlarni saqlashi kerakligini ko‘rsatish imkonini beradi. Bu tip xatolarini kompilyatsiya vaqtidayoq aniqlashga yordam beradi va ko‘plab tip o‘zgartirishlarga (cast) ehtiyojni yo‘qotadi.


Istisnolar va xatolarni qayta ishlash

17. Tekshiriladigan (checked) va tekshirilmaydigan (unchecked) istisnolar o‘rtasida qanday farq bor?

Javob:

  • Tekshiriladigan istisnolar (checked exceptions) try/catch yordamida qayta ishlanishi yoki throws orqali e’lon qilinishi shart. Misol: IOException.
  • Tekshirilmaydigan istisnolar (unchecked exceptions) dastur ishlayotgan vaqtda yuz beradi va ularni e’lon qilish shart emas. Misol: NullPointerException.

18. finally blokining vazifasi nima?

Javob: finally bloki istisno yuz bergan yoki bermaganidan qat’i nazar, try bloki oxirida bajarilishi kerak bo‘lgan kod uchun ishlatiladi. U ko‘pincha fayllarni yopish yoki boshqa resurslarni bo‘shatish uchun qo‘llaniladi.


Ko‘p oqimlilik va parallellik (concurrency)

19. Java tilida oqim (thread) qanday yaratiladi?

Javob:

  • Thread sinfidan voris sinf yarating va run() metodini qayta aniqlang.
  • Yoki Runnable interfeysini amalga oshiring (implement) va obyektni Thread obyektiga uzating.

20. Oqimdagi start() va run() metodlari o‘rtasida qanday farq bor?

Javob:

  • run() oqim bajarishi kerak bo‘lgan kodni o‘z ichiga oladi.
  • start() JVM’ga yangi oqim yaratishni va so‘ng o‘sha yangi oqimda run() metodini chaqirishni buyuradi.
  • Agar run() metodini bevosita chaqirsangiz, kod yangi oqimda emas, joriy oqimda bajariladi.
class MyThread extends Thread {
  public void run() {
    System.out.println("Thread is running");
  }
}

public class Main {
  public static void main(String[] args) {
    MyThread t = new MyThread();

    t.start(); // starts a new thread
    t.run();   // just calls run like a normal method
  }
}

Java 8 va undan keyingi versiyalar

21. Lambda ifodasi nima?

Javob: Lambda ifodasi — metodni ifoda ko‘rinishida qisqa yozish usuli. U ko‘pincha metodlarga kichik kod parchalarini uzatish kerak bo‘lganda, masalan, oqimlar (streams) bilan ishlaganda ishlatiladi.


22. Java Stream API nima?

Javob: Stream API kolleksiyalar bilan oddiy usulda ishlash imkonini beradi. Ko‘plab sikllarni qo‘lda yozish o‘rniga ma’lumotlarni bosqichma-bosqich filtrlash, saralash va o‘zgartirish mumkin.


Amaliy dasturlash va nosozliklarni tuzatish

23. Debug xabarlarini chiqarishdan maqsad nima?

Javob:

  • Debug xabarlari dastur ishlayotgan paytda nima qilayotganini ko‘rsatadi.
  • Ular koddagi turli nuqtalarda o‘zgaruvchilarning qiymatlarini ko‘rishga yordam beradi.
  • Java tilida debug xabarlari ko‘pincha System.out.println() yordamida chiqariladi.
int total = 50;
System.out.println("Debug: total = " + total);

24. Sintaktik xato (syntax error) atamasi nimani anglatadi?

Javob:

  • Sintaktik xato kod Java tili qoidalariga amal qilmasligini bildiradi.
  • Kompilyator sintaktik xatolarni dastur ishga tushishidan oldin aniqlaydi.
  • Masalan, tushib qolgan nuqtali vergul yoki yopuvchi figurali qavsning yo‘qligi.
// Syntax error: missing semicolon
int x = 10

25. Bajarilish vaqtidagi xato (runtime error) nima?

Javob:

  • Bajarilish vaqtidagi xato dastur ishlayotgan paytda yuz beradi.
  • Kod kompilyatsiya qilinadi, lekin ishlash jarayonida nimadir noto‘g‘ri ketadi.
  • Misol: nolga bo‘lish yoki massiv chegarasidan tashqaridagi indeksdan foydalanish.
// Runtime error: division by zero
int x = 10 / 0;   // causes ArithmeticException

26. Resurslarni yopishning tavsiya etilgan usuli qanday?

Javob: Tavsiya etilgan usul — try-with-resources blokidan foydalanish. Shunda blok tugashi bilan Java resursni siz uchun avtomatik ravishda yopadi.

try (BufferedReader br = new BufferedReader(new FileReader("data.txt"))) {
  System.out.println(br.readLine());
} catch (IOException e) {
  e.printStackTrace();
}

W3Schools Pathfinder

Yutuqlaringizni kuzating – bu bepul!