WorksheetsQuiz Basi di Java
Total questions: 80
Worksheet time: 47mins
Quale delle seguenti NON è una proprietà degli algoritmi?
Ambiguità
Finitezza
Generalità
Efficienza
L'insieme di regole formali per la scrittura di frasi è detto:
Sintassi
Semantica
Alfabeto
Lessico
Tra i problemi del linguaggio naturale NON compare:
E' formale
E' ambiguo
E' ridondante
Ha un'ampia ricchezza espressiva
Quale tra le seguenti affermazioni è vera?
I linguaggi compilati sono tipicamente di medio o alto livello
I linguaggi fortemente tipizzati sono migliori di quelli debolmente tipizzati
I linguaggi interpretati hanno il vantaggio di generare l'object code
I linguaggi di basso livello sono altamente portabili
I linguaggi dichiarativi:
Descrivono il risultato
Descrivono come ottenere il risultato
Hanno uno scopo ludico
Si basano sul teorema di Bohm-Jacopini
Java è un linguaggio:
Di alto livello e sviluppa il paradigma a oggetti
Di medio livello e sviluppa il paradigma a oggetti
Di medio livello sviluppa il paradigma dichiarativo
Di alto livello e sviluppa il paradigma dichairativo
Quale NON è una caratteristica di Java:
E' scarsamente portabile
E' considerabile sia compilato che interpretato
E' general purpose
E' nato in contrapposizione a C++
L'object code di Java è detto:
Bytecode
Filecode
Javacode
Classcode
Lo scopo del compilatore Just In Time è:
Rendere l'esecuzione di un programma più efficiente
Rendere l'esecuzione di un programma più efficace
Permettere la portabilità del codice
Permettere la riusabilità del codice
NON è una funzionalità degli IDE:
Correzione semantica degli errori
Editor di testo con evidenziazione della sintassi
Debugging
Gestione del progetto
Quale tra i seguenti identificatori è accettato in Java?
var
int
fact!
5pos
Un blocco di codice è:
Contenuto in una coppia di parentesi graffe
Contenuto in una classe
Contenuto in un metodo
Contenuto in una coppia di parentesi tonde
Cosa stampa questo programma?
Genera un errore
11
La stringa vuota
101
Il tipo double permette di:
Rappresentare valori decimali più precisi di float
Rappresentare valori decimali meno precisi di float
Rappresentare valori interi più precisi grandi di int
Rappresentare valori interi più precisi piccoli di int
Cosa stampa questo programma?
10.0
10
Genera un errore
1
Per permette l'input da parte dell'utente, è necessario:
Creare un oggetto della classe Scanner
Importare la libreria java.lang
Creare un oggetto della classe Input
Importare la libreria java.Scanner
Quale affermazione è vera?
Le variabili a e c puntano allo stesso indirizzo di memoria
Ogni variabile punta a un indirizzo di memoria differente
Genera un errore
L'indirizzo di memoria cui punta la variabile c è dato dalla somma degli indirizzi di memoria di a e b
Date due stringhe, il metodo compareToIgnoreCase serve per:
Stabilire l'ordine alfabetico
Stabilire l'ordine lessicografico
Stabilire la stringa più lunga
Stabilire la stringa più corta
Il costrutto di selezione corrisponde alle istruzioni:
If-else if-else e switch
for, while e do-while
if-else if-else
switch e do-while
Per quali valori di val il codice stampa B?
Mai
Per i valori maggiori di 10
Per i valori tra 0 e 10
Per i valori minori di 0
Scrivere "if(varBooleana)" equivale a scrivere:
if(varBooleana == True)
if(varBooleana == False)
if(varBooleana == null)
Nessuna delle altre risposte è corretta
Cosa stampa questo codice?
B
C
BC
AB
NON è un elemento obbligatorio di un ciclo:
L'istruzione di inizializzazione
Il corpo
La condizione di uscita
Il tipo di ciclo utilizzato
Un ciclo viene terminato quando:
La condizione booleana è falsa
La condizione booleana è vera
Termina la memoria a disposizione
E' stato eseguito un numero sufficiente di volte
A differenza del ciclo while, il ciclo do-while:
Viene eseguito almeno una volta
Può non essere mai eseguito
Necessita dell'istruzione di inizializzazione
Può non essere indicata l'istruzione di inizializzazione
La particolarità di questo ciclo è che:
Non termina mai
Non viene mai eseguito
Stampa i valori da 0 a 10
Stampa i valori da 0 a 9
Dato l'array arr, arr[0] è detta:
Variabile indicizzata
Variabile di array
Valore indicizzato
Valore di array
Due array paralleli devono necessariamente:
Avere stessa lunghezza ma anche tipo diverso
Avere stessa lunghezza e stesso tipo
Avere stesso tipo ma anche diversa lunghezza
Non ci sono vincoli
Dato l'array arr, quale ciclo for permette di iterare su tutte le sue posizioni?
for(int i = 0; i < arr.length; i++)
for(int i = 0; i <= arr.length; i++)
for(int i = 0; i <= arr.size; i++)
for(int i = 1; i < arr.size; i++)
L'istruzione "int [] [] arr = new int [5] [10]" permette di:
Creare una matrice con 5 righe e 10 colonne
Creare una matrice con 5 colonne e 10 righe
Creare 5 array di 10 posizioni
Creare 10 array di 5 posizioni
Un metodo void:
Non ritorna un valore
Ritorna un valore di tipo void
Non riceve parametri
Riceve un numero non precisato di parametri
Un metodo può essere invocato senza essere stato definito?
No, mai
Sì, sempre
Solo se è un metodo void
Solo se è un metodo senza parametri
Cosa stampa questo codice?
Genera un errore
10
20
20.0
Considerando il codice di prima:
x è detto parametro, 10 è detto argomento
x e 10 sono parametri
x e 10 sono argomenti
x è detto argomento, 10 è detto parametro
Le stringhe vengono passate:
Per riferimento, ma le modifiche non hanno effetto
Per riferimento
Per valore
Per valore, ma le modifiche hanno effetto
Se una variabile viene passata come riferimento, significa che come argomento viene passato:
L'indirizzo di memoria e quindi le modifiche hanno effetto
L'indirizzo di memoria e quindi le modifiche NON hanno effetto
Il valore e quindi le modifiche hanno effetto
Il valore e quindi le modifiche NON hanno effetto
L'overloading consente, all'interno della stessa classe, di:
Definire metodi con lo stesso nome
Definire metodi con la stessa firma
Definire metodi con lo stesso corpo
Definire metodi identifici
Se si creasse una classe Libro per una biblioteca, quali potrebbero essere suoi oggetti?
I promessi sposi e Il signore degli anelli
Romanzo e fumetto
Numero di pagine e genere
Scaffale e reparto
Qual è la differenza tra variabili statiche e di istanza?
Le prime sono comuni a tutti gli oggetti, per le seconde ogni oggetto ha una sua copia
Per le prime ogni oggetto ha una sua copia, le seconde sono comuni a tutti gli oggetti
Le prime sono di tipo primitivo, le seconde di tipo classe
Le prime sono di tipo classe, le seconde di tipo primitivo
E' necessario che una variabile sia inizializzata?
Solo se è una variabile locale
Sì, sempre
No, mai
Solo se è una variabile di istanza
L'istruzione "Libro obj;" ha lo scopo di:
Creare una variabile obj che conterrà un oggetto di tipo Libro
Allocare la memoria per un oggetto di tipo Libro
Allocare la memoria per un oggetto di tipo Libro e inserire il riferimento nella variabile obj
Genera un errore
SCRIVI TU!
Data una classe Libro, caratterizzata dalla sola istruzione "int numeroPagine", e un oggetto obj di tipo Libro, quale istruzione permette di modificare il valore della variabile numeroPagine a 10?
(a)
Quando viene invocato il metodo costruttore?
All'utilizzo della keyword new
Alla creazione della variabile che conterrà l'indirizzo dell'oggetto
Scrivendo nomeOggetto.nomeClasse()
Al caricamento di una classe in memoria
E' molto comune che il concetto di costruttore sia abbinato a quello di:
Overloading
Overriding
Metodi astratti
Metodi statici
Cosa stampa questo codice?
0
10
Genera un errore
La stringa vuota
E' possibile avere un oggetto per cui è stata creata la variabile che conterrà l'indirizzo di memoria, ma per il quale non è stata allocata la memoria per l'oggetto?
Sì e la variabile conterrà un riferimento a null
No, mai
Sì e la variabile sarà vuota
Sì, ma la variabile deve essere inizializzata con un indirizzo di memoria a scelta
La tecnica principale per l'incapsulamento è:
Dichiarare le variabili di istanza private
Dichiarare i metodi privati
Implementare i metodi equals, clone e toString
Creare oggetti privati
Una variabile dichiarata protected:
Può essere acceduta direttamente dall'interno dello stesso package e ovunque dalle classi figlie
Può essere acceduta direttamente solo dall'interno della classe
Non può mai essere acceduta direttamente
Può essere acceduta direttamente da ovunque
Che legame c'è tra ereditarietà e incapsulaemento?
Nessuno
L'incapsulamento è un tipo di ereditarietà
L'ereditarietà è un tipo di incapsulamento
Sono sinonimi dello stesso concetto
Tramite ereditarietà, vengono ereditati:
Tutti gli elementi della classe padre, ma non tutti possono essere acceduti
Tutti gli elementi della classe padre e tutti possono essere acceduti
Solo variabili e metodi di istanza
Solo variabili e metodi statici
Secondo questa gerarchia, quali classi ereditano da Persona?
Tutte
Solo sportivo
Solo Nuotatore, Motociclista e Calciatore
Solo Motociclista
Com'è detta la classe Calciatore rispetto a Persona?
Discendente
Figlia
Padre
Antenato
Affinché venga garantito l'incapsulamento, come viene effettuato l'accesso alle variabili di istanza ereditate?
Attraverso i metodi get e set
Attraverso la notazione nomeOggetto.nomeVariabile
Essendo private, non è possibile accedervi in nessun modo
Attraverso degli appositi metodi statici
Per richiamare la definizione del metodo nel padre, si usa la keyword:
Super
This
Throw
New
Con overriding si intende:
La ridefinizione di un metodo (già definito nella classe padre) nella classe figlia
La definizione di un metodo con lo stesso nome, ma con firma differente
La definizione di un metodo con tipo covariante
Un sinonimo di polimorfismo
Quale affermazione sulla classe Object è falsa?
Non è possibile effettuare overriding dei metodi della classe Object
E' antenata di ogni classe
Permette di ereditare metodi come clone e toString a tutte le classi
Viene usato come parametro per ricevere come argomento qualsiasi oggetto
Ogni oggetto quanti tipi ha?
Uno, la sua classe
Due, tipo statico e dinamico
Due, tipo di valore e di riferimento
Uno, tipo di riferimento
Con binding dinamico si intende:
Che l'associazione tra invocazione e definizione del metodo avviene a run-time
Che l'associazione tra invocazione e definizione del metodo avviene a compile-time
Che il tipo dinamico di un oggetto è impiegato per l'invocazione dei metodi
Che il tipo dinamico di un oggetto è utilizzato per accedere alle variabili di istanza
"Libro obj = new Romanzo()": questa istruzione che tipo di oggetto crea?
Di tipo statico Libro e di tipo dinamico Romanzo
Di tipo statico Romanzo e di tipo dinamico Libro
Di tipo Libro
Di tipo Romanzo
L'invocazione "obj.display()" cosa stampa?
Every student is a human
Every human is not a student!
Non stampa nulla
Every student is a human
Every human is not a student!
In quale caso l'istruzione "obj.display()" darebbe errore?
Nel caso in cui la classe Human non avesse il metodo display
Nel caso in cui la classe Student non avesse il metodo display
L'istruzione dà sempre errore
L'istruzione non può mai dare errore
Dato l'oggetto Shape obj = new Traiangle(), come si può accedere all'attributo base?
Effettuando downcasting a Traiangle e poi accedendovi direttamente
Essendo una variabile di istanza del suo tipo dinamico, semplicemente accedendovi direttamente
Non è possibile in nessun caso
Utilizzando il metodo getBase()
Lo scopo di un metodo astratto è:
Rimandare la definizione di un metodo alle classi figlie
Accettare valori di qualsiasi tipo primitivo
Accettare valori di qualsiasi tipo classe
Permettere di definire metodi con stesso nome ma differente firma
Il modificatore abstract può essere indicato insieme a:
public
final
static
private
Quale affermazione su una classe che estende una classe astratta è vera?
Può essere concreta solo se implementa tutti i metodi astratti della classe padre
Deve essere anch'essa astratta
Deve essere necessariamente concreta
Può essere concreta solo se implementa nuovi metodi rispetto alla classe padre
Quale caratteristica delle classi astratte è falsa?
Si possono indicare costruttori astratti
Non è possibile creare oggetti a partire da essa
Si può usare come tipo statico di un oggetto
Si possono indicare anche variabili di istanza
Un'interfaccia Java può contenere:
Costanti pubbliche
Metodi concreti
Variabili di istanza
Metodi privati
Scrivere all'interno di un'interfaccia "int a", quale keyword sottointende?
Tutte le altre risposte sono corrette
public
static
final
Quale combinazione non è possibile effettuare in Java?
Un'interfaccia implementa un'altra interfaccia
Più classi implementano la stessa interfaccia
Una classe implementa più interfacce
Una classe astratta implementa un'interfaccia
Le precondizioni contengono:
L'insieme di condizioni che devono sussistere prima dell'esecuzione del metodo
L'insieme delle situazioni verificate al termine dell'esecuzione del metodo
L'insieme delle istruzioni eseguite prima dell'esecuzione di un metodo
L'insieme delle condizioni che il metodo verifica prima di eseguire il proprio corpo
Gli ArrayList sono:
Array dinamici
Array statici
Array multidimensionali
Array di liste
ArrayList è una classe discendente/figlia di:
List, Collection, Iterable
List, Set, Collection
Array, List, Collection
Collection, Iterable
Rispetto agli array statici, gli ArrayList:
Sono meno efficienti
Sono sempre peggiori
Sono sempre migliori
Sono meno flessibili
Quale NON è una differenza tra errori ed eccezioni?
Le eccezioni sono rilevate a compile-time, gli errori a run-time
Gli errori non sono recuperabili, le eccezioni sì
Gli errori riguardano l'esaurimento di risorse, le eccezioni problemi di codice
Tutte le altre risposte sono corrette
Quale classe di eccezioni è più generica?
Exception
RuntimeException
Error
ArithmeticException
Le istruzioni del blocco finally vengono eseguite:
Sempre
Solo se non si entra nel blocco catch
Solo se si entra nel blocco catch
Solo se si entra nel blocco try
E' possibile indicare più catch per il medesimo try?
Sì, purché sia indicato un differente tipo di eccezione
Sì, sempre
No, mai
Sì, purché uno dei catch riguardi la classe Exception
La keyword throw serve a:
Lanciare un'eccezione, anche dove Java non la rileva automaticamente
Catturare un'eccezione
Indicare che un metodo potrebbe sollevare un certo tipo di eccezioni
Può essere utilizzato alternativamente a try
Il metodo getClass permett di:
Accedere al tipo dinamico di un oggetto
Accedere al tipo statico di un oggetto
Accedere al valore di una variabile di istanza di tipo oggetto
Accedere all'elenco di ascendenti di un oggetto
Un package può essere visto come:
Una cartella
Una classe
Un file
Un progetto
