JavaRush /Blog Java /Random-PL /Przerwa kawowa #101. 19 niezbędnych pytań do rozmowy kwal...

Przerwa kawowa #101. 19 niezbędnych pytań do rozmowy kwalifikacyjnej w języku Java i krótkie przykładowe odpowiedzi

Opublikowano w grupie Random-PL
Źródło: Hackernoon Oto kilka pytań i odpowiedzi, które często pojawiają się w rozmowach kwalifikacyjnych w języku Java.

1. Co to jest zestaw programistyczny Java (JDK)?

JDK to zestaw programistyczny zawierający narzędzia i biblioteki potrzebne do tworzenia aplikacji Java.

2. Do czego służy środowisko wykonawcze Java (JRE)?

JRE oznacza środowisko wykonawcze, w którym działa kod bajtowy Java. Środowisko JRE przechowuje pliki i biblioteki w czasie wykonywania.

3. Do czego służy wirtualna maszyna Java (JVM)?

JVM to maszyna abstrakcyjna zapewniająca środowisko wykonawcze, w którym może być wykonywany kod bajtowy Java.

4. Java jest niezależna od platformy. Dlaczego?

W każdym innym języku programowania kod źródłowy jest kompilowany do postaci kodu wykonywalnego, który może nie działać na wszystkich platformach. Używając JVM, możemy uczynić kod bajtowy zrozumiałym dla dowolnej platformy, a ten kod bajtowy jest niezależny od platformy. Chociaż maszyna JVM jest inna dla każdej platformy, Java jest niezależna od platformy, ponieważ nie jest zależna od żadnego typu platformy.

5. Java nie jest w 100% zorientowana obiektowo. Dlaczego?

Ponieważ Java używa ośmiu prymitywnych typów danych, takich jak boolean, byte, char, int, float, double, long, short, które nie są obiektami.

6. Czym są konstruktory w Javie?

Konstruktor to blok kodu używany do inicjowania obiektów. Składnia:
class DemoClass
{
   // constructor name is same as class name
   DemoClass()
   {
      ....
   }
}
// calls DemoClass() constructor
DemoClass obj = new DemoClass();
Przykład:
public class ConstructorDemo
{
   int a; // class attribute
   // create constructor for class ConstructorDemo
   ConstructorDemo()
   {
      a = 26; // initial value for class attribute 'a'
   }
   public static void main(String[] args)
   {
      // creating object for ConstructorDemo class
      // here we're calling constructor ConstructorDemo()
      ConstructorDemo obj = new ConstructorDemo();
      System.out.println(obj.a);
   }
}
Wynik:
26

7. Do czego służy klasa singleton?

Klasy Singleton mogą mieć jednocześnie tylko jeden obiekt (instancję klasy). Po utworzeniu obiektu i próbie utworzenia instancji klasy singleton nowa zmienna wskazuje również na pierwszy utworzony obiekt.

8. Czym są klasy wrapperów w Javie?

Klasy opakowujące umożliwiają konwersję prymitywnych typów danych na obiekt i odwrotnie. Przykład:
int a = 7; // using primitive datatype
Integer a = new Integer(7); // using wrapper class

9. Jaka jest różnica pomiędzy operatorem == a metodą równości w Javie?

Ogólnie rzecz biorąc, == jest operatorem, a równa() jest metodą. Używamy operatora == do odwoływania się do porównywanych obiektów na stercie. W Javie nie ma koncepcji przeciążania operatorów. Mimo to operator == służy do sprawdzania, czy adresy dwóch obiektów są takie same, czy nie. Oznacza to, że operator == sprawdza, czy oba obiekty wskazują na tę samą lokalizację w pamięci, czy nie. Operator == służy także do porównywania typów obiektowych i typów pierwotnych, takich jak boolean. Natomiast metoda równości() klasy String porównuje zawartość dwóch obiektów.

10. Jakie są koncepcje OOP w Javie?

  • Abstrakcję definiuje się jako ukrywanie wewnętrznej implementacji i wyświetlanie tylko niezbędnych informacji.
  • Dziedziczenie to procedura przekształcania wszystkich właściwości i zachowań klasy nadrzędnej (nadklasy) w klasę podrzędną (podklasę).
  • Hermetyzacja to procedura łączenia danych lub zmiennych i metod.
  • Polimorfizm dosłownie oznacza wiele form. Polimorfizm to zdolność metody do wykonywania różnych zadań. Można to osiągnąć za pomocą metod.

11. Dlaczego metoda main() w Javie jest zawsze statyczna?

Ponieważ nie ma potrzeby wywoływania metody statycznej na obiekcie. Jeśli funkcja main() miałaby być metodą niestatyczną, wirtualna maszyna Java musi najpierw utworzyć swój obiekt, a następnie wywołać metodę main() , co spowoduje przydzielenie dodatkowej pamięci.

12. Dlaczego w Javie ciągi znaków są niezmienne?

Ciągi znaków w Javie są niezmienne, ponieważ obiekty typu String są buforowane w puli stałych ciągów .

13. Czym są tablice i ArrayList w Javie?

Tablica to obiekt zawierający stałą liczbę elementów podobnego typu.
  1. ArrayList jest częścią struktury kolekcji.

  2. ArrayList implementuje interfejs listy.

  3. ArrayList to skalowalna tablica, która dynamicznie rośnie w miarę dodawania elementów i zmniejsza się w miarę ich usuwania.

  4. W przypadku częstego wyszukiwania najlepszym wyborem jest Java ArrayList . Ponieważ elementy ArrayList są przechowywane w kolejnych lokalizacjach pamięci.

  5. ArrayList nie może zawierać prymitywnych typów danych, takich jak int, double, char i long.

  6. ArrayList może zawierać obiekty klasy String i opakowania ( Double , Integer ).

  7. ArrayList umożliwia powielanie elementów.

  8. ArrayList zachowuje kolejność wstawiania.

  9. ArrayList jest szeroko stosowany ze względu na swoją funkcjonalność i elastyczność. Jest przeznaczony do przechowywania heterogenicznych kolekcji obiektów.

  10. ArrayList może mieć dowolną liczbę wartości null.

14. Jaka jest różnica między HashSet a HashMap w Javie?

W HashSet :
  1. Możemy przechowywać obiekty w HashSet . Na przykład HashSet: {"Hello", "World"} .

  2. Kolejność wstawiania nie jest zachowywana. Opiera się na kodzie skrótu.

  3. Posiada metodę add() .

  4. Implementuje interfejs Set .

  5. Nie pozwala na powielanie elementów.

  6. Zezwala na pojedynczą wartość null.

W HashMapie :
  1. W HashMap możemy przechowywać pary klucz-wartość. Na przykład {1 -> „Witam”, 2 -> „Świat”} .

  2. Nie obsługuje kolejności wstawiania. Opiera się na funkcji mieszającej.

  3. Posiada metodę put() .

  4. Implementuje interfejs mapy.

  5. Zezwala na zduplikowane wartości. Nie pozwala na duplikowanie kluczy.

  6. Zezwala na pojedynczy klucz null i dowolną liczbę wartości null.

16. Jaka jest różnica między tym a super w Javie?

Słowo kluczowe this w Javie:
  1. jest to słowo kluczowe będące zmienną referencyjną odnoszącą się do bieżącego obiektu.

  2. Można go użyć do niejawnego wywołania metody bieżącej klasy.

  3. Słowo kluczowe this() używane do wywoływania konstruktora bieżącej klasy.

  4. Można tego użyć do przekazania jako argumentu podczas wywoływania metody.

Super słowo kluczowe w Javie:
  1. Słowo kluczowe super jest zmienną referencyjną używaną do odwoływania się do bezpośredniego obiektu klasy nadrzędnej.

  2. super może służyć do bezpośredniego wywoływania metody klasy nadrzędnej, konstruktora klasy nadrzędnej oraz uzyskiwania dostępu do metod klasy bazowej.

17. Co to jest instrukcja break icontinue w Javie?

Jeśli w pętli wystąpi instrukcja break , pętla zakończy się, a sterowanie przejdzie do następnej instrukcji w tej samej pętli. Przykład:
public class Example
{
   public static void main(String[] args)
   {
      for(int a = 1; a <= 10; a++)
      {
         if(a == 3)
         {
            // breaking loop
            break;
         }
         System.out.println(a);
      }
   }
}
Wynik:
12
Instrukcja kontynuowania powoduje przejście do następnej iteracji pętli w zależności od określonego warunku. Przykład:
public class Example
{
   public static void main(String[] args)
   {
      for(int a = 1; a <= 10; a++)
      {
         if(a % 2 != 0)
         {
            continue;
         }
         System.out.println(a + " ");
      }
   }
}
Wynik:
2 4 6 8 10

18. Czym są modyfikatory dostępu w Javie?

Modyfikatory dostępu definiują limit lub zakres zmiennej, konstruktora, klasy lub metody. W Javie istnieją cztery typy modyfikatorów dostępu:
  1. Modyfikator dostępu prywatnego.
  2. Chroniony modyfikator dostępu.
  3. Modyfikator udostępniania.
  4. Domyślny modyfikator dostępu.

19. Jaka jest różnica pomiędzy pętlą for a pętlą for each w Javie?

dla pętli :
  1. Nie ma sekwencji wykonywalnej. W pętli for możemy dowolnie zmieniać licznik.
  2. Pojawił się na samym początku, w JDK 1.
  3. Nie ma potrzeby implementowania interfejsu.
  4. Może mieć dostęp do pliku Index. Dlatego możliwa jest zamiana elementu w tablicy.
  5. Licznik może zwiększać się i zmniejszać.
Dla każdej pętli :
  1. Wykonywane sekwencyjnie. Licznik zwiększa się o jeden.
  2. Po raz pierwszy pojawił się w JDK 5.
  3. Aby móc iterować po kontenerach przy użyciu pętli for-each, kontener musi implementować interfejs Iterable.
  4. Nie można zastąpić elementu o tym indeksie, ponieważ nie można uzyskać dostępu do indeksu tablicy.
  5. Można iterować tylko w kolejności rosnącej, nie można zmniejszać.
Przykład różnicy pomiędzy pętlami for each i for :
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class DifferenceBetween
{
   public static void main(String[] args)
   {
      List<String> players = new ArrayList<>(Arrays.asList("Virat", "Rohit", "Dhoni"));
      // iterate over List using for loop
      System.out.println("using for loop: ");
      for(int a = 0; a < players.size(); a++)
      {
         System.out.println(players.get(a));
      }
      // iterate over List using enhanced for loop
      System.out.println("using for each loop: ");
      for(String str : players)
      {
         System.out.println(str);
      }
   }
}
Wynik dla i dla każdej pętli:
Virata Rohita Dhoni.
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION