Interview 20-40 Flashcards

1
Q

Co to jest klasa Wrapper w Javie?

A

Wrapper, ogólnie mówiąc, odnosi się do większej jednostki, która otacza mniejszą jednostkę. W Javie klasa Wrapper jest klasą obiektową, która otacza typy danych prymitywnych.

Typy danych prymitywne to te, z których mogą być tworzone inne typy danych. Na przykład, liczby całkowite mogą prowadzić do tworzenia typu long, byte, short itp. Z kolei typ String nie jest prymitywny, ponieważ nie można z niego stworzyć innych typów danych.

Wracając do klasy Wrapper, Java zawiera 8 klas Wrapper: Boolean, Byte, Short, Integer, Character, Long, Float i Double. Dodatkowo, w Javie można tworzyć własne klasy Wrapper, które są podobne do struktury w języku C. Tworzymy własną klasę Wrapper z odpowiednimi typami danych.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Dlaczego potrzebujemy klas Wrapper?

A

Klasy Wrapper są finalne i niemutowalne.
Udostępniają metody takie jak valueOf(), parseInt() itp.
Zapewniają funkcje autoboxingu i unboxingu.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Różnice między zmiennymi instancyjnymi a lokalnymi.

A

Zmienna instancyjna:

Deklarowana poza metodą, bezpośrednio wywoływana przez metodę.
Ma wartość domyślną. !!!
Może być używana w całej klasie.

Zmienna lokalna:

Deklarowana wewnątrz metody.
Nie ma wartości domyślnej.
Zakres jej użycia jest ograniczony do metody.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Jakie są wartości domyślne przypisane do zmiennych i instancji w Javie?

A

W Javie, gdy nie zainicjalizujemy zmiennych instancyjnych, kompilator przypisuje im wartości domyślne. Wartości domyślne zależą od typów danych. Oto niektóre powszechne typy domyślnych wartości:

Dla typów numerycznych (byte, short, int, long, float, double) wartość domyślna to 0.
Dla typu boolean wartość domyślna to false.
Dla typów obiektowych (klas, interfejsów i tablic) wartość domyślna to null.
Dla typu char wartość domyślna to znak null (”\u0000”).
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Co to zmienna klasowa?

A

class GFG {
public static int ctr = 0;
public GFG() { ctr++; }
public static void main(String[] args)
{
GFG obj1 = new GFG();
GFG obj2 = new GFG();
GFG obj3 = new GFG();
System.out.println(“Number of objects created are “
+ GFG.ctr);
}
}

W Javie zmienna klasowa Class Variable (znana także jako zmienna statyczna) to zmienna zadeklarowana w obrębie klasy, ale poza metodą, konstruktorem lub blokiem. Zmienne klasowe są deklarowane za pomocą słowa kluczowego static, a są one wspólne dla wszystkich instancji (obiektów) klasy oraz samej klasy. Niezależnie od liczby utworzonych obiektów, zmienna klasowa istnieje tylko raz.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Jaką wartość domyślną przechowują zmienne lokalne?

A

Zmiennym lokalnym nie przypisywana jest żadna wartość domyślna. Przypisanie wartości do zmiennych lokalnych jest obowiązkowe przed ich użyciem. Zmienne prymitywne i obiektowe nie mają żadnych wartości domyślnych.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Wyjaśnij różnicę między zmienną instancyjną a zmienną klasową.

A

Zmienna instancyjna:

Zmienna bez modyfikatora static znana jest jako zmienna instancyjna.
Jest dzielona przez wszystkie instancje klasy, ale każda instancja może mieć różne wartości.

Zmienna klasowa:

Zmienna klasowa jest deklarowana przy użyciu słowa kluczowego static.
Jest dzielona przez wszystkie obiekty klasy, posiada jedną wartość dla wszystkich obiektów.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Co to jest zmienna statyczna?

A

Zmienne statyczne są zmiennymi, które są wspólne dla wszystkich obiektów danej klasy. Po zadeklarowaniu zmiennej jako static, tworzona jest tylko jedna kopia tej zmiennej, która jest dzielona przez wszystkie obiekty klasy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Jaka jest różnica między System.out, System.err i System.in?

A

System.out – Jest to strumień PrintStream, który jest używany do wypisywania danych na konsolę (CLI).
System.err – Używany do wypisywania komunikatów o błędach. Różni się od System.out tym, że zazwyczaj wyświetlane są w czerwonym kolorze w większości IDE.
System.in – Jest to strumień wejściowy (InputStream), używany do odczytu danych z terminala. Zwykle używa się klasy Scanner, aby z niego korzystać

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Co rozumiesz przez strumień I/O?

A

W Javie strumienie wprowadzają i wyprowadzają dane do i z programów. Strumienie te obsługują różne typy danych, obiektów i plików, pozwalając na pełne operacje we/wy.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Jaka jest różnica między hierarchią klas Reader/Writer a hierarchią klas InputStream/OutputStream?

A

Podstawowa różnica między nimi polega na tym, że klasy InputStream/OutputStream służą do odczytu i zapisu danych w postaci bajtów, podczas gdy klasy Reader/Writer obsługują znaki. Klasy Reader/Writer akceptują tablice znaków jako parametry, natomiast metody klas InputStream/OutputStream przyjmują tablice bajtów. W porównaniu do klas InputStream/OutputStream, klasy Reader/Writer są bardziej wydajne, obsługują wszystkie znaki Unicode i są przydatne do internacjonalizacji. Klasy Reader/Writer powinno się używać zamiast danych binarnych (np. zdjęć), chyba że zachodzi taka potrzeba.
import java.io.*;

class GFG {
public static void main(String[] args) {
try {
// Zapisywanie danych binarnych do pliku za pomocą OutputStream
byte[] data = {(byte) 0xe0, 0x4f, (byte) 0xd0, 0x20, (byte) 0xea};
OutputStream os = new FileOutputStream(“data.bin”);
os.write(data);
os.close();

        // Odczyt danych binarnych z pliku za pomocą InputStream
        InputStream is = new FileInputStream("data.bin");
        byte[] newData = new byte[5];
        is.read(newData);
        is.close();

        // Wydruk odczytanych danych
        for (byte b : newData) {
            System.out.print(b + " ");
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
} }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Jakie są najwyższe klasy dla wszystkich strumieni?

A

Wszystkie klasy strumieni w Java dzielą się na dwie główne kategorie: klasy ByteStream i klasy CharacterStream. Klasy ByteStream dzielą się na InputStream i OutputStream, natomiast klasy CharacterStream dzielą się na Reader i Writer. Klasa nadrzędna dla wszystkich klas InputStream to java.io.InputStream, a dla wszystkich klas OutputStream to java.io.OutputStream. Podobnie, dla wszystkich klas Reader nadrzędną klasą jest java.io.Reader, a dla klas Writer jest java.io.Writer.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Co to są FileInputStream i FileOutputStream?

A

W Java, FileInputStream służy do odczytu danych z pliku w postaci strumienia bajtów. Jest używany głównie do odczytu danych binarnych, takich jak obrazy, pliki audio lub obiekty zapisane w formacie binarnym.

Przykład:

File file = new File(“path_of_the_file”);
FileInputStream inputStream = new FileInputStream(file);

FileOutputStream służy do zapisu danych do pliku bajt po bajcie. Zwykle jest używany do zapisywania surowych danych binarnych, takich jak obrazy, w pliku.

Przykład:

File file = new File(“path_of_the_file”);
FileOutputStream outputStream = new FileOutputStream(file);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Jaki jest cel używania klas BufferedInputStream i BufferedOutputStream?

A

Kiedy pracujemy z plikami lub strumieniami, aby zwiększyć wydajność operacji we/wy, używamy klas BufferedInputStream i BufferedOutputStream. Obie klasy oferują możliwość buforowania, co oznacza, że dane są przechowywane w buforze przed zapisaniem do pliku lub odczytem z strumienia. Zmniejsza to liczbę interakcji z systemem operacyjnym, co pozwala na szybszą obsługę dużych ilości danych.

Przykład:

BufferedInputStream(InputStream inp);
BufferedOutputStream(OutputStream output);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Co to są FilterStreams?

A

Filtry strumieni (FilterStreams) to strumienie, które zwracają nowy strumień zawierający elementy spełniające określony predykat. Kiedy używamy filter(), nie wykonuje ono faktycznego filtrowania, lecz tworzy nowy strumień, który po przejściu zawiera tylko elementy pasujące do danego predykatu.

Przykład:

FileInputStream fis = new FileInputStream(“file_path”);
FilterInputStream filterStream = new BufferedInputStream(fis);

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Co to jest filtr I/O?

A

Filtr I/O (Input/Output filter) to obiekt, który odczytuje dane z jednego strumienia i zapisuje je do źródeł wejścia i wyjścia. Używa pakietu java.io do implementacji tego filtra.

17
Q

Ile sposobów można pobrać dane z konsoli w Javie?

A

Korzystając z argumentów wiersza poleceń.
Korzystając z klasy BufferedReader.
Korzystając z klasy Console.
Korzystając z klasy Scanner.

Przykład:

Argumenty wiersza poleceń:

if (args.length > 0) {
for (String val : args) {
System.out.println(val);
}
}

BufferedReader:

BufferedReader read = new BufferedReader(new InputStreamReader(System.in));
String x = read.readLine();

Console:

String x = System.console().readLine();

Scanner:

Scanner in = new Scanner(System.in);
String str = in.nextLine();

18
Q

Różnica między użyciem print, println i printf.

A

print wypisuje dane bez przechodzenia do nowej linii.
println wypisuje dane i przechodzi do nowej linii.
printf wypisuje dane, umożliwiając formatowanie z użyciem specyfikatorów formatu.

19
Q

Co to są operatory?

A

Operatory to specjalne symbole używane do wykonywania operacji na zmiennych i wartościach.

20
Q

Ile typów operatorów jest dostępnych w Javie?

A

Operatory arytmetyczne
Operatory unarne
Operator przypisania
Operatory relacyjne
Operatory logiczne
Operator warunkowy (ternarny)
Operatory bitowe
Operatory przesunięcia
Operator instanceof