Capitolul 1 - I/O Streams Flashcards

1
Q

Clasificarea streamurilor dupa directia datelor

A

de intrare sau de iesire

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

Clasificarea streamurilor dupa tipul de date transferate

A

byte-wise sau charwise

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

Ce reprezinta streamurile byte-wise

A

cel mai general flux, prin care poate cicula orice tip de informatie (numere, date de tip text, instante de obiect) si care e reprezentata sub forma de bytes

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

Ce reprezinta streamurile char-wise

A

o particularizare a fluxurilor byte-wise, care optimizeaza transferul informatiei de tip text (dar nu accepta alt tip de informatie)

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

Clasificare dupa modul de scriere /citire a informatiei din flux

A

low-level sau high level

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

Un flux high level poate fi construit doar peste un flux low level (a/f)

A

Fals. Un flux highlevel poate fi construit pentru un flux low level sau peste unul highlevel.

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

Ce tip de exceptie poate arunca un stream ?

A

IOException

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

Ce este bufferizarea?

A

La citire: atunci cand vrem sa citim dintr-o sursa de date un numar de bytes, este adusa in memoria programului o “halca” mai mare de informatie in meoria programului, astfel incat la alte citiri ulterioare, se va face citirea mai rapida din “halca” de date din memoria aplicatiei

La scriere: atunci cand vrem sa scriem catre un end-point o informatie, informatia nu este trimisa imediat, ci este stocata intr-o zona de memorie a programului. In momentul in care datele ce trebuie trimise ating o dimesiune suficient de mare, atunci sunt trimise toate deodata catre destinatie

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

Clase principale pentru streamurile byte-wise

A

InputStream si OutputStream

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

Clase principale pentru streamurile char-wise

A

Reader si Writer

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

Care sunt clasele pentru fluxuri de conversie?

A

InputStreamReader: converteste un InputStream intr-un Reader
OutputStreamWriter: converteste un OutputStream intr-un Writer

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

Exemple de fluxuri highlevel

A

Buffered.. si Object ….

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

Ce este serializarea?

A

serializarea este procesul prin care o instanta este transformata intr-un sir de bytes cu scopul de a fi trasnferata ca flux de date.

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

Motorul de serializare este inclus in JVM a/f

A

Adevarat

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

implicit, nici o clasa nu este serializabile. a/f

A

Adevarat

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

Cum este marcata o clasa ca fiind serializable?

A

aceasta trebuie sa implementeze interfata java.io.Serializable.

17
Q

Un flux high level se poate conecta direct la resursa.

A

Fals. Numai fluxuri low level se pot conecta direct la resursa.

18
Q

Care este tipul de output stream ca nu are echivalent in input stream? Ce particularitati are?

A

PrintStream (highlevel). Are ca particularitati

  • nu arunca exceptii
  • isi creaza singur fluxul low level prin care se conecteaza la sursa de date. Deci el poate primi ca parametru direct resursa.
19
Q

Care este diferenta intre InputStream si Reader

A

Reader este specializat pe resurse de tip text (char wise) , iar inputstream poate primi orice tip de resursa.

20
Q

Care este ordinea de apelare pentru o clasa deserializata care are definit un bloc static anonim, un bloc anonim si un constructor

A

Blocurile anonime non statice si constructorii NU sunt apelate la deserializare, si nu se reinitializeaza atributele. - > practic instanta nu e reconstruita. Ea a fost creata mai demult si continua sa existe.

21
Q

Cum verifica motorul de deserializare daca o clasa are aceiasi versiune cu cea a obiectului transmis?

A

Folosindus-se de atributul serialVersionUID care by default contine un hash generat pe baza aitrbutelor existele la momentul serializarii obiectului.

Acest serialVersionUID poate fi suprascris astfel fortand motorul de serializare sa valideze versiunea clasei cu un numar scris de noi.

22
Q

Avem clasa A care nu e definita ca fiind serializable.

Putem defini o clasa B care extends A implements Serializable?

A

Da, se poate. Se va serializa din B doar la ce exista acces. In momentul deserializarii se va “copia” in memoria obiectul B (despre care am datele), iar atributele mostenite de la A se vor CREA folosind constructorul A.

23
Q

Ce se va afisa la deserializarea unui obiect de tip B?

public class A{
     int atributA = 5;
     public A(){
           System.out.println("c-tor A");
           }
}
public class B extends A implements Serializable{
     int atributB = 22;
     public B(){
           System.out.println("c-tor B");
           }
}
A

Se va afisa:
c-tor A

Motivul este pentru ca la deserializare toate datele lui B sunt existente deja, pentru partea mostenita din A nu existe date, asa ca atrebutele mostenite din A vor fi construite (cu ajutorul constructorului) la deserializare.