Pytania rekrutacyjne Java

161 pytań — 20 odpowiedzi dostępnych od razu

Przed rozmową rekrutacyjną z Javą warto powtórzyć zarówno składnię języka, jak i mechanizmy, które wpływają na projektowanie oraz wydajność aplikacji. Ten darmowy podgląd prezentuje przykładowe pytania z puli 161 zagadnień.

Fiszki dotyczą podstaw Javy, programowania obiektowego, garbage collectora, kolekcji i obsługi wyjątków. To dobry sposób na rozpoczęcie powtórki przed rozmową na stanowisko Java developera.

Darmowy start

Pierwsze 20 odpowiedzi są dostępne od razu

Przeglądaj pełną listę 161 pytań. Pełne odpowiedzi, przykłady kodu i materiały do nauki odblokujesz w panelu.

Odblokuj 141 odpowiedzi

Podstawy języka Java

Jakie są główne różnice między JDK, JRE a JVM?

  • JDK (Java Development Kit) zawiera kompilator (javac), debugger i inne narzędzia służące do tworzenia, kompilowania oraz uruchamiania programów w Javie.
  • JRE (Java Runtime Environment) to środowisko uruchomieniowe, w którego skład wchodzi JVM i biblioteki potrzebne do działania aplikacji, ale nie zawiera kompilatora.
  • JVM (Java Virtual Machine) to maszyna wirtualna odpowiedzialna za interpretację (lub kompilację JIT) kodu bajtowego (bytecode) na instrukcje zrozumiałe dla danej platformy.

Więcej informacji:

Dlaczego Java jest uznawana za język niezależny od platformy?

Dzięki kompilacji do kodu bajtowego (bytecode), który jest uruchamiany na maszynie wirtualnej JVM. Każda platforma (Windows, Linux, macOS) ma własną implementację JVM, co pozwala na uruchomienie tego samego bajtowego kodu niezależnie od systemu operacyjnego. Więcej informacji:

W jaki sposób definiuje się metodę main w klasie Java i dlaczego jest ona ważna?

Domyślny punkt startowy każdej aplikacji w Javie to metoda:

public static void main(String[] args) {
    // kod aplikacji
}
  • public – dostępna z każdego miejsca
  • static – można ją wywołać bez tworzenia instancji klasy
  • void – nie zwraca żadnej wartości
  • String[] args – tablica argumentów przekazanych w wierszu poleceń

Jest ważna, ponieważ środowisko uruchomieniowe (JVM) właśnie tę metodę traktuje jako punkt wejściowy aplikacji. Więcej informacji:

Jaka jest różnica między typami liczbowymi byte, short, int i long?

  • byte (8 bitów) – zakres od -128 do 127
  • short (16 bitów) – zakres od -32768 do 32767
  • int (32 bity) – podstawowy typ całkowity; zakres od ok. -2 mld do 2 mld
  • long (64 bity) – rozszerzony zakres liczb całkowitych

Wybór typu zależy od potrzeb dotyczących zakresu liczbowego i zapotrzebowania na pamięć. Więcej informacji:

Jakie są domyślne wartości typów prymitywnych w Javie?

Poniższe wartości obowiązują dla pól klas (tzw. pól instancji) i pól statycznych. Dla zmiennych lokalnych w metodach Java wymaga jawnej inicjalizacji, więc nie mają one automatycznych wartości.

  • byte = 0
  • short = 0
  • int = 0
  • long = 0L
  • float = 0.0f
  • double = 0.0d
  • char = '\u0000' (znak o kodzie 0)
  • boolean = false

Więcej informacji:

Czym różni się operator „==” od metody equals() podczas porównywania obiektów i typów prymitywnych?

  • == – dalekie od obiektów służy do porównywania wartości prymitywnej (np. int, char); w przypadku obiektów sprawdza, czy obiekty stanowią ten sam odnośnik w pamięci (to samo miejsce w pamięci).
  • equals() – metoda dziedziczona z klasy Object (często przesłaniana w konkretnych klasach), służy do porównywania zawartości obiektów (np. dwa Stringi o takiej samej wartości znakowej).

Więcej informacji:

W jaki sposób konwertuje się łańcuch znaków (String) na liczbę całkowitą (int) oraz int na String?

  • String → int:
  int number = Integer.parseInt("123");

lub

  int number = Integer.valueOf("123");
  • int → String:
  String text = String.valueOf(123);

lub

  String text = Integer.toString(123);

Więcej informacji:

Do czego służy pakiet w Javie i jak importować klasy z tego pakietu?

Pakiet (package) to logiczna grupa powiązanych klas, interfejsów i innych typów. Służy do uporządkowania kodu i unikania konfliktów nazw. Deklaruje się go na początku pliku, np. package com.example;. Importowanie klas z innego pakietu odbywa się przy użyciu dyrektywy import, np.:

import java.util.List;

lub ze wszystkimi klasami pakietu

import java.util.*;

(choć dobre praktyki zalecają importować tylko niezbędne klasy). Więcej informacji:

Jakie jest zastosowanie słowa kluczowego „final” w Javie?

  • final przy zmiennej – wartość nie może być zmieniona po inicjalizacji (stała).
  • final przy metodzie – metoda nie może zostać przesłonięta (overriden) w klasach potomnych.
  • final przy klasie – klasa nie może zostać rozszerzona (dziedziczenie jest niemożliwe).

Więcej informacji:

Jak Java alokuje pamięć dla typów prymitywnych i referencyjnych?

  • Typy prymitywne (np. int, char) są zazwyczaj przechowywane na stosie (stack) w ramach kontekstu wykonywanego wątku.
  • Obiekty (typy referencyjne) są tworzone na stercie (heap), a zmienna, która wskazuje na obiekt, przechowywana jest na stosie jako referencja.
  • Zarządzanie pamięcią na stercie odbywa się przez Garbage Collector.

Więcej informacji:

Dodatkowe sugestie lektur i materiałów

  • Książka: Cay S. Horstmann, Gary Cornell – „Core Java Volume I–Fundamentals”
  • Książka: Herbert Schildt – „Java. Kompendium programisty”

Programowanie obiektowe w Javie

Co oznacza, że Java jest językiem obiektowym?

Java jest językiem obiektowym, co oznacza, że programowanie w Javie opiera się na koncepcji obiektów oraz klas. Każdy element programu jest reprezentowany jako obiekt, który posiada atrybuty (dane) i metody (zachowania). Programowanie obiektowe w Javie umożliwia modelowanie rzeczywistych bytów, wspiera wielokrotne wykorzystanie kodu, modularność oraz ułatwia zarządzanie złożonymi systemami poprzez enkapsulację, dziedziczenie i polimorfizm. Więcej informacji:

Jakie są cztery główne filary OOP i w jaki sposób są one zaimplementowane w Javie?

Cztery główne filary Programowania Obiektowego (OOP) to:

  1. Enkapsulacja (Encapsulation): Ukrywanie wewnętrznego stanu obiektu i udostępnianie go tylko poprzez publiczne metody. W Javie realizowana przez używanie modyfikatorów dostępu (private, public, protected) oraz metod getter/setter.
  2. Dziedziczenie (Inheritance): Mechanizm umożliwiający tworzenie nowych klas na podstawie istniejących, dziedzicząc ich właściwości i zachowania. W Javie osiągane poprzez słowa kluczowe extends i implements.
  3. Polimorfizm (Polymorphism): Możliwość traktowania obiektów różnych klas w sposób jednolity poprzez wspólny interfejs lub klasę bazową. W Javie realizowany przez przeciążanie (overloading) i przesłanianie (overriding) metod oraz wykorzystanie klasy Object.
  4. Abstrakcja (Abstraction): Ukazywanie tylko niezbędnych cech obiektu, ukrywając złożoność. W Javie osiągana poprzez definiowanie klas abstrakcyjnych i interfejsów.

Więcej informacji:

Jak osiągnąć enkapsulację w Javie?

Enkapsulację w Javie osiąga się poprzez:

  • Definiowanie pól klasy jako private: Zapewnia to, że dane wewnętrzne obiektu nie są bezpośrednio dostępne z zewnątrz.
  public class Person {
      private String name;
      private int age;
      // ...
  }
  • Udostępnianie publicznych metod getter i setter: Pozwala to na kontrolowany dostęp do prywatnych pól.
  public String getName() {
      return name;
  }

  public void setName(String name) {
      this.name = name;
  }
  • Zastosowanie modyfikatorów dostępu: Umożliwia precyzyjne określenie, które części kodu mogą mieć dostęp do poszczególnych elementów klasy. Enkapsulacja chroni integralność danych, umożliwiając ich modyfikację tylko poprzez zdefiniowane metody, co zapobiega niezamierzonym zmianom stanu obiektu. Więcej informacji:

Na czym polega dziedziczenie i jak je zaimplementować?

Dziedziczenie to mechanizm OOP pozwalający na tworzenie nowych klas na podstawie istniejących, dziedzicząc ich atrybuty i metody. Umożliwia to ponowne wykorzystanie kodu oraz tworzenie hierarchii klas. Implementacja dziedziczenia w Javie:

  • Klasa bazowa (superclass):
  public class Animal {
      private String name;

      public void eat() {
          System.out.println("Animal is eating");
      }

      // Getter i Setter
  }
  • Klasa pochodna (subclass):
  public class Dog extends Animal {
      public void bark() {
          System.out.println("Dog is barking");
      }
  }

W powyższym przykładzie klasa Dog dziedziczy po klasie Animal, co oznacza, że Dog ma dostęp do metod eat() oraz do pola name poprzez metody getter i setter. Kluczowe aspekty dziedziczenia:

  • Jednokrotne dziedziczenie: Java nie wspiera wielokrotnego dziedziczenia klas, ale umożliwia implementację wielu interfejsów.
  • Modyfikatory dostępu: Pola i metody z klasy bazowej z modyfikatorem private nie są bezpośrednio dostępne w klasie pochodnej.

Więcej informacji:

Czym jest polimorfizm oraz czym różni się przesłanianie metod od przeciążania metod?

Polimorfizm w OOP oznacza zdolność obiektów do przyjmowania wielu form. W Javie polimorfizm pozwala na traktowanie obiektów różnych klas w sposób zunifikowany poprzez wspólne interfejsy lub klasy bazowe. Rodzaje polimorfizmu w Javie:

  1. Polimorfizm kompilacyjny (przeciążanie metod):
    • Polega na definiowaniu wielu metod o tej samej nazwie, ale różniących się listą parametrów w obrębie tej samej klasy.
    • Rozstrzygany w czasie kompilacji.
   public class Calculator {
       public int add(int a, int b) {
           return a + b;
       }

       public double add(double a, double b) {
           return a + b;
       }
   }
  1. Polimorfizm dynamiczny (przesłanianie metod):
    • Polega na redefiniowaniu metod klasy bazowej w klasie pochodnej.
    • Rozstrzygany w czasie wykonywania.
   public class Animal {
       public void makeSound() {
           System.out.println("Some sound");
       }
   }

   public class Dog extends Animal {
       @Override
       public void makeSound() {
           System.out.println("Bark");
       }
   }

Różnice między przesłanianiem a przeciążaniem metod:

  • Przez przeciążanie:

    • Metody muszą mieć tę samą nazwę, ale różną listę parametrów.
    • Dotyczy jednej klasy.
    • Rozstrzygane w czasie kompilacji.
  • Przez przesłanianie:

    • Metody muszą mieć tę samą nazwę i listę parametrów.
    • Dotyczy klas powiązanych dziedziczeniem.
    • Rozstrzygane w czasie wykonywania.

Więcej informacji:

Jaką rolę pełnią słowa kluczowe „this” i „super”?

this i super to słowa kluczowe w Javie używane w kontekście klas i obiektów.

  • this:
    • Odnosi się do bieżącego obiektu klasy.
    • Używane do odróżnienia pól klasy od parametrów metody lub konstruktora.
    • Może być używane do wywoływania innych konstruktorów w tej samej klasie.
  public class Person {
      private String name;

      public Person(String name) {
          this.name = name; // 'this.name' odnosi się do pola klasy
      }

      public void setName(String name) {
          this.name = name;
      }
  }
  • Przykład wywołania konstruktora:
    public class Rectangle {
        private int width;
        private int height;

        public Rectangle() {
            this(0, 0); // Wywołuje inny konstruktor
        }

        public Rectangle(int width, int height) {
            this.width = width;
            this.height = height;
        }
    }
  • super:
    • Odnosi się do klasy bazowej obiektu.
    • Używane do:
      • Dostęp do metod lub pól klasy bazowej, które są przesłonięte w klasie pochodnej.
      • Wywoływania konstruktora klasy bazowej.
  public class Animal {
      public void eat() {
          System.out.println("Animal is eating");
      }
  }

  public class Dog extends Animal {
      @Override
      public void eat() {
          super.eat(); // Wywołuje metodę eat() z klasy bazowej
          System.out.println("Dog is eating");
      }
  }
  • Przykład wywołania konstruktora klasy bazowej:
    public class Vehicle {
        private String brand;

        public Vehicle(String brand) {
            this.brand = brand;
        }
    }

    public class Car extends Vehicle {
        private String model;

        public Car(String brand, String model) {
            super(brand); // Wywołuje konstruktor z klasy Vehicle
            this.model = model;
        }
    }

Więcej informacji:

W jaki sposób uniemożliwić dziedziczenie po danej klasie?

Aby uniemożliwić dziedziczenie po danej klasie w Javie, należy oznaczyć klasę jako final. Klasa oznaczona słowem kluczowym final nie może być rozszerzana przez żadną inną klasę, co zabezpiecza jej implementację przed modyfikacjami poprzez dziedziczenie. Przykład:

public final class Constants {
    public static final String APP_NAME = "MyApplication";

    // Inne stałe i metody
}

W powyższym przykładzie klasa Constants jest final, więc żadna inna klasa nie może dziedziczyć po niej:

public class ExtendedConstants extends Constants { // Błąd kompilacji
    // ...
}

Zastosowania klasy final:

  • Bezpieczeństwo: Zapobiega nadpisaniu metod i modyfikacji zachowania klasy.
  • Optymalizacja: Umożliwia kompilatorowi optymalizację wywołań metod.

Więcej informacji:

Jakie jest zastosowanie klas abstrakcyjnych i interfejsów? Kiedy ich używać?

Klasy abstrakcyjne i interfejsy w Javie służą do definiowania wspólnego zachowania dla różnych klas, ale różnią się w sposobie zastosowania i możliwościami.

Klasy abstrakcyjne:

  • Mogą zawierać zarówno metody abstrakcyjne (bez implementacji), jak i konkretne (z implementacją).
  • Mogą posiadać pola z modyfikatorami dostępu.
  • Służą jako klasa bazowa, z której dziedziczą klasy pochodne.
  • Pozwalają na dzielenie wspólnej implementacji między klasami.

Kiedy używać:

  • Gdy klasy pochodne mają wspólne cechy i zachowania, które można zaimplementować w klasie bazowej.
  • Kiedy chcemy częściowo zdefiniować klasę, ale pozostawić częściową implementację klasom pochodnym.

Przykład:

public abstract class Vehicle {
    private String brand;

    public Vehicle(String brand) {
        this.brand = brand;
    }

    public abstract void drive();

    public void displayBrand() {
        System.out.println("Brand: " + brand);
    }
}

Interfejsy:

  • Definiują tylko metody abstrakcyjne (do Javy 7) lub domyślne statyczne/metody domyślne (od Javy 8).
  • Nie mogą posiadać stanów (pól) z wyjątkiem stałych public static final.
  • Pozwalają na implementację wielu interfejsów przez jedną klasę, co wspiera wielokrotne dziedziczenie typu.
  • Służą do definiowania kontraktów, które klasy muszą spełniać.

Kiedy używać:

  • Gdy różne klasy muszą implementować ten sam zestaw metod, ale ich implementacja może być różna.
  • Gdy chcemy zapewnić elastyczność i możliwości wielokrotnego dziedziczenia typu.

Przykład:

public interface Drivable {
    void drive();
}

public class Car implements Drivable {
    @Override
    public void drive() {
        System.out.println("Car is driving");
    }
}

Podsumowanie różnic:

  • Klasy abstrakcyjne mogą zawierać implementację metod i stan, interfejsy głównie definiują metody bez implementacji (od Javy 8 można mieć metody domyślne).
  • Dziedziczenie: Klasa może rozszerzać tylko jedną klasę abstrakcyjną, ale implementować wiele interfejsów.

Więcej informacji:

Na czym polegają metody domyślne (default methods) w interfejsach w Javie?

Metody domyślne (ang. default methods) zostały wprowadzone w Javie 8 i pozwalają na definiowanie metod z implementacją bez konieczności tworzenia klas abstrakcyjnych. Dzięki nim interfejsy mogą zawierać nie tylko deklaracje metod, ale także ich konkretne implementacje. Cechy metod domyślnych:

  • Oznaczone słowem kluczowym default.
  • Pozwalają na dodawanie nowych metod do interfejsów bez łamania istniejących implementacji klas.
  • Klasy implementujące interfejs nie muszą implementować metod domyślnych, chyba że chcą je nadpisać.

Przykład:

public interface Drivable {
    void drive();

    default void startEngine() {
        System.out.println("Engine started");
    }
}

public class Car implements Drivable {
    @Override
    public void drive() {
        System.out.println("Car is driving");
    }

    // Opcjonalnie można nadpisać metodę domyślną
    @Override
    public void startEngine() {
        System.out.println("Car engine started");
    }
}

Zalety metod domyślnych:

  • Elastyczność: Umożliwiają rozbudowę interfejsów bez wpływania na istniejące klasy.
  • Wsteczna kompatybilność: Nie wymagają modyfikacji wszystkich klas implementujących interfejs po dodaniu nowej metody.

Ograniczenia:

  • Interfejsy mogą zawierać metody domyślne oraz statyczne, ale nie mogą posiadać pól instancji.
  • Nadpisanie metody domyślnej wymaga ręcznej implementacji w klasie implementującej.

Więcej informacji:

Czy możesz wyjaśnić różnicę między kompozycją a dziedziczeniem?

Dziedziczenie i kompozycja to dwa podstawowe mechanizmy relacji między klasami w OOP, jednak różnią się koncepcją i zastosowaniem.

Dziedziczenie (Inheritance):

  • Hierarchiczna relacja: Opisuje "jest" (is-a) relację, gdzie klasa pochodna jest specjalizacją klasy bazowej.
  • Reużywanie kodu: Klasa pochodna dziedziczy pola i metody klasy bazowej.
  • Ograniczenia: Java wspiera tylko pojedyncze dziedziczenie klas, co może prowadzić do problemów z elastycznością.

Przykład:

public class Animal {
    public void eat() {
        System.out.println("Animal eats");
    }
}

public class Dog extends Animal {
    public void bark() {
        System.out.println("Dog barks");
    }
}

Kompozycja (Composition):

  • Agregacyjna relacja: Opisuje "ma" (has-a) relację, gdzie klasa posiada referencje do innych obiektów jako część swojej struktury.
  • Elastyczność: Umożliwia dynamiczne komponowanie obiektów z różnych części bez silnego powiązania dziedziczeniowego.
  • Reużywanie kodu: Pozwala na używanie funkcjonalności innych klas poprzez delegację, bez konieczności dziedziczenia.

Przykład:

public class Engine {
    public void start() {
        System.out.println("Engine starts");
    }
}

public class Car {
    private Engine engine;

    public Car() {
        this.engine = new Engine();
    }

    public void startCar() {
        engine.start();
    }
}

Kluczowe różnice:

  • Relacja:

    • Dziedziczenie: "jest" (np. Dog jest Animal)
    • Kompozycja: "ma" (np. Car ma Engine)
  • Powiązanie:

    • Dziedziczenie: Silne, klasy są ściśle powiązane.
    • Kompozycja: Słabe, obiekty mogą być wymieniane lub zmieniane bez wpływu na klasę nadrzędną.
  • Elastyczność:

    • Dziedziczenie: Mniej elastyczne ze względu na pojedyncze dziedziczenie.
    • Kompozycja: Bardziej elastyczne, umożliwiające dynamiczne tworzenie obiektów.
  • Ponowne użycie kodu:

    • Dziedziczenie: Przez dziedziczenie wszystkich publicznych/protected członków klasy bazowej.
    • Kompozycja: Przez delegację wywołań metod do posiadanych obiektów.

Zalecenia:

  • Preferuj kompozycję nad dziedziczeniem: Kompozycja oferuje większą elastyczność i mniej problemów związanych z silnym powiązaniem między klasami.

Więcej informacji:

Dodatkowe sugestie lektur i materiałów:

  • Książka: Cay S. Horstmann, Gary Cornell – „Core Java Volume I–Fundamentals”
  • Książka: Herbert Schildt – „Java. Kompendium programisty”

Zarządzanie pamięcią i Garbage Collection w Javie

21. Jaka jest struktura obszarów pamięci w JVM?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
22. Na czym polega wewnętrzne działanie Garbage Collection w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
23. Czym różnią się referencje silne, słabe, miękkie i fantomowe?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
24. Jak wywołać Garbage Collection jawnie i czy jest to zalecane?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
25. Do czego służy metoda finalize() i dlaczego odchodzi się od jej użycia?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
26. Co się dzieje w sytuacji wystąpienia błędu OutOfMemoryError i jak go rozwiązywać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
27. Jak porównałbyś pracę kolektorów: Serial, Parallel, CMS i G1?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
28. Jak można wymusić częściowe (minor) i pełne (major) odśmiecanie pamięci?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
29. Co to jest obszar Eden i jaką rolę odgrywają przestrzenie Survivor?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
30. W jaki sposób dostosować aplikację, gdy zbyt częste pełne odśmiecanie pogarsza wydajność?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Kolekcje w Javie (Java Collections Framework)

31. Jakie są główne interfejsy frameworka kolekcji w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
32. Jaka jest różnica między List, Set i Map?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
33. Jakie właściwości ma ArrayList w porównaniu z LinkedList?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
34. W jaki sposób HashSet zapewnia unikalność elementów i jak wypada w porównaniu z TreeSet?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
35. Co się stanie, jeśli przesłonisz metodę equals() bez jednoczesnego przesłonięcia hashCode()?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
36. Jak HashMap przechowuje pary klucz-wartość i na czym polega kolizja hashy?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
37. Jakie są różnice między ConcurrentHashMap a HashMap?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
38. Kiedy warto użyć LinkedHashMap zamiast HashMap?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
39. Jak działa PriorityQueue i jakie interfejsy implementuje?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
40. Do czego służy klasa narzędziowa Collections i jak można za jej pomocą uzyskać kolekcje niemodyfikowalne lub zsynchronizowane?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Obsługa wyjątków (Exception Handling)

41. Na czym polega różnica między wyjątkami typu checked a unchecked w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
42. Jak działa blok „try-catch-finally” i w jakiej kolejności wykonywane są instrukcje?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
43. Jakie jest zastosowanie słowa kluczowego „throws” i czym różni się od „throw”?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
44. Jak utworzyć własny (niestandardowy) wyjątek w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
45. Jaki wyjątek jest wyrzucany w przypadku próby dostępu do elementu poza granicami tablicy?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
46. Czym różni się klasa Error od Exception w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
47. Czy możesz wytłumaczyć pojęcie „chained exception”?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
48. W jaki sposób obsłużyć wiele wyjątków w jednym bloku try-catch?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
49. Co to jest wyciek zasobów i jak instrukcja „try-with-resources” pomaga go uniknąć?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
50. W jaki sposób należy wykorzystywać wyjątki w metodach, które mogą się nie udać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Programowanie wielowątkowe i współbieżność (Multithreading and Concurrency)

51. Jak utworzyć wątek w Javie, korzystając z klasy Thread oraz interfejsu Runnable?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
52. Czym różni się programowanie współbieżne (concurrent) od równoległego (parallel)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
53. Jak działa słowo kluczowe synchronized i jakie są potencjalne wady korzystania z niego?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
54. Na czym polega koncepcja blokad (locks) i jak działa klasa ReentrantLock?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
55. Jaka jest różnica między volatile a zmiennymi typu atomic?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
56. Do czego służy framework Executor i w jaki sposób ułatwia zarządzanie wątkami?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
57. Jak korzystać z ThreadPoolExecutor oraz ScheduledThreadPoolExecutor?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
58. Jakie są różnice między metodami wait(), notify() oraz notifyAll()?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
59. Jakie typowe problemy mogą występować w programach współbieżnych (race conditions) i jak je rozwiązywać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
60. Jak korzystają z synchronizacji kolekcje równoległe (Concurrent Collections), np. ConcurrentLinkedQueue, w porównaniu ze standardowymi kolekcjami?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Java 8 i nowsze funkcje

61. Czym są wyrażenia Lambda i jak działają „pod spodem”?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
62. Czym jest interfejs funkcyjny i jakie przykłady występują w standardowej bibliotece?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
63. Jak różnią się strumienie (Stream API) od klasycznych kolekcji i jakie dają korzyści?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
64. Jaka jest różnica między operacjami pośrednimi a końcowymi w strumieniach?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
65. Jak zastosować strumienie równoległe (parallel streams) i na co uważać przy ich użyciu?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
66. Co to są referencje do metod (method references) i jak ich używać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
67. Do czego służy klasa Optional i jak pomaga w obsłudze null?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
68. Jak działają metody domyślne w interfejsach i dlaczego zostały wprowadzone?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
69. Jaki jest cel wprowadzenia pakietu java.time i w jaki sposób usprawnia on korzystanie z dat i czasu?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
70. Na czym polegają nowe wyrażenia switch w nowszych wersjach Javy?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Java I/O oraz NIO

71. Jak odczytywać i zapisywać pliki, korzystając z tradycyjnego I/O (pakiet java.io)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
72. Czym różni się strumień bajtów (byte stream) od strumienia znaków (character stream)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
73. Jaka jest różnica między FileInputStream a FileReader?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
74. Jakie główne zalety oferuje NIO (pakiet java.nio) w porównaniu z tradycyjnym I/O?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
75. Co to jest Buffer i jak działa w kontekście kanałów (Channels) w NIO?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
76. W jaki sposób wykorzystać FileChannel do operacji na plikach?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
77. Jakie są główne różnice między synchronicznymi a asynchronicznymi kanałami w NIO?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
78. W jaki sposób obsługiwane jest kodowanie znaków w operacjach I/O w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
79. Czym jest plik mapowany w pamięci (memory-mapped file) i kiedy się go stosuje?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
80. Na czym polega działanie WatchService z NIO.2 w kontekście monitorowania systemu plików?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

JDBC i dostęp do baz danych

81. Jak połączyć się z relacyjną bazą danych przy pomocy JDBC?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
82. Jakie kroki należy wykonać, aby wykonać zapytania za pomocą obiektów Statement lub PreparedStatement?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
83. Jaka jest różnica między Statement, PreparedStatement i CallableStatement?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
84. Jak obsługuje się transakcje w JDBC?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
85. Jak zarządzać pulą połączeń (connection pooling) w aplikacjach Javy?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
86. Jakie rodzaje sterowników JDBC są najpopularniejsze i jak wybrać odpowiedni?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
87. W jaki sposób obsługiwać wyjątki w JDBC i co oznaczają kody SQLState?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
88. Na czym polega batch processing w JDBC i jak z niego korzystać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
89. Na czym polega mechanizm ResultSet i jakie są jego różne tryby (np. TYPE_FORWARD_ONLY)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
90. Jakie są typowe problemy związane z obsługą dużych zbiorów danych w JDBC?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Spring Framework

91. Czym jest inwersja kontroli (IoC) i jak kontener Spring zarządza obiektami?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
92. Wyjaśnij, na czym polega wstrzykiwanie zależności (dependency injection) i jakie są jego rodzaje w Springu?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
93. Jak skonfigurować beany w pliku XML w porównaniu z konfiguracją za pomocą adnotacji?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
94. Jakie jest przeznaczenie adnotacji @Component, @Service, @Repository i @Controller?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
95. W jaki sposób zarządzać zasięgami (singleton, prototype, request, session) beanów w Springu?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
96. Wyjaśnij koncepcję programowania aspektowego (AOP) i przykłady jego zastosowania w Springu.

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
97. Jak obsługuje się transakcje w Springu, korzystając z adnotacji @Transactional?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
98. Na czym polega idea Spring Boot i w jaki sposób upraszcza konfigurację aplikacji?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
99. W jaki sposób obsługiwać wyjątki w Spring MVC?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
100. Jak zintegrować Spring z JPA/Hibernate w celu realizacji persystencji danych?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Hibernate i JPA

101. Co to jest Java Persistence API (JPA) i w jaki sposób Hibernate realizuje tę specyfikację?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
102. Jakie są stany cyklu życia encji w JPA?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
103. Na czym polega leniwe (lazy) i eager fetching oraz jak je skonfigurować?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
104. Jakie są różnice między cache pierwszego i drugiego poziomu w Hibernate?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
105. W jaki sposób mapować relacje między encjami (one-to-one, one-to-many, itp.)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
106. Jaka jest różnica między adnotacjami @Entity, @Table i np. @Column?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
107. Jak pisać zapytania JPQL (Java Persistence Query Language) i czym różnią się one od SQL?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
108. Jakie strategie generowania kluczy głównych obsługuje Hibernate/JPA?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
109. Na czym polega optymistyczna blokada (optimistic locking) i jak działa wersjonowanie encji?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
110. Jakie są typowe błędy wydajnościowe w aplikacjach opartych o JPA/Hibernate i jak je eliminować?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Testowanie w Javie

111. Czym jest JUnit i jak napisać oraz uruchomić test jednostkowy w tym frameworku?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
112. Jak korzystać z asercji w JUnit lub TestNG?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
113. Do czego służy biblioteka Mockito i jak tworzyć obiekty typu mock?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
114. Na czym polega testowanie z użyciem parametrów (parameterized testing) w JUnit?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
115. Jak przetestować, czy metoda rzuca określony wyjątek w JUnit?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
116. W jaki sposób organizować zestawy testów (test suites) i grupować testy?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
117. Czym jest TDD (Test-Driven Development) i jak wpływa na proces wytwarzania oprogramowania?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
118. Jakie są różnice między testami integracyjnymi a testami jednostkowymi?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
119. Jak korzystać z modułów testowych Spring w testach aplikacji opartych na Springu?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
120. Jakie dobre praktyki warto stosować, aby testy były czytelne i łatwe w utrzymaniu?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Wzorce projektowe w Javie

121. Jak w skrócie opisać wzorzec Singleton i jak zaimplementować go w Javie w sposób bezpieczny wielowątkowo?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
122. Na czym polega wzorzec Factory Method i czym różni się od wzorca Abstract Factory?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
123. Wyjaśnij koncepcję wzorca Builder i w jakich sytuacjach warto go używać.

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
124. W jaki sposób zaimplementować wzorzec Prototype w Javie i na czym polega klonowanie obiektów?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
125. Jaka jest różnica między wzorcami Adapter, Decorator i Proxy?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
126. Jak działa wzorzec Strategy i podaj przykład zastosowania w praktyce.

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
127. W jaki sposób wzorzec Observer jest implementowany w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
128. Na czym polega wzorzec Template Method i gdzie znajduje najczęstsze zastosowanie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
129. Czym różnią się wzorce State i Chain of Responsibility i kiedy są przydatne?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
130. Dlaczego znajomość wzorców projektowych jest istotna w pracy programisty Java?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Bezpieczeństwo w Javie

131. Jakie są najczęstsze luki bezpieczeństwa w aplikacjach pisanych w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
132. Do czego służy Java Security Manager i jaki jest jego obecny status?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
133. Na czym polega koncept ładowania klas (classloader) i w jaki sposób może zostać wykorzystany przez złośliwy kod?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
134. Jakie są dobre praktyki w kontekście zabezpieczania danych w spoczynku, na przykład szyfrowania?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
135. Jak bezpiecznie przechowywać oraz obsługiwać hasła w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
136. Z jakich bibliotek lub interfejsów API można korzystać do operacji kryptograficznych w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
137. Jak zapobiegać atakom typu SQL injection i innym rodzajom wstrzyknięć w aplikacjach Java?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
138. Jaką rolę pełni keystore w Javie i jak zarządzać jego zawartością?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
139. W jaki sposób skonfigurować HTTPS w aplikacji opartej na Spring Boot lub innym frameworku Javy?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
140. Jak chronić aplikacje przed atakami XSS (Cross-Site Scripting) oraz CSRF (Cross-Site Request Forgery)?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Optymalizacja wydajności i dobre praktyki (Performance Tuning and Best Practices)

141. Jak mierzyć i profilować wydajność aplikacji Java?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
142. Czym jest Java Flight Recorder i jak pomaga w diagnozowaniu problemów z wydajnością?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
143. Jak ograniczyć nadmierne tworzenie obiektów i fragmentację pamięci w aplikacji?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
144. Jakie techniki można zastosować, by zmniejszyć pauzy Garbage Collection?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
145. Kiedy warto użyć tablic prymitywnych zamiast kolekcji pod kątem wydajności?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
146. W jaki sposób można zidentyfikować i uniknąć blokad (lock contention) lub wąskich gardeł w wielowątkowości?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
147. Jaką rolę odgrywa microservice lub rozproszona architektura w tuningu wydajności?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
148. Jakie są najlepsze praktyki pisania wydajnego kodu w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
149. Jak zarządzać keszowaniem (caching) w dużych, rozproszonych aplikacjach pisanych w Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
150. Dlaczego zrozumienie kosztu tworzenia obiektów i wywołań metod ma znaczenie dla wydajności?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Nowoczesna Java (Java 9-21+)

151. Czym są Records w Javie i jak ich używać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
152. Czym są Sealed Classes i jak kontrolują hierarchię dziedziczenia?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
153. Jak działa Pattern Matching for instanceof i switch w nowoczesnej Javie?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
154. Czym są Virtual Threads (Project Loom) i jak zmieniają programowanie współbieżne?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
155. Jak działa słowo kluczowe var i kiedy go używać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
156. Czym jest Java Platform Module System (JPMS) i jak tworzyć moduły?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
157. Jak używać nowego HTTP Client API wprowadzonego w Java 11?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
158. Czym są Text Blocks i jak upraszczają pracę z wieloliniowymi stringami?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
159. Jak działa CompletableFuture i jakie są zaawansowane wzorce jego użycia?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
160. Czym są ZGC i Shenandoah GC i kiedy ich używać?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi
161. Jak działa Scoped Values i czym różni się od ThreadLocal?

Odpowiedź dostępna w pełnej wersji. Odblokuj 141 pozostałych odpowiedzi i ucz się z pełnego zestawu.

Odblokuj odpowiedzi

Chcesz poznać wszystkie odpowiedzi?

Uzyskaj pełny dostęp do 161 pytań rekrutacyjnych z Java oraz pozostałych technologii.

Zobacz plany cenowe