Le oltre 130 migliori domande e risposte per interviste Java 2022

Pubblicato: 2021-01-01

Domande e risposte per l'intervista Java

In questo articolo, abbiamo compilato le domande di intervista Java più frequenti. Queste domande ti daranno una conoscenza del tipo di domande che un intervistatore potrebbe farti durante il colloquio per la programmazione Java

Come Fresher, hai appena partecipato a un colloquio o hai intenzione di parteciparvi presto. Una persona in cerca di lavoro di livello base che cerca di far crescere la tua carriera nella programmazione di software, potresti essere nervoso per i tuoi imminenti colloqui . Tutti noi abbiamo quei momenti di panico in cui ci sveniamo e potremmo persino dimenticare cos'è un filo. Lo semplificheremo per te, tutto ciò di cui hai bisogno per farlo fai un respiro profondo e controlla le domande che più probabilmente ti verranno poste.

Non puoi evitare di farti prendere dal panico, ma puoi sicuramente prepararti in modo che quando entri nella stanza delle interviste. Sei fiducioso e sai che puoi gestire qualsiasi cosa l'intervistatore potrebbe lanciarti.

Impara i programmi di ingegneria del software online dalle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.

Ecco un elenco completo di 24 domande di intervista Java con risposte (ultime 2022) che ti aiuteranno a inchiodare quella sicurezza e ad assicurarti di superare l'intervista.

1. In cosa consiste JVM?
JVM, abbreviazione di Java Virtual Machine, è richiesta da qualsiasi sistema per eseguire programmi Java. La sua architettura comprende essenzialmente:
● Classloader: è un sottosistema di JVM e la sua funzione principale è caricare file di classe ogni volta che viene eseguito un programma Java.
● Heap: sono i dati di runtime utilizzati per l'allocazione degli oggetti.
● Area della classe: contiene il livello di classe di ciascun file di classe come variabili statiche, metadati e pool di esecuzione costante.
● Stack: utilizzato per memorizzare variabili temporanee.
● Registro: il registro contiene l'indirizzo dell'istruzione JVM attualmente in esecuzione
● Motore di esecuzione: l'EE è costituito da un processore virtuale, un interprete che esegue le istruzioni dopo aver letto il bytecode e un compilatore JIT che migliora le prestazioni quando la velocità di esecuzione è lenta.
● Java Native Interface: funge da mezzo di comunicazione per interagire con un'altra applicazione sviluppata in C, C++, ecc.

2. Che cos'è la programmazione orientata agli oggetti? Java è un linguaggio orientato agli oggetti?
In sostanza, la programmazione orientata agli oggetti è un paradigma di programmazione che lavora sul concetto di oggetti. In poche parole, gli oggetti sono contenitori: contengono dati sotto forma di campi e codice sotto forma di procedure. Seguendo questa logica, un linguaggio orientato agli oggetti è un linguaggio che lavora su oggetti e procedure.

Poiché Java utilizza 8 tipi di dati primitivi — boolean, byte, char, int, float, long, short, double — che non sono oggetti, Java non può essere considerato un linguaggio orientato agli oggetti al 100%.

3. Cosa intendi per Aggregazione nel contesto di Java?
L'aggregazione è una forma di associazione in cui a ogni oggetto viene assegnato il proprio ciclo di vita. Ma c'è la proprietà in questo e l'oggetto figlio non può appartenere a nessun altro oggetto genitore in alcun modo.

4. Assegna un nome alla superclasse in Java.
Java.lang. Tutti i diversi non primitivi vengono ereditati direttamente o indirettamente da questa classe.

5. Spiegare la differenza tra 'finalmente' e 'finalizzare' in Java?
Usato con il blocco try-catch, il blocco 'finally' viene utilizzato per garantire che un particolare pezzo di codice venga sempre eseguito, anche se l'esecuzione viene generata dal blocco try-catch.

Al contrario, finalize() è un metodo speciale nella classe dell'oggetto. In genere viene eseguito l'override per rilasciare le risorse di sistema quando il valore spazzatura viene raccolto dall'oggetto.

6. Che cos'è una classe interna anonima? In che modo è diverso da una classe interna?
Qualsiasi classe interna locale che non ha nome è nota come classe interna anonima. Poiché non ha alcun nome, è impossibile crearne il costruttore. Estende sempre una classe o implementa un'interfaccia ed è definita e istanziata in una singola istruzione.

Una classe nidificata non statica è chiamata classe interna. Le classi interne sono associate agli oggetti della classe e possono accedere a tutti i metodi e variabili della classe esterna.

7. Che cos'è una classe di sistema?
È una classe principale in Java. Poiché la classe è finale, non possiamo ignorarne il comportamento attraverso l'ereditarietà. Né possiamo istanziare questa classe poiché non fornisce alcun costruttore pubblico. Quindi, tutti i suoi metodi sono statici.

8. Come creare un thread daemon in Java?
Usiamo la classe setDaemon(true) per creare questo thread. Chiamiamo questo metodo prima del metodo start(), altrimenti otteniamo IllegalThreadStateException.

Profilo professionale per sviluppatore di software

9. Java supporta le variabili globali? Perché perché no?
No, Java non supporta le variabili globali. Ciò è dovuto principalmente a due motivi:
● Creano collisioni nello spazio dei nomi.
● Rompono la trasparenza referenziale.

10. Come viene sviluppato un oggetto RMI?
È possibile eseguire i seguenti passaggi per sviluppare un oggetto RMI:
● Definire l'interfaccia
● Implementare l'interfaccia
● Compilare l'interfaccia e le relative implementazioni con il compilatore java
● Compilare l'implementazione del server con il compilatore RMI
● Eseguire il registro RMI
● Eseguire l'applicazione

11. Spiegare le differenze tra time slicing e pianificazione preventiva?
In caso di suddivisione del tempo, un'attività viene eseguita per un intervallo di tempo specificato, noto anche come fetta. Successivamente, entra nella coda pronta, un pool di attività "pronte". Lo scheduler seleziona quindi l'attività successiva da eseguire in base alla priorità e ad altri fattori.

Mentre nella pianificazione preventiva, l'attività con la priorità più alta viene eseguita fino a quando non entra in uno stato morto o di avviso o se si presenta un'altra attività con priorità più alta.

12. Il filo del raccoglitore di rifiuti è che tipo di filo?
È un thread demoniaco.

13. Qual è il ciclo di vita di un thread in Java?
Qualsiasi thread in Java attraversa le seguenti fasi del suo ciclo di vita:
● Nuovo
● Eseguibile
● In esecuzione
● Non eseguibile (bloccato)
● Terminato

14. Indicare i metodi utilizzati durante il processo di deserializzazione e serializzazione.
ObjectInputStream.readObject
Legge il file e deserializza l'oggetto.

ObjectOututStream.writeObject
Serializzare l'oggetto e scrivere l'oggetto serializzato in un file.

15. Cosa sono le variabili volatili e qual è il loro scopo?
Le variabili volatili sono variabili che leggono sempre dalla memoria principale e non dalla memoria cache del thread. Questi vengono generalmente utilizzati durante la sincronizzazione.

16. Cosa sono le classi wrapper in Java?
Tutti i tipi di dati primitivi in ​​Java hanno una classe associata, nota come classi wrapper. Sono note come classi wrapper perché 'avvolgono' il tipo di dati primitivo in un oggetto per la classe. In breve, convertono le primitive Java in oggetti.

17. Come possiamo creare una classe singleton?
Rendendo privato il suo costruttore.

18. Quali sono i metodi importanti di Exception Class in Java?
● stringa getMessage()
● stringa aString()
● vuoto printStackTrace()
● sincronizzato Throwable getCause()
● StackTraceElement[] pubblico getStackTrace()

19. Come possiamo creare un thread in Java?
Possiamo seguire uno dei due modi per creare un thread in Java:
● Estendendo la classe thread

Lo svantaggio di questo metodo è che non possiamo estendere altre classi poiché la classe thread è già stata estesa.
● Implementando l'interfaccia Runnable

20. Spiegare le differenze tra i metodi get() e load().
I metodi get() e load() presentano le seguenti differenze:
● get() restituisce null se l'oggetto non viene trovato, mentre load() genera l'eccezione ObjectNotFound.
● get() restituisce sempre un oggetto reale, mentre load() restituisce un oggetto proxy.
● il metodo get() colpisce sempre il database mentre load() no.
● get() dovrebbe essere utilizzato se non si è sicuri dell'esistenza di un'istanza, mentre load() dovrebbe essere utilizzato se si è sicuri dell'esistenza dell'istanza.

21. Qual è il valore predefinito delle variabili locali?
Non vengono inizializzati su alcun valore predefinito. Né le primitive né i riferimenti a oggetti.

22. Che cos'è Singleton in Java?
È una classe con un'istanza nell'intera applicazione Java. Ad esempio java.lang.Runtime è una classe Singleton. L'obiettivo principale di Singleton è controllare la creazione dell'oggetto mantenendo il costruttore privato.

23. Qual è il metodo statico?

Un metodo statico può essere invocato senza la necessità di creare un'istanza di una classe. Un metodo statico appartiene alla classe piuttosto che un oggetto di una classe. Un metodo statico può accedere al membro dati statico e può modificarne il valore.

24. Qual è l'eccezione?

Eccezioni Condizioni insolite durante il programma. Ciò potrebbe essere dovuto a una logica errata scritta da un input utente o programmatore errato.

25. In parole povere, come definiresti Java?

Java è un portale orientato agli oggetti di alto livello, indipendente dalla piattaforma e offre supporto con prestazioni elevate per la creazione di programmi, applicazioni e siti Web sofisticati. Java è un linguaggio di programmazione generico che consente agli sviluppatori di creare applicazioni con funzionalità avanzate con il loro ambiente WORA (Write Once Run Anywhere). James Arthur Gosling, uno scienziato informatico canadese, ha sviluppato Java nel 1991 ed è popolarmente conosciuto come "Dr Java". Oggi, Java è diventato una base essenziale per il moderno settore IT.

26 . Che cos'è Java String Pool?

Un pool di stringhe in Java è un luogo distinto che ha un pool di stringhe memorizzato tramite la memoria heap Java. Qui, String rappresenta una classe speciale in Java e gli oggetti stringa possono essere creati utilizzando un nuovo operatore o utilizzando valori tra virgolette.
La stringa è immutabile in Java, rendendo quindi fattibile il pool String e quindi l'ulteriore implementazione tramite concetti di internamento di String.

27. Che cos'è una classe di raccolta in Java? Elencare i suoi metodi e interfacce?

Le classi di raccolta Java sono classi speciali, utilizzate esclusivamente con metodi statici che funzionano in modo specifico sulle raccolte restituite. Java Collection per impostazione predefinita eredita una classe e ha due caratteristiche essenziali come:

  • Supportano e operano con algoritmi polimorfici che restituiscono nuove raccolte per ogni specifica raccolta.
  • I metodi nella raccolta Java generano un'eccezione NullPointerException nel caso in cui gli oggetti di classe o le raccolte abbiano un valore Null.

Questi sono rappresentati e dichiarati come Java.util.Collectionclass.

Esistono più di 60 metodi, modificatori e tipi di classi Java Collection. Ecco un elenco dei metodi più importanti in Java Collection Class:

S. No. Modificatore, Metodo e Tipo Descrizione
1. statico <T> booleano addAll() Questo metodo consente l'aggiunta di elementi specifici a una particolare raccolta.
2. statico <T> Coda <T> asLifoQueue() Questo metodo consente di visualizzare la raccolta come Last-in-first-out (LIFO).
3. statico <T> int binarySearch() Questo metodo consente di cercare un oggetto specifico e quindi di restituirlo in un elenco ordinato.
4. statico <E> Raccolta<E> Questo metodo restituisce la vista dinamica da una raccolta particolare.
5. statico <E> Elenco <E> Questo metodo fornisce un ritorno di una visualizzazione typesafe dinamica da un elenco particolare.

Ecco alcuni esempi per Java Collection:
Collezione Java min() Esempio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 importa java.util.* ;  
 	public class CollectionsEsempio {  
 	    public static void main ( Stringa a []){         
 	        List < Integer > list = new ArrayList < Integer >();  
 	        elenco . aggiungere ( 90 );  
 	        elenco . aggiungere ( 80 );  
 	        elenco . aggiungere ( 76 );  
 	        elenco . aggiungere ( 58 );  
 	        elenco . aggiungere ( 12 );  
          Sistema . fuori . println ( "Elemento di valore minimo nella collezione: " + Raccolte . min ( lista ));  
      }  
  } 

L'output sarà:

Elemento Valore Minimo nella collezione: 12

Collezione Java max() Esempio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 importa java.util.* ;  
  public class CollectionsEsempio {  
      public static void main ( Stringa a []){         
          List < Integer > list = new ArrayList < Integer >();  
          elenco . aggiungere ( 90 );  
          elenco . aggiungere ( 80 );  
          elenco . aggiungere ( 76 );  
          elenco . aggiungere ( 58 );  
          elenco . aggiungere ( 12 );  
          Sistema . fuori . println ( "Elemento valore massimo nella collezione: " + Collezioni . max ( lista ));  
      }  
  }

L'output sarà:

Valore massimo elemento nella collezione: 90

28 . Cos'è un servlet?

I servlet sono componenti software Java che aggiungono più funzionalità a un server Java tramite tecnologia, API, interfaccia, classe o qualsiasi distribuzione Web. I servlet vengono eseguiti specificamente su server di applicazioni Web basati su Java e sono in grado di gestire richieste complesse dal server Web. I servlet aggiungono il vantaggio di prestazioni più elevate, robustezza, scalabilità, portabilità e garantiscono la sicurezza delle applicazioni Java.

Processo o esecuzione del servlet:

  • Questo inizia quando un utente invia una richiesta da un browser web.
  • Il server web riceve e poi passa questa richiesta al servlet specifico.
  • Il Servlet elabora quindi questa richiesta per ottenere una risposta specifica con output.
  • Il Servlet invia quindi questa risposta al server web.
  • Quindi il server web ottiene le informazioni che il browser visualizza sullo schermo.

I servlet Java sono dotati di più classi e interfacce come GenericServlet, ServletRequest, Servlet API, HttpServlet, ServeResponse, ecc.

29. Che cos'è Request Dispatcher?

In Servlet, RequestDispatcher funge da interfaccia per definire un oggetto per ricevere richieste dai client da un lato e quindi inviarlo a risorse particolari dall'altro lato (che può essere un servlet, HTML, JSP). Questo RequestDispatcher ha due metodi in generale:

void forward (richiesta ServletRequest, risposta ServletResponse) Ciò consente e inoltra le richieste da qualsiasi servlet alle risorse del server sotto forma di servlet, file HTML o file JSP.
void include (richiesta ServletRequest, risposta ServletResponse) Che ha contenuto per una particolare risorsa sotto forma di una risposta come un file HTML, una pagina JSP o un servlet.

30. Qual è il ciclo di vita di un servlet?

Servlet è un componente software Java che ha la funzione principale di accettare prima la richiesta, quindi elaborare la richiesta e fornire una risposta all'utente in una pagina HTML. Qui Servlet Container gestisce il ciclo di vita di un servlet. Ecco le fasi principali:

  • Caricamento servlet.
  • Quindi inizializzare il servlet.
  • Gestione della richiesta (richiamo del metodo di servizio).
  • Quindi distruggere il Servlet.

Ecco un rapido diagramma che mostra il ciclo di vita di un servlet Java:
Ciclo di vita del servlet

Fonte

  • Caricamento servlet

Il ciclo di vita di Servlet inizia con la fase di caricamento nel container Servlet. Il servlet si carica in uno dei due modi con:

    • Impostazione della servlet come valore integrale positivo o zero.
    • In secondo luogo, questo processo potrebbe subire ritardi, poiché il contenitore seleziona il servlet giusto per gestire la richiesta.

Ora i contenitori caricano prima la classe Servlet e quindi creano un'istanza tramite il costruttore no-argument.

  • servlet di inizializzazione

Il passaggio successivo consiste nell'utilizzare il metodo Servlet.init(ServletConfig) per inizializzare il Servlet, ad esempio l'origine dati JDBC.

  • Gestione della richiesta (Richiamo del metodo di servizio)

Qui il Servlet accetta le richieste del client ed esegue l'operazione richiesta utilizzando il metodo service().

  • Distruggere il Servlet

Ora il contenitore Servlet distrugge il servlet eseguendo e completando compiti specifici e chiamando il metodo destroy() nell'istanza.

31. Quali sono i diversi metodi di gestione delle sessioni nei servlet?

Le sessioni tengono traccia dell'attività dell'utente dopo l'accesso al sito. La gestione delle sessioni fornisce il meccanismo per ottenere informazioni per ogni utente indipendente. Ecco i quattro diversi metodi per la gestione delle sessioni nei servlet:

  • HttpSessione
  • Biscotti
  • Riscrittura URL
  • Campo nascosto HTML

32. Che cos'è un driver JDBC?

Java Database Connectivity (JDBC) agisce qui come un componente software che consente alle applicazioni Java di comunicare con un database.

I driver JDBC hanno i seguenti quattro tipi nell'ambiente:

  • Driver del bridge JDBC-ODBC
  • Driver del protocollo di rete (driver del middleware)
  • Driver del protocollo del database (driver completamente Java)
  • Driver dell'API nativa

33. Che cos'è l'interfaccia di connessione JDBC?

Le connessioni definiscono le sessioni tra il database e le applicazioni Java. L'interfaccia JDBC Connection fa parte solo del pacchetto java.sql e fornisce informazioni sulla sessione per un particolare database. Questi rappresentano più istruzioni SQL per l'esecuzione e risultati nel contesto di un'unica interfaccia di connessione. Ecco i metodi principali per l'interfaccia Connections:

  • createStatement() : per creare un oggetto istruzione specifico per l'aggiunta di istruzioni SQL al database particolare.
  • setAutoCommit(boolean status) : per definire la connessione di una modalità di commit a una direttiva false o true.
  • commit() : Ciò apporta tutte le modifiche dall'ultimo commit e rilascia ulteriormente qualsiasi database attualmente contenuto dall'oggetto Connection specifico.
  • rollback() : che annulla o ripristina tutte le modifiche apportate nella transazione passata o corrente e rilascia anche il database attualmente contenuto nell'oggetto connessione.
  • close() : che termina o chiude la connessione corrente e rilascia o cancella istantaneamente anche le risorse JDBC.

34. Nominare i diversi moduli del framework Spring?

Ci sono più moduli nel framework Spring:

  • Modulo web
  • Modulo Struts
  • Modulo servlet
  • Modulo contenitore principale
  • Programmazione orientata agli aspetti (AOP)
  • Modulo Contesto applicativo
  • Modulo quadro MVC
  • Astrazione JDBC e modulo DAO
  • modulo OXM
  • Modulo Linguaggio di Espressione
  • Modulo transazione
  • Modulo Java Messaging Service (JMS).
  • Modulo di integrazione ORM

Questi moduli sono presenti in gruppi:

moduli a molla

Fonte

35. Spiega Bean in Spring ed elenca i diversi ambiti di Spring Bean.

I fagioli sono uno dei concetti fondamentali del framework Spring nella gestione efficiente delle strutture. In una semplice definizione, Spring Bean rappresenta i contenitori IoC che gestiscono l'oggetto che costituisce la spina dorsale delle applicazioni.

Scopi di Spring Bean:

Gli ambiti svolgono un ruolo cruciale nell'uso efficace dei fagioli primaverili nell'applicazione. Scope ci aiuta a comprendere il ciclo di vita dello Spring Bean e hanno i seguenti tipi .

S. No. Ambito e descrizione
1. Singleton : per impostazione predefinita, l'ambito del bean Spring ha un ambito singleton che rappresenta solo un'istanza per il contenitore Spring IOC. Questo stesso oggetto viene condiviso per ogni richiesta.
2. Prototipo – In questo, verrà chiamata e creata una nuova istanza per ogni singola definizione di bean, ogni volta che viene effettuata una richiesta per un bean specifico.
3. Richiesta : in questo ambito, verrà chiamato e creato un singolo bean per ogni richiesta HTTP per quel bean specifico.
4. Session : questo ambito definisce l'utilizzo del singolo bean per un ciclo di vita in una particolare sessione HTTP globale.
5. Sessione globale : questo ambito consente un singolo bean per il ciclo di vita particolare per l'implementazione nella sessione HTTP globale.

Nota: gli ultimi tre ambiti sono applicabili solo in Spring ApplicationContext sensibile al Web.

Da leggere: perché Java è così popolare tra gli sviluppatori

36. Spiegare il ruolo di DispatcherServlet e ContextLoaderListener.

Durante la configurazione della configurazione Spring MVC basata su XML nel file web.xml, due dichiarazioni di DispatcherServlet e ContextLoaderListener svolgono un ruolo essenziale nel completare lo scopo del framework.

  • DispatcherServlet –

DispatcherServlet ha lo scopo principale di gestire le richieste Web in entrata per specifici modelli URI configurati corrispondenti. DispatcherServlet funge da front controller per il core dell'applicazione Spring MVC e carica in modo specifico il file di configurazione e quindi inizializza i bean corretti presenti in quel file. E quando le annotazioni sono abilitate, può anche controllare e scansionare le configurazioni e i pacchetti per tutti quelli annotati con @Repository, @Component, @Service o @Controller.

  • ContextLoaderListener –

ContextLoaderListener qui funge da listener di richieste per l'avvio e l'arresto di WebApplicationContext radice. Quindi, crea e condivide il contesto dell'applicazione radice con i contesti figlio dai contesti DispatcherServlet. Le applicazioni possono utilizzare solo una voce per ContextLoaderListener nel web.xml.

37. Spiega l'architettura di Hibernate.

Hibernate definisce un'architettura a più livelli che consente agli utenti di operare ed eseguire senza conoscere le API sottostanti, ovvero, Hibernate funge da framework per costruire e sviluppare la logica di persistenza indipendente dal software del database.

L'architettura di ibernazione ha i quattro livelli principali con:

  • Livello dell'applicazione Java
  • Livello di database
  • Livello API di back-end
  • Ibernazione del livello della struttura

Elementi dell'architettura ibernata

Ci sono diversi aspetti e portata per l'architettura Hibernate. Per saperne di più su di loro, devi conoscere gli elementi dell'architettura Hibernate.

  • SessionFactory: Sessionfactory fornisce il metodo per creare oggetti sessione che sono presenti solo nel pacchetto org.hiberate. È di natura thread-safe, immutabile e conserva e preserva la cache di secondo livello dei dati.
  • Session: gli oggetti Session forniscono l'interfaccia per il software Connection e Database tramite il framework di ibernazione.
  • Transazione: interfaccia che aiuta la gestione delle transazioni e consente una modifica nel database.
  • ConnectiveProvider: una parte delle connessioni JDBC, separa l'applicazione principale da DataSource o DriverManager.
  • TransactionFactory: rappresenta la fabbrica della transazione.

38. Che cos'è una gerarchia di eccezioni in Java?

L'eccezione definisce gli eventi indesiderati che si presentano durante l'esecuzione o l'esecuzione del programma. L'eccezione interrompe il flusso regolare del programma.
La gerarchia delle eccezioni fa parte della classe java.lang.Exception e rientra solo nella classe primaria Throwable. Un'altra sottoclasse ' Errore ' rappresenta anche la classe Throwable in Java. Sebbene gli errori siano condizioni insolite in caso di errore, non vengono comunque gestiti o cancellati con i programmi Java.
Esistono due sottoclassi principali per una gerarchia eccezionale in Java con la classe RuntimeException e la classe IOCException.

39. Che cos'è la sincronizzazione?

La sincronizzazione in Java definisce la capacità di gestire e controllare l'accesso di più thread a una particolare risorsa. In modo che un thread possa accedere a una risorsa specifica in questo momento. Qui, Java consente lo sviluppo di thread e quindi la sincronizzazione delle attività tramite i blocchi di sincronizzazione.

Questi blocchi sincronizzati consentono l'esecuzione di un solo thread per un determinato periodo di tempo e bloccano gli altri thread fino a quando il thread corrente non esce nel blocco. Qui il concetto di monitor è cruciale nell'implementazione della sincronizzazione in Java. Una volta che il thread entra in una fase di blocco, viene chiamato per entrare nel monitor. Pertanto, bloccando tutti gli altri thread a meno che il primo thread non sia uscito dal monitor.

40. Quali sono le caratteristiche che rendono Java uno dei migliori linguaggi di programmazione?

Ecco le principali caratteristiche che rendono Java per iniziare la tua curva di apprendimento nel mondo della programmazione:

  • Semplicità: Java è abbastanza semplice da imparare e scrivere. La sintassi Java è in C++ che consente agli sviluppatori di scrivere programmi senza problemi.
  • OOPS: Java si basa sul sistema di programmazione orientato agli oggetti (OOPS), consentendo così di costruire codice in più tipi di oggetti con dati e comportamenti diversi.
  • Dinamico: Java è un linguaggio dinamico completo che supporta il caricamento di classi dinamiche quando e dove richiesto. E ha anche un supporto completo per il linguaggio del codice nativo come C, C++, ecc.
  • Indipendente dalla piattaforma: Java supporta anche un linguaggio di programmazione esclusivo e indipendente dalla piattaforma, consentendo così agli sviluppatori di eseguire il proprio programma solo sulla loro piattaforma.
  • Portabilità: Java ha un approccio una volta scritto ovunque che consente al codice di essere eseguito su qualsiasi piattaforma.
  • Sicurezza: seguendo il concetto di ByteCode, la gestione delle eccezioni e il mancato utilizzo di puntatori espliciti, Java è un ambiente altamente protetto.

Java è anche architetto neutrale senza alcuna dipendenza da alcuna architettura. Una forte gestione della memoria e la raccolta automatizzata dei rifiuti aggiungono più robustezza al suo ambiente.

41. Cosa fa sì che Java consenta prestazioni elevate?

L'uso del compilatore Just in Time (JIT) nella sua architettura rende Java uno dei linguaggi di programmazione ad alte prestazioni, poiché trasforma le istruzioni in bytecode.

42. Assegna un nome agli IDE Java più popolari.

Ci sono molti IDE disponibili nel settore per Java. Ecco i primi cinque IDE Java che puoi utilizzare per iniziare a imparare questo linguaggio di programmazione oggi:

  • Eclisse
  • fagioli di rete
  • Intelli J
  • Sviluppatore J
  • La mia Eclipse

43. Definire le principali differenze tra Java e altre piattaforme?

Due differenze principali che distinguono Java dalle altre piattaforme sono:

  • Java è principalmente una piattaforma basata su software, mentre altre possono essere piattaforme basate su software o hardware.
  • Java viene eseguito o eseguito su qualsiasi piattaforma hardware, mentre altre richiedono requisiti hardware specifici.

44. Cosa fa sì che Java abbia la sua natura di "scrivi una volta ed esegui ovunque" (WORA)?

Bene, la risposta in una sola parola è Bytecode. Il compilatore Java converte tutti i programmi Java in uno specifico Byte Code che funge da linguaggio mediatore tra il codice macchina e il codice sorgente. ByteCode può essere eseguito su qualsiasi computer e non ha alcuna dipendenza dalla piattaforma.

45. Spiegare i diversi tipi di identificatori di accesso utilizzati in Java.

Nel linguaggio di programmazione Java, gli identificatori di accesso rappresentano l'ambito esatto per una classe, una variabile o un metodo. Esistono quattro identificatori di accesso principali:

  • Le variabili, i metodi o le classi definiti pubblici sono accessibili in qualsiasi metodo o classe.
  • L'identificatore di accesso protetto definisce l'ambito di una classe, un metodo e una variabile per lo stesso pacchetto, all'interno della stessa classe o per quella particolare sottoclasse di classe.
  • L' ambito predefinito è disponibile per tutte le classi, variabili e metodi presenti con accesso solo al pacchetto.
  • L' ambito Private mantiene l'accesso di classe, variabili e metodi solo a una classe particolare.

Leggi: Progetto Java Swing

46. ​​Spiegare il significato dei pacchetti in Java insieme ai loro vantaggi.

I pacchetti sono un meccanismo di raggruppamento per tipi simili (interfaccia, classi, annotazioni ed enumerazioni) garantendo la protezione delle risorse e una gestione completa dei nomi.

Ecco i vantaggi dei pacchetti in Java:

  • I pacchetti ci aiutano a prevenire conflitti di denominazione quando le classi con lo stesso nome esistono in due pacchetti diversi.
  • I pacchetti aiutano a rendere sistematico il controllo degli accessi.
  • Costruisci classi nascoste per essere utilizzate dai pacchetti.
  • Aiuta a individuare classi correlate per il pacchetto.

47. Come definiresti Costruttore in Java?

I costruttori sono uno speciale blocco di codici che inizializza un oggetto al momento della creazione. Sebbene abbia una somiglianza con il metodo di istanza, i costruttori non sono ancora il metodo, poiché non hanno alcun tipo di ritorno esplicito. Quindi ogni volta che un oggetto viene creato nel sistema, c'è un costruttore chiamato per l'esecuzione. Se non è stato definito alcun costruttore, il compilatore utilizza un costruttore predefinito.

Ecco una semplice presentazione di Constructor in Java:

 1
2
3
4
5
6
 classe pubblica MyClass {
   //Questo è il costruttore
   La mia classe (){
   }
   ..
}

48. Quali sono i diversi tipi di costruttori utilizzati in Java?

Esistono tre tipi di costruttori utilizzati in Java:

  • Costruttore predefinito: quando uno sviluppatore non utilizza un costruttore, il compilatore Java aggiunge un costruttore predefinito più specifico esistente nel file .class.
  • Costruttore senza argomenti: in questo caso, non ci sono argomenti nel costruttore e il compilatore non accetta alcun parametro, poiché il metodo della variabile di istanza viene inizializzato con valori fissi specifici.
  • Costruttore parametrizzato: in questo caso, uno o più parametri sono presenti nel costruttore scritto tra parentesi solo dell'elemento principale.

49. Quali sono le differenze tra costruttori e metodi?

Le principali differenze nei costruttori e nei metodi sono:

  • Scopo: l'obiettivo dei costruttori è inizializzare l'oggetto di una classe mentre il metodo esegue attività specifiche sull'esecuzione del codice.
  • Il metodo ha tipi restituiti mentre i costruttori no.
  • In Methods sono presenti abstract, static, final e sync mentre nei costruttori non è possibile creare procedure specifiche.

50. Spiegare il significato di Variabile locale e Variabile di istanza?

  • Le variabili locali sono presenti nel metodo e l'ambito esiste solo all'interno del metodo.
  • Le variabili di istanza sono presenti e definite nella classe solo con il loro ambito all'interno della classe.

51. Spiega il significato di Class in Java?

In Java, tutti i codici, variabili e metodi sono definiti nella classe.

  • Le variabili rappresentano gli attributi che definiscono lo stato di una particolare classe.
  • I metodi rappresentano il punto in cui la logica aziendale ha effetto. I metodi includono una serie di dichiarazioni e istruzioni per soddisfare i requisiti.

Ecco un semplice esempio per una classe in Java :

 1
2
3
4
5
6
7
 public class Addition { //Dichiarazione del nome della classe
int x = 10 ; //Dichiarazione di variabili
int y = 10 ;
public void add (){ //Dichiarazione del metodo
int z = a + b ;
}
}

52. Spiega il significato di Object in Java?

Gli oggetti sono definiti come un'istanza di una classe solo con stato e comportamento specifici. Ad esempio, un cane con uno stato specifico di nome, razza e colore mentre il comportamento include abbaiare, scodinzolare, ecc. Quindi, ogni volta che JVM legge una qualsiasi parola chiave new(), verrà creata un'istanza corrispondente. Un oggetto deve essere prima dichiarato, quindi istanziato e infine inizializzato per essere eseguito ulteriormente.

53. Definire il valore predefinito per il tipo di dati byte in linguaggio Java.

Per il tipo di dati Byte, il valore predefinito è 0.

54. Perché il tipo di dati byte è più vantaggioso in Java?

Poiché il tipo di dati byte è quasi quattro volte più piccolo di un numero intero, può archiviare più spazio per array di grandi dimensioni.

55. Spiegare i concetti di OOP in Java.

Gli OOP, sono i concetti fondamentali del linguaggio di programmazione Java. Questi includono l'astrazione, il polimorfismo, l'ereditarietà e l'incapsulamento. I concetti di Java OOP consentono agli sviluppatori di creare variabili, metodi e componenti che consentono loro di riutilizzarli in modo personalizzato mantenendo la sicurezza.

56. Spiegare il significato di Eredità.

In Java, l'ereditarietà è un meccanismo specifico che consente a una classe di acquisire le proprietà (con campi e metodi) di un'altra classe. L'ereditarietà è uno dei concetti di base degli OOP Java.

L'ereditarietà consente di costruire nuove classi, aggiungere più campi e metodi alle classi esistenti per riutilizzarle in qualsiasi modo.

  • Una sottoclasse è quella che eredita le proprietà dell'altra classe.
  • La superclasse è quella le cui proprietà vengono ereditate.

57. Spiegare i concetti di Encapsulation in Java?

In quanto uno dei concetti primari di Java OOPs, l'incapsulamento consente il wrapping di dati e codice all'interno di una singola unità. L'incapsulamento è anche noto come nascondere i dati, con le variabili di una classe specifica nascoste a tutte le altre classi e accessibili solo con i metodi della classe esistente.

Le due cose essenziali per ottenere l'incapsulamento in Java sono:

  • Dichiarazione delle variabili di una classe specifica come private.
  • Sfruttare i metodi pubblici setter e getter per apportare modifiche e visualizzare i valori delle variabili.

58. Spiegare i concetti di Polimorfismo.

Il polimorfismo in Java consente agli sviluppatori di eseguire una singola attività in più modi. Esistono due tipi di polimorfismo in Java con Runtime e Compile time. È possibile utilizzare metodi di sovrascrittura e sovraccarico per utilizzare Polymorphism in Java.

59. Spiegare il significato di interfaccia.

In Java, non possiamo ottenere eredità multiple. Qui, l'interfaccia gioca un ruolo cruciale nel superare questo problema per ottenere l'astrazione, aiutare le eredità multiple e supportare anche l'accoppiamento libero. Ora abbiamo un metodo predefinito, statico e privato nell'interfaccia con gli ultimi aggiornamenti Java.

60. Cosa si intende per classe astratta?

Le classi astratte sono costruite con una specifica parola chiave astratta in Java. Rappresentano sia metodi astratti che non astratti.

61. Spiega la classe di astrazione in Java?

L'astrazione è una delle proprietà essenziali per nascondere le informazioni di implementazione all'utente e quindi rappresentare solo le funzioni dell'utente. For instance, when you send an SMS from one person to another person. The user gets to know only the message and number while the backend process remains hidden.

You can achieve abstraction in Java using the following two ways:

  • Abstract Class (0 to 100%)
  • Interface (100%)

62. Explain the difference between Abstraction and Encapsulation in Java.

Here are the main differences:

Astrazione Incapsulamento
Abstraction aims to gain information. Encapsulation's main aim is to contain or procure information.
In the abstraction process, issues or problems are handled at the interface/ design level. In Encapsulation, problems are handled at a specific implementation level.
Abstraction aids in hiding unwanted information. Encapsulation method applies hiding data within a single unit.
Implemented with interfaces and abstract classes. Implemented with a particular access modifier (public, private, and protected).
Use abstract classes and interfaces to hide complexities. Use getters and setters to hide data.
Objects that extend to abstraction must be encapsulated. An object for encapsulation must not be abstracted.

63. Explain the differences between Abstract class and interface.

Abstract Class Interfaccia
Abstract Class comes with a default constructor. The interface doesn't have a constructor. So, no further process.
Uses both Abstract and Non-Abstract methods. Only use Abstract methods.
Classes that must extend for Abstract class need only abstract methods throughout their sub-class. Classes that extend to interface must provide implementation across all the methods.
These include instance variables. The interface presents constants only.

64. Explain the main differences between Array and Array List.

Vettore Array List
The size needs to be defined for the declaring array.

String[] name = new String[5]

No size requirements; and modifies dynamically.

ArrayList name = new ArrayList

You must specify an index for putting an object inside the array.

name[1] = “dog”

There are no index requirements.

name.add(“dog”)

Arrays are not parameterised. From Java 5.0 onwards, ArrayLists have a specific parameterised type.

65. Explain the difference between static method and instance method.

Static or Class Method Instance Method
You must declare a method static for a static method. All methods with declaration as static come under Instance method only.
No requirements for creating objects in the Static method. The object is a must for calling the instance method.
You cannot access Instance or Non-static methods in the static context. You can access both static and non-static in the instance method.

66. How to make Constructors static?

Constructors invoked with the object, and static context is part of the class, not the object. Hence, constructors cannot be static and show compiler error if run or executed.

67. Explain the use of 'this' keyword in Java?

In Java, 'this' keyword represents a specific reference on the current object. There are multiple uses for this keyword for referring to the current class properties from a variable, constructors, methods, and more. You can also pass this as an argument within constructors or methods. You can also fetch this as a return value from the current class instance. You can also refer to this as a static context.

Leggi anche: Come codificare, compilare ed eseguire progetti Java

68. What is a classloader in Java? What are the different types of ClassLoaders in Java?

Java Classloader's main function is to dynamically load all classes into the Java Virtual Machine (JVM). ClassLoaders are part of the JRE only. So every time we run a Java program, classloader loads the classes to execute this program. A single ClassLoader loads only a specific class on requirements and uses getClassLoader() method to specify the class. These classes are loaded by calling their names, and in case these are not found then it retrieves or throws a ClassNotFoundException or NoClassDefFoundError.

Java ClassLoader uses three principles in performing tasks with delegation, uniqueness, and visibility.
There are three different types of Java ClassLoader:

  • BootStrap ClassLoader:

BootStrap ClassLoader represents the parent or superclass for extension classloader and all other classloaders. It has machine code that loads the pure first Java ClassLoader and takes classes from the rt.jar and also known as Primordial ClassLoader.

  • Extension ClassLoader:

Extension ClassLoader represents the child classloader for the superclass or BootStrap ClassLoader. It loads core java classes from jre/lib/ext , ie, JDK extension library.

  • System ClassLoader:

Application or System ClassLoader are further child classes of Extension ClassLoader. It takes and loads a file from the current directory for the program that you can customise with the 'classpath' switch.

69. Explain the meaning of Java Applet.

Java Applet is a program that executes or runs in the web browser only. Applets are specifically designed to function and embed with HTML web pages. Applets have the capability to function full Java applications with the entire use of Java API. JVM is a must requirement to view an applet on the browser. Applet extends with the use of java.applet.Applet class.

70. What are the types of Applets?

Based on location, there are two types of Java applets as Local Applets that are stored on the same computer or system. The Remote Applets that have files on remote systems.

71 What are immutable objects in Java?

In Java, gli oggetti immutabili sono quelli il cui stato non cambia dopo che è stato creato. Gli oggetti immutabili sono ideali per applicazioni multi-thread che consentono di condividere i thread evitando la sincronizzazione. Gli oggetti immutabili sono preferiti per la creazione di codice semplice, valido e affidabile da abbinare a una strategia efficace.

72. Cosa intendi per JRE (Java Runtime Environment)?

Java Runtime Environment è il livello software che fornisce supporto per i requisiti minimi per eseguire programmi Java su una macchina. Insieme a JDK e JRE, questi tre costituiscono la base per l'esecuzione e lo sviluppo di programmi Java su una macchina specifica.

73. Di cosa fa parte un JDK?

Java Development Kit (JDK) è uno dei principali pacchetti tecnologici essenziali per l'esecuzione di programmi Java. Può essere l'implementazione da una qualsiasi delle piattaforme Java, Standard Edition, Micro o Enterprise Edition sviluppate da Oracle per la creazione di applicazioni su Windows, Linux o macOS.

74. Che cos'è una Java Virtual Machine (JVM)?

Java Virtual Machine (JVM) è uno dei tre requisiti fondamentali per l'esecuzione e l'esecuzione di programmi Java insieme a JDK e JRE. JVM ha due funzioni principali; in primo luogo, per consentire ai programmi Java di funzionare senza problemi su qualsiasi macchina o sistema e in secondo luogo per ottimizzare la memoria per fornire prestazioni.

75.Quali sono le differenze tra JDK, JRE e JVM?

JVM
JRE
JDK
macchina virtuale Java Ambiente di runtime Java Kit di sviluppo Java
Dipendente dalla piattaforma con diverse opzioni software e hardware disponibili. Livello software che fornisce supporto per i requisiti minimi per eseguire programmi Java su una macchina.

edizione standard

Edizione aziendale

Microedizione

Tre nozioni come:

  • Specifica
  • Implementazione
  • Esempio
Set di librerie + file che potenziano JVM in runtime. JRE + strumenti di sviluppo
Fornisce l'ambiente di runtime per l'esecuzione. JRE rappresenta l'implementazione di JVM. Ambiente di sviluppo software.

76. Quanti tipi di aree di memoria ci sono in JVM?

Esistono diversi tipi di aree di memoria in JVM:

  • Area della classe: questa memoria memorizza le strutture pre-classe con il campo, il pool, i dati del metodo e il codice.
  • Heap sta per memoria di runtime allocata in modo specifico agli oggetti.
  • Stack rappresenta la memoria del frame con una variabile locale, risultati parziali, thread e un frame per ogni metodo.
  • Il registro del contatore del programma memorizza le informazioni per l'istruzione corrente con l'esecuzione della macchina virtuale Java.
  • Stack metodo nativo memorizza tutti i metodi nativi attuali utilizzati nelle applicazioni correnti.

77. Che cos'è l'associazione dati in Java?

L'associazione dati rappresenta le connessioni tra classe e metodo, campo, variabile, costruttori o corpo di un metodo. Java può gestire il data binding sia in modo statico che dinamico.

78. Quali sono i diversi tipi di data binding in Java?

Esistono due tipi cruciali di data binding in Java.

  • L'associazione statica avviene in fase di compilazione utilizzando metodi statici, finali e privati; noto anche come rilegatura anticipata.
  • Dynamic Binding si presenta in fase di esecuzione senza informazioni esatte note sul metodo corretto durante la fase di compilazione.

79. Che cos'è un socket Java?

I socket aiutano a costruire meccanismi di comunicazione dai due computer tramite TCP. Le prese sono idealmente più sufficienti e flessibili per le comunicazioni.

80. Spiega la differenza tra Path e Classpath.

Sia il percorso che il percorso di classe rappresentano variabili di ambiente locali. Il percorso fornisce il software per individuare i file eseguibili mentre ClassPath specifica la posizione per i file .class nel sistema.

81. Esiste un metodo astratto senza l'uso della classe astratta?

No, affinché un metodo astratto esista in una classe, deve essere una classe astratta.

82. Qual è il processo per creare una classe di sola lettura in Java?

In Java, puoi creare una classe di sola lettura mantenendo tutti i campi privati. Questa specifica classe di sola lettura avrà solo metodi getter che restituiscono proprietà private. Non consente di modificare o cambiare questa proprietà in quanto non è disponibile alcun metodo setter.

 1
2
3
4
5
6
7
8
9
 //Una classe di sola lettura in Java
studente di classe pubblica {    
//membro privato dei dati
private String Institute = "MKG" ;    
//metodo getter per l'istituto
public String getInstitute (){    
istituto di ritorno ;    
}    
}

83. Qual è il processo per creare una classe di sola scrittura in Java?

In Java, puoi anche creare una classe di sola scrittura mantenendo tutti i campi privati ​​con l'implementazione solo dei metodi setter.

 1
2
3
4
5
6
7
8
9
 // Una classe di sola scrittura in Java
studente di classe pubblica {    
//membro privato dei dati
istituto d'archi privato ;    
//metodo setter per l'istituto
public void setInstitute ( String Institute ){    
questo . istituto = istituto ;    
}    
}

84. Spiega come accedere a una classe in un'altra classe in Java?

In Java, ci sono due modi per accedere a una classe in un'altra classe come:

  • Usando il nome specifico: possiamo accedere a una classe particolare da un pacchetto diverso usando il nome completo o importare quel pacchetto che contiene una classe specifica.
  • Usando il percorso relativo: Allo stesso modo, possiamo anche usare il percorso relativo per quel pacchetto con una classe specifica.

85. Che cos'è la gestione delle eccezioni?

La gestione delle eccezioni rappresenta il meccanismo per gestire l'eccezione o le condizioni anomale durante gli errori di runtime per mantenere il normale flusso dell'applicazione. Esistono tre diversi tipi di eccezioni Java con eccezione verificata, eccezione non verificata ed errore.

86. Spiega la differenza tra l'eccezione verificata e l'eccezione non verificata.

  • Le eccezioni controllate sono classi che estendono ulteriormente le classi lanciabili ad eccezione di RuntimeException come SQLException, IOException, ecc. Le eccezioni controllate vengono gestite solo durante la fase di compilazione.
  • Le eccezioni non selezionate sono classi che estendono RuntimeException come NullPointerException, ArithmeticException e così via e non vengono gestite durante la fase di compilazione.

87. Qual è la classe base per Exception and Error?

Qui, la classe Throwable rappresenta la classe base per Exception ed Error.

88. Citare la parola chiave per la gestione delle eccezioni in Java.

Esistono cinque parole chiave per la gestione delle eccezioni in Java :

Parola chiave Descrizione
Tentativo Questo blocco try definisce il blocco per inserire il codice di esecuzione. Questo blocco try è generalmente seguito dall'uso di catch o finalmente. Quindi, non possono essere usati da soli.
presa L'obiettivo principale di Catch block è gestire l'eccezione. Devi usarlo in combinazione con try block e infine nella fase successiva.
finalmente Infine, il blocco controlla il codice importante del programma che controlla se l'esecuzione è stata eseguita o meno.
gettare Lo scopo principale della parola chiave throw è generare un'eccezione dal programma.
lancia La parola chiave throws viene utilizzata principalmente per dichiarare eccezioni e non per generare un'eccezione. Fornisce informazioni sull'occorrenza per l'eccezione e viene applicato con una firma del metodo.

89. Spiega l'importanza del blocco definitivo.

In questo caso, il blocco definitivo ha un'importanza cruciale per il buon funzionamento del programma. Viene sempre eseguito indipendentemente dal fatto che l'eccezione venga gestita o meno. Infine, il blocco arriva dopo il blocco try o catch. Nella JVM, il sistema eseguirà sempre il blocco finally prima di terminare o chiudere un file. Per ogni blocco try presente, possono esserci zero o più blocchi catch, tuttavia può esserci solo un blocco finale.

90. È possibile eseguire un blocco finally senza un blocco catch?

Sì, un blocco finally può essere eseguito seguito rispettivamente da un blocco try o catch.

91. Ci sono casi di blocco definitivo non esistente?

Infine, il blocco non viene eseguito o eseguito nel caso in cui il programma esista già o provochi un errore fatale per l'interruzione del processo.

92. Spiega le principali differenze tra lanci e lanci.

parola chiave lancia

lancia la parola chiave

Genera un'eccezione. Dichiara un'eccezione.
Le eccezioni selezionate non possono propagarsi solo con throw. Le eccezioni controllate possono propagarsi con i throw.
È seguito da un'istanza. È seguito da una classe.
Viene utilizzato solo nel metodo. Viene utilizzato con una firma di metodo specifica.
Non ci sono possibilità per più eccezioni. Mentre in questa procedura possono essere dichiarate più eccezioni.

93. Esiste la possibilità che un'eccezione venga rigettata?

Sì, se esiste un'eccezione, può essere generata di nuovo.

94. Spiegare sulla propagazione delle eccezioni.

Il processo di eccezione all'interno della procedura di gestione è noto come propagazione dell'eccezione. Ad esempio, un'eccezione viene prima gestita in cima allo stack e quindi se non viene rilevata, l'eccezione passa al metodo precedente e, in caso contrario, scende ulteriormente fino a quando l'eccezione viene catturata o raggiunge il fondo della pila. Le eccezioni selezionate per impostazione predefinita non hanno propagazione.

95. Spiega il significato di thread in Java.

In Java, il modo o il flusso di esecuzione è noto come thread. Quindi, ogni programma contiene un thread chiamato thread principale creato dalla JVM. Gli sviluppatori hanno il potere di definire i loro thread personalizzati aggiungendo ed estendendo la classe Thread tramite l'interfaccia.

96. Spiegare il significato del pool di thread.

Il pool di thread Java è un gruppo di thread multipli in attesa continua di attività allocate. Qui i pool di thread funzionano sotto il provider di servizi che estrae un thread da questo pool e quindi assegna loro l'attività per un lavoro specifico. Il pool di thread aggiunge più prestazioni e stabilità al sistema.

97. Spiega la differenza tra String e StringBuffer.

Corda

StringBuffer

La classe String è di natura immutabile. La classe StringBuffer, d'altra parte, è mutabile.
Le corde sono lente. StringBuffer altrimenti è abbastanza veloce.
Questi consumano più memoria per la creazione di una nuova istanza. Questi consumano meno memoria con le stringhe concat.
Le stringhe consentono il confronto del suo contenuto, poiché sovrascrive il metodo equals() della classe Object. Considerando che la classe StringBuffer non può sovrascrivere il metodo equals() dalla classe Object.

98. Spiegare la differenza tra StringBuffer e StringBuilder.

StringBuffer

Costruttore di stringhe

È sincronizzato con sicurezza ai thread. Non è sincronizzato senza sicurezza per i thread.
In questo, due thread non hanno un metodo di chiamata. In questo, due thread possono avere metodi di chiamata senza problemi.
Inferiore o meno efficiente di StringBuilder. Più efficiente di StringBuffer.

99. Qual è il modo per creare una classe immutabile in Java?

In Java, puoi creare una classe immutabile dichiarando una classe finale con tutti i suoi membri come finale. Facciamo un esempio per capire questo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 classe finale pubblica Dipendente {  
 	numero di sicurezza della stringa finale ;  
 	  
 	dipendente pubblico ( String securityNumber ){  
 	questo . numero di sicurezza = numero di sicurezza ;  
 	}  
 	  
 	public String getSecurityNumber (){  
 	numero di sicurezza di ritorno ;  
  }  
    
  }

99. Cosa sono le classi interne?

Le classi Java Inner sono definite e dichiarate all'interno di un'interfaccia o di una classe. Le classi interne consentono al sistema di raggruppare classi e interfacce logicamente rendendole più leggibili e facili da manutenere. Inoltre, queste classi possono accedere a tutti i membri della classe esterna con metodi e membri di dati privati.

100. Quali sono i principali vantaggi e svantaggi dell'utilizzo delle classi Java Inner?

I principali vantaggi per le classi interne Java includono:

  • Accessibilità a tutti i membri delle classi esterne.
  • Meno codice da scrivere.
  • Più manutenzione e codice leggibile.

I principali svantaggi per le classi interne Java includono:

  • Meno supporto dall'IDE.
  • Un numero elevato di classi totali.

101. Definire i tipi di classi interne nel linguaggio di programmazione Java?

Le classi interne hanno tre tipi principali:

  • Membro Classe interna che specifica una classe all'interno della classe utilizzando il metodo esterno.
  • Classe interna anonima per estendere la classe o specificare l'implementazione di un'interfaccia.
  • Classe interna locale per creare una classe all'interno del metodo.

102. Definire una classe nidificata.

Le classi nidificate sono definite o dichiarate solo all'interno di una classe o interfaccia. Una classe nidificata può accedere in modo specifico a tutti i membri della classe esterna con metodi e anche membri di dati privati. Ecco una semplice sintassi di una classe nidificata:

 1
2
3
4
5
6
 classe Java_Outer_class {    
 	 //codice
 	 classe Java_Nested_class {    
 	  //codice
 	 }    
 	}

103. Puoi spiegare la differenza tra classi interne e classi nidificate?

Tutte le classi interne sono definite come classi nidificate non statiche. Quindi, le classi interne fanno parte solo delle classi nidificate.

104. Come definiresti il ​​significato di Raccolte in Java?

Le raccolte in Java sono un gruppo di più oggetti che si presentano come un'unica unità; noto principalmente come Collezioni di oggetti. Sono anche chiamati Collection Framework o architettura che fornisce spazio di archiviazione per gli oggetti e manipola ulteriormente il design per le modifiche.

Ecco le principali funzioni svolte dalle Java Collection:

  • Ordinamento
  • Ricerca
  • Inserimento
  • Manipolazione
  • Cancellazione

Ci sono molte interfacce e classi che fanno parte delle raccolte.

105. Quali interfacce e classi sono disponibili nelle raccolte?

Di seguito è riportato l'elenco delle interfacce e delle classi disponibili con le raccolte in Java.

  • Interfacce: raccolta, coda, set ordinato, mappa ordinata, elenco, set, mappa
  • Classi: Liste, Vettori, Liste Array, Liste Collegate
  • Set: set di hash, set di alberi, set di hash collegati
  • Mappe: mappa hash, tabella hash, mappa ad albero, mappa hash collegata
  • Coda: coda prioritaria

106. Spiegare ordinato e ordinato in relazione alle raccolte in Java?

  • Ordinato: l'ordinamento consente al gruppo di oggetti di applicarsi internamente o esternamente per ordinarli in una particolare raccolta, in base alle loro diverse proprietà.
  • Ordinati: definisce i valori che vengono ordinati in base ai valori aggiunti nella raccolta e li itera in un ordine particolare.

107. Quali sono i diversi elenchi disponibili nella raccolta?

Elenca i valori del negozio in base alla loro posizione di indice con la duplicazione consentita. Ecco i principali tipi di elenchi:
Elenchi di matrici: utilizza l'interfaccia di accesso casuale, fornisce la raccolta degli ordini in base all'indice, non ordinata e offre un'iterazione rapida. Ecco un esempio per capirlo:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 frutta di classe pubblica {
public static void main ( String [ ] args ){
ArrayList < Stringa > nomi = nuovo ArrayList < Stringa >();
nomi . aggiungi ( " mela " );
nomi . aggiungere ( " avocado " );
nomi . aggiungere ( " ciliegia " );
nomi . aggiungere ( " kiwi " );
nomi . aggiungere ( " arance " );
nomi . aggiungere ( " banana " );
nomi . aggiungere ( " kiwi " );
Sistema . fuori . println ( nomi );
}
}

L'output è il seguente:

[Mela, avocado, ciliegia, kiwi, arance, banana, kiwi]

Con l'output, puoi verificare che Array List mantenga l'ordine di inserimento originale e consenta anche i duplicati. Anche se non ordinato.

Vector: utilizza anche il metodo di accesso casuale, sono sincronizzati e offre supporto per la sicurezza dei thread.

Capiamolo con un esempio:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 frutta di classe pubblica {
public static void main ( String [ ] args ){
ArrayList < Stringa > nomi = nuovo vettore < Stringa >();
nomi . aggiungere ( " kiwi " );
nomi . aggiungere ( " arance " );
nomi . aggiungere ( " banana " );
nomi . aggiungi ( " mela " );
nomi . aggiungere ( " avocado " );
nomi . aggiungere ( " ciliegia " );
nomi . aggiungere ( " kiwi " );
Sistema . fuori . println ( nomi );
}
}

L'output è il seguente:

[kiwi, arance, banana, mela, avocado, ciliegia, kiwi]

Gli elenchi di vettori seguono l'ordine di inserimento originale e supportano anche i duplicati.

Elenco collegato: è anche una scelta ideale per l'eliminazione e l'inserimento, gli elementi sono a doppio collegamento, ma le prestazioni sono lente.

Esempio per elenco collegato:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
 frutta di classe pubblica {
public static void main ( String [ ] args ){
ArrayList < Stringa > nomi = nuovo vettore < Stringa >();
nomi . aggiungere ( " kiwi " );
nomi . aggiungere ( " arance " );
nomi . aggiungere ( " banana " );
nomi . aggiungi ( " mela " );
nomi . aggiungere ( " avocado " );
nomi . aggiungere ( " ciliegia " );
nomi . aggiungere ( " kiwi " );
Sistema . fuori . println ( nomi );
}
}

L'output è il seguente:

[Mela, avocado, ciliegia, kiwi, arance, banana, kiwi]

Segue anche l'ordine di inserzione originale e accetta duplicati.

108. Quali sono le principali differenze tra raccolta e raccolte in Java?

Le differenze principali sono le seguenti:

  • La raccolta rappresenta un'interfaccia mentre Raccolte è particolarmente solo di classe.
  • L'interfaccia di raccolta fornisce molteplici funzionalità per la strutturazione dei dati come Elenco, Set e Coda. Considerando che l'obiettivo principale della classe Collection è limitato a ordinare e sincronizzare gli elementi della raccolta.

109. Spiegare la coda prioritaria.

Coda prioritaria definisce l'interfaccia della coda per la gestione degli elenchi collegati con lo scopo di una priorità di ingresso e di uscita. La coda generalmente segue un algoritmo FIFO (first in first out), tuttavia puoi accodare elementi in base a requisiti specifici e quindi possiamo implementare PriorityQueue per la personalizzazione. Con Priority Queue, dipende dall'heap di priorità in modo naturale o tramite il comparatore dalla relativa priorità.

110. Quando è ideale utilizzare e confrontare l'interfaccia Runnable in Java?

Quando abbiamo bisogno di estendere una classe con alcune altre classi e non con i thread, le interfacce eseguibili sono la scelta ideale.

111. Qual è la differenza tra il metodo start() e run() della classe thread?

Il metodo start() aggiunge e crea un nuovo thread. E il codice nel metodo run() viene eseguito solo nel nuovo thread. Mentre il metodo run() eseguirà il codice solo nel thread corrente.

112. Che cos'è il multithreading?

In Java, possiamo eseguire più thread contemporaneamente, il che è noto come Multithreading. Aiuta il programma a multitasking occupando meno memoria e offrendo prestazioni più elevate. In Multithreading, i thread sono leggeri, condividono lo stesso spazio e sono abbastanza convenienti sotto ogni aspetto.

113. Spiega la differenza tra processo e thread.

Qui le differenze principali sono:

  • Un programma Java in esecuzione viene definito processo mentre un thread rappresenta solo un sottoinsieme del processo.
  • I processi rappresentano spazi diversi nella memoria, mentre i thread hanno lo stesso indirizzo.
  • I processi sono completamente indipendenti, mentre i thread fanno solo parte del processo.
  • La comunicazione tra i processi è lenta, mentre la comunicazione tra i thread è rapida.

114. Spiegare il significato della comunicazione tra thread.

La comunicazione tra thread è definita come il processo che consente la comunicazione tra più thread sincronizzati. Il suo obiettivo principale è evitare il thread pooling in Java. La comunicazione si ottiene attraverso i metodi wait(), notification() e notificationAll().

115. Spiegare il metodo wait().

Con il metodo wait(), puoi consentire al thread di essere nella fase di attesa mentre l'altro thread è bloccato sull'oggetto. Pertanto, il metodo wait() può aggiungere una durata di attesa significativa per i thread.

Ecco una sintassi per rappresentare questo:

 1
2
3
4
5
6
 public static void main ( String [] args ){
Discussione t = nuova Discussione ();
t . inizio ();
Sincronizzato ( t ) {
Aspetta ();
}

116. Qual è la principale differenza tra il metodo notification() e il metodo notificationAll() in Java?

Il metodo notification() invia un segnale per riattivare solo un particolare thread nel pool in attesa, mentre notificationAll() riattiva tutti i thread nella fase di attesa del pool.

117. Definisci le principali differenze tra sleep() e wait().

Sleep() sospende o interrompe l'avanzamento del thread corrente sospendendo l'esecuzione per una durata particolare senza rilasciare il blocco. Mentre wait() provoca una durata di attesa per un thread dopo aver invocato un metodo notification() per riattivarsi in seguito.

118. Spiegare il metodo join() in relazione al thread in Java.

Il metodo join() consente di combinare un thread con uno dei thread continui. Ecco una sintassi per il metodo join():

 1
2
3
4
5
 public static void main ( String [] args ){
Discussione t = nuova Discussione ();
t . inizio ();
t . unisciti ();
}

119. Spiegare il metodo Yield di Thread.

Il metodo Yield è un metodo statico e non rilascia alcun blocco nei thread. Qui, un metodo Yield() abilita il thread corrente a un thread più eseguibile mentre consente agli altri thread di mantenere l'esecuzione. Pertanto, i thread con priorità di thread uguali possono essere eseguiti regolarmente.

120. Qual è la fase della fame?

La fame è una fase in cui un thread non riesce ad accedere alle risorse condivise e non è in grado di fare alcun progresso.

121. Che cos'è Deadlock per un thread?

Deadlock definisce una fase in cui due o più thread vengono bloccati per sempre in attesa l'uno dell'altro.

122. Definire serializzazione e deserializzazione in Java?

La serializzazione è il processo per trasformare lo stato di un oggetto in un particolare flusso di byte, ideale per le tecnologie JPA, JMS, RMI, JPA e Hibernate. Mentre il processo opposto di trasformazione di un flusso di byte in un oggetto è chiamato deserializzazione. Entrambi i processi sono indipendenti dalla piattaforma, quindi consentono di serializzare in una piattaforma e deserializzare in una piattaforma completamente diversa in modo efficiente.

123. Qual è l'importanza delle variabili transitorie?

L'importanza delle variabili transitorie risiede nella deserializzazione che viene impostata sulle variabili di default e non utilizzata con le variabili statiche.

124. Cosa sono le variabili volatili?

Le variabili volatili svolgono un ruolo cruciale nella sincronizzazione e nella lettura dalla memoria principale evitando la memoria cache del thread.

125. Che cos'è SerialVersionUID?

Nel processo Serializzato, un oggetto viene contrassegnato con un numero ID di versione specifico per la rispettiva classe di oggetti. Questo numero è denominato SerialVersionUID e svolge un ruolo cruciale nella verifica durante il processo di deserializzazione per verificare la compatibilità rispettivamente su mittente e destinatario.

126. Qual è il processo per clonare un oggetto in Java?

Con Object cloning, puoi creare una copia esatta dell'oggetto originale. Affinché la clonazione sia possibile, una classe deve avere il supporto per la clonazione con l'interfaccia java.lang.Cloneable e consentire l'override del metodo clone() dalla classe dell'oggetto originale.

Ecco una semplice sintassi per il metodo clone():

protected Object clone() genera CloneNotSupportedException

Nel caso in cui il clone non lo implementi, generalmente genera un'eccezione con 'CloneNotSupportedException'.

127. Definire la classe che rimane superclasse per ogni classe?

Classe di oggetti.

128. Definire se una classe stringa è mutabile o immutabile?

La classe String rappresenta uno stato immutabile. Quindi, una volta creato un oggetto, questo non può più cambiare.

129. Come si differenzia tra la classe StringBuffer e la classe StringBuilder?

  • StringBuilder è più veloce di StringBuffer.
  • StringBuffer è sincronizzato mentre StringBuilder non è sincronizzato.
  • StringBuffer offre un ambiente thread-safe, mentre StringBuilder non ha funzionalità thread-safe.

130. Qual è l'uso del metodo toString() in Java?

In Java, toString() recupera o restituisce la rappresentazione della stringa da qualsiasi oggetto.

131. Che cos'è una garbage collection in Java?

Poiché gli oggetti vengono allocati dinamicamente tramite l'operatore, Java system gestisce anche la deallocazione della memoria utilizzata automaticamente nel caso in cui non ci siano riferimenti per l'oggetto che rimane per una durata significativa. Questo processo per mantenere il sistema libero da oggetti che non possono essere utilizzati è noto come Garbage Collection in Java. L'obiettivo principale della garbage collection è rendere la gestione più efficiente della memoria.

132. Qual è il numero di volte in cui un Garbage Collector chiama il metodo finalize() per un oggetto specifico?

Puoi chiamare il metodo finalize() nella raccolta dei rifiuti solo una volta.

133. Definire i modi per chiamare la Garbage Collection.

Esistono due modi per chiamare la Garbage Collection:

  • System.gc()
  • Runtime.getRuntime().gc()

134. Possiamo forzare la Garbage Collection?

No, questo è un processo automatico. Puoi chiamare il metodo di raccolta dei rifiuti ma non puoi forzarlo. Tuttavia, non garantisce che sarebbe completo.

135. Quali sono i diversi tipi di dati in Java? Spiegare.

Ecco un elenco ristretto per aiutarti con i tipi di dati:

  • byte – 8 bit
  • breve – 16 bit
  • char – Unicode a 16 bit
  • int – 32 bit (numero intero)
  • float – 32 bit (numero reale)
  • lungo – 64 bit (precisione singola)
  • doppia – 64 bit (doppia precisione)

136. Definire l'Unicode.

Gli Unicode sono un modo per definire i caratteri internazionali nelle lingue umane e Java utilizza questa struttura Unicode per simboleggiare i caratteri.

137. Definisci letterale.

Un letterale è un valore costante assegnato a una particolare variabile

// Qui 105 è un letterale

numero int = 105

138. Definire il tipo di casting in Java?

Nel caso di assegnazione di un valore di un tipo di dati a un altro tipo di dati, questi due possono essere o meno compatibili e richiedere la conversione. Java si convertirà automaticamente in caso di tipi di dati compatibili. Mentre se i tipi di dati non sono compatibili, è necessario eseguire il cast per una conversione riuscita. Il casting ha due tipi di base: implicito ed esplicito.

139. Spiega i due diversi tipi di typecasting?

  • Implicito: definisce la memorizzazione di valori da tipi di dati più piccoli in tipi di dati più grandi, eseguita solo dal compilatore.
  • Esplicito: definisce la memorizzazione di valori da tipi di dati più grandi in tipi di dati più piccoli che potrebbero causare la perdita di informazioni.

Conclusione

Le domande del colloquio Java di cui sopra forniranno un buon inizio per la preparazione del colloquio. Allena anche le tue abilità di programmazione, però, e assicurati di essere approfondito in queste domande e nei relativi concetti in modo che quando l'intervistatore spara una Q, sei pronto per vincere il round con la tua A. Oh, e non dimenticare 3 respiri (non appariscenti) quando ti presenti davanti all'intervistatore.

Se sei interessato a saperne di più su Java, lo sviluppo di software full-stack, dai un'occhiata al programma Executive PG di upGrad & IIIT-B in Software Development - Specializzazione in Full Stack Development, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa , oltre 9 progetti e incarichi, stato di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Ti auguro il meglio! Spero che rompi le tue interviste !!

Atterra sul lavoro dei tuoi sogni

Richiedi la certificazione PG collegata al lavoro di upGrad in ingegneria del software