Esempi di domande a risposta multipla - prima prova intermedia
Il seguente elenco include esempi di domande a risposta multipla che sono stati somministrati in prove di esame passate relativamente alla prima parte del programma del corso.
Domanda 1
Se una variabile di istanza x viene dichiarata private
all'interno di una classe Prova, allora:
- A [0] Nessun metodo dichiarato prima di x può accedere a x.
- B [-1] Il tipo di x deve essere necessariamente primitivo.
- C [-1] Solo metodi statici appartenenti alla classe Prova possono
accedere a x.
- D [2] Solo metodi appartenenti alla classe Prova possono
accedere a x.
Domanda 2
Fare overloading significa:
- A [0] Dare diverse definizioni di metodi con lo stesso
nome e la stessa lista di parametri formali, ma valore restituito diverso.
- B [-1] Definire metodi con nomi diversi, ma usando la stessa lista di parametri formali.
- C [2] Dare diverse definizioni di metodi con lo stesso nome, ma usando
parametri formali diversi in numero e/o tipo.
- D [-1] Definire metodi con nomi diversi e parametri formali diversi in numero e/o
tipo.
Domanda 3
Una sola delle seguenti affermazioni riguardanti l'uso di this è
corretta. Quale?
- A [0] this è una variabile come tutte le altre e quindi può essere modificata a
piacere.
- B [2] Nel corpo di un metodo, this
contiene sempre il riferimento all'oggetto su cui quel metodo
è invocato.
- C [-1] this può essere usato sia all'interno di metodi statici che non
statici.
- D [-1] L'uso di this è sempre facoltativo, quindi rimuoverne tutte le occorrenze
da un programma non ne modifica il comportamento.
Domanda 4
Si consideri il seguente frammento di programma:
double y = 13.0;
int x = y;
Una sola delle seguenti affermazioni è vera. Quale?
- A [0] L'assegnazione int x = y è corretta, poichè y
contiene 13.0, che è un numero intero.
- B [2] L'assegnazione int x = y è sbagliata, ma può essere corretta
rimpiazzando y con (int)y.
- C [-1] L'assegnazione int x = y è sbagliata, e non può essere corretta
in alcun modo poichè un valore di tipo double non può essere mai
convertito in un valore di tipo int.
- D [-1] L'assegnazione int x = y è corretta indipendentemente dal fatto
che y contenga un numero intero o meno.
Domanda 5
Una sola delle seguenti affermazioni sull'uso dell'istruzione break
è vera. Quale?
- A [-1] L'istruzione break permette di interrompere l'esecuzione di un
metodo.
- B [0] L'unico uso possibile dell'istruzione break è per interrompere l'esecuzione di un
ciclo.
- C [-1] Il break può essere usato nel ramo if di una istruzione if..else
per saltare al ramo else.
- D [2] Il break può essere usato per interrompere un ciclo, ma è
consentito scrivere cicli senza usare break.
Domanda 6
Una sola delle seguenti affermazioni riguardanti il passaggio dei parametri
in Java è corretta. Quale?
- A [2] Durante l'invocazione di un metodo, i parametri attuali vengono
copiati nei corrispondenti parametri formali.
- B [0] Durante l'invocazione di un metodo, i parametri formali vengono
copiati nei corrispondenti parametri attuali.
- C [-1] Nessun parametro attuale può essere il valore null.
- D [-1] I parametri attuali possono anche essere piu' dei parametri formali, ma non
viceversa.
Domanda 7
Si consideri il seguente metodo della classe MiaClasse:
public int mioMetodo(int y) {
x = y + 1;
return x;
}
Una sola delle seguenti affermazioni è falsa. Quale?
- A [2] Il metodo è sbagliato in ogni caso, poichè x non è dichiarato in
mioMetodo.
- B [-1] Il metodo è corretto se x è dichiarata nella classe MiaClasse come
variabile di istanza.
- C [0] Il valore restituito da mioMetodo non dipende da quello che era contenuto in x prima
dell'invocazione di mioMetodo.
- D [-1] Se x fosse una variabile di istanza, allora sarebbe possibile
rimpiazzare x con this.x.
Domanda 8
Si considerino le seguenti espressioni:
"Fondamenti".concat(" di").concat(" Informatica")
"Fondamenti".concat(" di".concat(" Informatica"))
Una sola delle seguenti affermazioni è vera. Quale?
- A [2] Entrambe le espressioni restituiscono la stringa "Fondamenti di Informatica".
- B [-1] la prima espressione restituisce la stringa "Fondamenti di Informatica",
mentre la seconda provoca un errore del compilatore perché l'argomento della
prima invocazione del metodo concat non è corretta.
- C [-1] la seconda espressione restituisce la stringa "Fondamenti di Informatica",
mentre la prima provoca un errore del compilatore perché l'oggetto della
prima invocazione del metodo concat non è corretta.
- D [0] la prima espressione restituisce la stringa "Fondamenti Informatica di",
mentre la seconda restituisce la stringa "Fondamenti di Informatica".
Domanda 9
Quali delle seguenti affermazioni relative al ciclo
while è errata?
- A [-1] Il corpo del ciclo while può essere eseguito indefinitamente.
- B [-1] Il corpo del ciclo while può non essere mai
eseguito, se la condizione del ciclo risulta falsa.
- C [-1] La condizione del
ciclo while viene valutata prima dell'eventuale
esecuzione del corpo del ciclo.
- D [2] La condizione del ciclo while viene valutata solo
una volta.
Domanda 10
Quale delle seguenti affermazioni relative al ciclo while è vera?
- A [-1] Il ciclo while consente di esprimere solo cicli indefiniti.
- B [-1] Il ciclo while termina sempre.
- C [0] Il ciclo while non si può usare per
fare l'input di una sequenza di dati.
- D [2] Il corpo di un ciclo while potrebbe non essere mai
eseguito.
Domanda 11
Si consideri il seguente metodo:
public static int[] mioMetodo(int[] s) {
int[] v = new int[s.length];
for (int i=0 ; i < s.length; i++)
v[i] = s[i+1];
return v;
}
Una sola delle seguenti affermazioni è vera. Quale?
- A [2] Il metodo genera un errore di esecuzione di tipo
ArrayIndexOutOfBoundsException sull'istruzione v[i] = s[i+1], poichè
l'indice i+1 non è un indice valido.
- B [0] Il metodo restituisce un array v tale che v[i] contiene il valore
dell'elemento di s nella posizione i + 1.
- C [-1] L'array restituito come risultato ha un elemento in meno dell'array passato
come parametro.
- D [-1] L'istruzione v[i] = s[i+1] viene correttamente eseguita tante volte quanto
è il numero restituito da s.length.
Domanda 12
Siano a,b,c tre variabili di tipo int.
L'espressione di tipo boolean !((a!=b) && (a!=c)) restituisce valore vero se:
- A [0] a ha un valore diverso da b e da c.
- B [2] a ha un valore uguale a b oppure uguale a c.
- C [-1] L'espressione è sempre vera indipendentemente dai valori di a,b,c.
- D [-1] L'espressione è sempre falsa indipendentemente dai valori di a,b,c.
Domanda 13
Quale delle seguenti affermazioni relative a == è errata?
- A [-1] == si usa per verificare se un riferimento a un oggetto è null.
- B [0] == restituisce vero se i suoi argomenti sono riferimenti allo stesso oggetto.
- C [2] == restituisce sempre falso se i suoi argomenti non sono di tipo primitivo.
- D [-1] == si usa per confrontare due valori dello stesso tipo primitivo.
Domanda 14
Si consideri il seguente metodo:
public static void cosaFa(int[] v) {
int temp;
for (int i=0; i<(v.length/2); i++) {
temp = v[i];
v[i] = v[v.length - 1 - i];
v[v.length - 1 - i] = temp;
}
}
Qual è il risultato della invocazione del metodo cosaFa su un array
di interi?
- A [2] Viene modificato l'array passato come argomento rovesciando l'ordine degli
elementi.
- B [-1] Viene restituito un array in cui l'ordine degli elementi risulta
rovesciato rispetto all'array passato come argomento.
- C [-1] Viene calcolato un array di valori temporanei senza modificare l'array
passato come argomento.
- D [0] Viene memorizzata la lunghezza dell'array passato come argomento in una
variabile temporanea.
Domanda 15
Le variabili di istanza sono visibili:
- A [2] In tutti i metodi non statici della classe a meno che non vengano mascherate da
dichiarazioni locali.
- B [-1] Soltanto nei costruttori della classe.
- C [-1] Solo nel metodo main.
- D [0] In tutti i metodi static della classe.
Domanda 16
Si consideri il seguente metodo Java.
public static double f(double x, int y){
double z = 1.0;
int k;
if (y<0) k=-y;
else k=y;
for (int i=0; i<k; i++)
z *= x;
if (y<0) return 1/z;
else return z;
}
Una sola delle seguenti affermazioni è vera. Quale?
- A [0] Il metodo calcola x elevato alla -y
- B [2] Il metodo calcola x elevato alla y
- C [0] Il metodo calcola x elevato alla y+1
- D [-2] Il metodo non termina
Domanda 17
Si consideri la seguente espressione Java: !a && b || c.
Una sola delle seguenti affermazioni è vera. Quale?
- A [2] L'espressione è equivalente a: ((!a) && b) || c
- B [0] L'espressione è equivalente a: (!(a && b)) || c
- C [-1] L'espressione è equivalente a: (!a) && (b || c)
- D [-1] L'espressione è equivalente a: !((a && b) || c)
Domanda 18
Si consideri il seguente metodo Java.
public static int f(int[] x, int y){
int c=0;
for (int i=0; i<x.length; i++)
if (x[i]>y) c++;
return c;
}
Una sola delle seguenti affermazioni è vera. Quale?
- A [2] Il metodo restituisce il numero di elementi di x piu' grandi di y
- B [0] Il metodo restituisce l'elemento piu' grande di x che è anche
piu' grande di y
- C [0] Il metodo restituisce l'elemento piu' piccolo di x fra quelli piu'
grandi di y
- D [-2] Il metodo non termina se y è negativo
Domanda 19
Si considerino gli array in Java.
Una sola delle seguenti affermazioni è vera. Quale?
- A [0] Gli array servono per mantenere collezioni di valori
necessariamente di tipo primitivo
- B [2] Una volta creato, non è possibile modificare la dimensione di
un array
- C [-1] La dimensione di un array non può essere zero
- D [-1] Non è possibile passare come parametro un array, a meno che questo
non contenga valori di tipo intero
Domanda 20
Si consideri la seguente espressione Java: a==b, dove a e
b sono riferimenti ad oggetti di tipo String.
Una sola delle seguenti affermazioni è vera. Quale?
- A [0] L'espressione vale true se a e
b sono riferimenti ad oggetti di tipo String che contengono
gli stessi caratteri
- B [2] L'espressione vale true se a e
b contengono lo stesso indirizzo, cioè puntano al medesimo
oggetto String
- C [-1] L'espressione è errata poichè l'operatore == è
applicabile solo a valori di tipo primitivo
- D [-1] L'espressione vale sempre false indipendentemente dal
contenuto di a e
b
Domanda 21
Si consideri il seguente metodo Java:
public static void add(int y) {
this.x += y;
}
Una sola delle seguenti affermazioni è vera. Quale?
- A [2] Il metodo è errato, poichè non è possibile usare
this in un metodo statico
- B [0] Il metodo è corretto, ed incrementa la variabile di
istanza x di y
- C [-1] Il metodo è errato solo se la variabile di istanza x
non è dichiarata di tipo int
- D [-1] Il metodo è corretto se la variabile di istanza x è
di tipo int o long
Domanda 22
Si consideri l'istruzione
if (cond) istr
in Java.
Una sola delle seguenti affermazioni è vera. Quale?
- A [-2] Ripete l'istruzione istr fintantochè la condizione cond è verificata
- B [2] cond deve essere necessariamente una espressione
booleana
- C [0] istr non puo' essere a sua volta una istruzione if
- D [0] istr non puo' essere una istruzione di ciclo
Domanda 23
Una sola delle seguenti affermazioni
riguardanti l'overflow numerico in Java è vera. Quale?
- A [2] Si ha overflow numerico quando il risultato di una operazione aritmetica
è piu' grande del massimo valore rappresentabile mediante il tipo
dei suoi operandi
- B [-1] Si ha overflow numerico quando in un programma si supera il numero
massimo di classi consentite in Java
- C [-1] Diversamente da altri linguaggi, in Java non si ha mai overflow numerico
- D [0] L'overflow numerico si ha quando si assegna un valore
frazionario ad una variabile di tipo intero
Domanda 24
Si considerino la variabili di istanza in Java.
Una sola delle seguenti affermazioni è vera. Quale?
- A [2] Una variabile di istanza viene creata quando viene creato
l'oggetto che la contiene
- B [0] Una volta creata, una variabile di istanza non verra' piu'
distrutta fino alla fine dell'esecuzione del programma
- C [-1] Le variabili di istanza sono accessibili solo nel corpo dei metodi statici
- D [-1] Nessun metodo puo' accedere ad una variabile di istanza privata
Domanda 25
Si considerino le variabili locali in Java.
Una sola delle seguenti affermazioni è vera. Quale?
- A [0] Se un metodo A usa una variabile locale x, nessun'altra
variabile locale con quel nome potra' essere usata in un metodo diverso da
A
- B [-1] Dichiarando public una variabile locale, essa è accessibile
anche in metodi di classi diverse da quella in cui la variabile compare
- C [-1] Dichiarando private una variabile locale, essa sara' accessibile
solo nei metodi della classe in cui la variabile compare
- D [2] Una variabile locale è visibile solo nel metodo in cui essa è
dichiarata
Domanda 26
Si considerino i costruttori in Java.
Una sola delle seguenti affermazioni è vera. Quale?
- A [2] Un costruttore è un metodo speciale che ha lo stesso nome della classe
in cui compare
- B [-1] Vi puo' essere un solo costruttore in ogni classe
- C [-1] Non è possibile scrivere una classe senza almeno un
costruttore
- D [0] Un costruttore restituisce sempre void
Domanda 27
Si ricorda che sia il tipo int che il tipo float sono rappresentati in Java da 32 bit.
Una sola delle seguenti affermazioni è vera. Quale?
- A [2] Il numero di int distinti rappresentabili è uguale al numero di float distinti rappresentabili.
- B [-1] Il numero di int distinti rappresentabili è maggiore del numero di float distinti rappresentabili.
- C [-1] Il numero di int distinti rappresentabili è minore del numero di float distinti rappresentabili.
- D [0] In entrambi i tipi di dato lo zero è rappresentato due volte (positivo e negativo).
Domanda 28
Si consideri il seguente metodo della classe Prova:
public void mioMetodo(int x) {
...
}
Una sola delle seguenti affermazioni è corretta. Quale?
- A [0] Il metodo mioMetodo non può essere in nessun caso reso static.
- B [2] Il metodo mioMetodo può essere reso static mantenendone
intatta la funzionalità realizzata purché gli si aggiunga
un ulteriore parametro formale p di tipo Prova e si rimpiazzi ogni
occorrenza (esplicita ed implicita) di this con p.
- C [-2] Nessun metodo Java può chiamarsi mioMetodo.
- D [0] I metodi che non sono static dovrebbero essere tutti dichiarati private.