Domande e risposte per l'intervista Java nel 2022
Pubblicato: 2022-08-03Sei un programmatore? E hai scelto il linguaggio di programmazione Java come tua nicchia preferita per costruire una carriera? Congratulazioni! Hai scelto bene. Secondo le statistiche, un programmatore statunitense guadagna una media di $ 105.801 all'anno. Questa è una media di $ 50,87 all'ora, $ 2.035 a settimana e $ 8.817 al mese. Non è impressionante?
Ma avere una possibilità di ottenere il lavoro dei tuoi sogni come programmatore Java è al di là di un pio desiderio. Degli 8 milioni di programmatori Java a livello globale, solo circa 56.585 hanno un'occupazione retribuita negli Stati Uniti, rendendo la ricerca di lavoro come programmatore Java piuttosto competitiva. Se devi ottenere il lavoro dei tuoi sogni, devi essere ben attrezzato sia negli aspetti di base che in quelli complessi del linguaggio di programmazione Java.
Ora sai quanto è competitivo ottenere un lavoro come programmatore Java e il requisito per essere idoneo a essere tra i pochi ad ottenere un lavoro come programmatore Java. Ricorda, il successo è una funzione della preparazione all'incontro di opportunità. Man mano che avanziamo, abbiamo progettato una guida a domande e risposte per aiutarti a superare la fase del colloquio e possibilmente ottenere il lavoro dei tuoi sogni. Questo elenco è stato compilato con l'aiuto dell'articolo, in preparazione per un'intervista java, domande e risposte su Apollotechnical. Andiamo avanti.
Domande di intervista Java di base per le matricole
Cosa capisci per Java?
Java è un linguaggio di programmazione versatile, orientato agli oggetti e multipiattaforma, utilizzato su 3 miliardi di dispositivi in tutto il mondo per varie attività come applicazioni di social networking, programmi audio e video, giochi, elaborazione di dati di massa, dispositivi incorporati e così via.
Confronta tra Java e Python
Nella sua semplicità, Java è un linguaggio di programmazione generico, focalizzato sugli oggetti, basato su classi ma con meno specifiche richieste. Grazie alla sua reputazione di essere veloce, affidabile e orientato ai risultati, è il linguaggio di programmazione ideale per lo sviluppo di applicazioni su telefoni cellulari, console di gioco, laptop, computer scientifici di fascia alta, ecc. D'altra parte, Python è un linguaggio di programmazione strutturato dinamicamente tradotto, focalizzato sugli oggetti ed elevato. Python facilita la flessibilità del programma e il riutilizzo del codice abilitando moduli e pacchetti.
Descrivi le principali funzionalità di Java
- Java è focalizzato sugli oggetti
- Java è indipendente dalla piattaforma
- Ha un'eccellente implementazione multithreading
- Utilizza un linguaggio semplice
- Ed è Architettura neutrale
Cosa intendi per oggetto in Java
In Java, un oggetto è un componente (noto anche come "istanza") di un altro raggruppamento Java chiamato "classe". Ogni oggetto ha uno stato, un comportamento/azioni e un'identità unici. I campi (variabili) memorizzano lo stato di un oggetto, mentre le metodologie (operazioni) mostrano le azioni dell'oggetto. In fase di esecuzione, gli oggetti vengono creati da framework identificati come classi.
Un oggetto potrebbe anche essere un elemento fondamentale della programmazione basata su oggetti che rappresenta entità del mondo reale.
Distinguere tra Stringbuffer e Stringbuilder nella programmazione Java
StringBuffer e StringBuilder differiscono principalmente per quattro parametri: prestazioni/velocità, thread-safety, disponibilità e sincronizzazione. StringBuilder è una variante non sincronizzata della classe StringBuffer.
Un'altra distinzione tra StringBuffer e StringBuilder è che il primo è thread-safe, mentre il secondo no.
Distinguere tra JDK, JRE e JVM
Il Java Development Kit (JDK) include la scrittura, la risoluzione dei problemi e l'analisi degli strumenti di programmazione Java. JRE è un insieme di classi e oggetti e altri file di accompagnamento necessari a JVM per eseguire un'applicazione. JVM non fornisce alcuno strumento di sviluppo software.
Il Java Development Kit (JDK) è un prodotto software per la creazione di applicazioni Java. JRE è un pacchetto software che contiene le librerie di classi Java e altri componenti necessari per eseguire la programmazione Java. La Java Virtual Machine (JVM) interpreta il linguaggio dei byte Java e crea un'atmosfera adatta per l'esecuzione. JDK è specifico della piattaforma, JRE è dipendente dalla piattaforma e JVM è dipendente dalla piattaforma su una scala più ampia.
Definisci eredità
In Java, l'ereditarietà è un principio che trasferisce le caratteristiche di una classe a un'altra; È il framework in Java mediante il quale una classe ottiene proprietà da un'altra o consente a una classe di possedere le caratteristiche (metodi e attributi) di un'altra.
Cos'è la classe in Java?
Una classe è un elemento fondamentale nella programmazione orientata agli oggetti. È un formato che definisce lo stato e le funzioni attribuite all'istanza di classe. Una classe è anche un modello logico perché viene utilizzata per creare modelli che condividono attributi e metodi simili.
Confronta il sovraccarico e l'override in Java
Il sovraccarico si riferisce all'avere metodi della stessa classe con lo stesso nome, ma ognuno ha vari criteri o gli stessi criteri con vari tipi e ordini. While Override significa avere una sottoclasse con le stesse tecniche con lo stesso titolo di una superclasse e lo stesso tipo di criteri e valore di ritorno.
Inoltre, il sovraccarico è un polimorfismo della riga di comando con un legame statico e il sovraccarico del metodo statico. Mentre l'override è un polimorfismo di esecuzione del programma con un legame flessibile e l'impossibilità di sovrascrivere il metodo statico.
Spiega la creazione di un singleton thread-safe in Java utilizzando il doppio controllo del blocco
Il modello Singleton è un modello di progettazione noto in cui una classe è limitata a una sola istanza per tutta la sua vita e più client condividono tale istanza. Il modello Singleton è incarnato con due responsabilità principali: la prima è garantire che venga generata solo un'istanza di classe. Il secondo è fornire un metodo che consenta a tutti di accedere a quell'istanza specifica in tutto il mondo.
Una delle sfide che il progetto Singleton deve affrontare in un programma multithreading è garantire che venga generata solo un'istanza della classe, anche se vari utenti chiamano contemporaneamente la tecnica getInstance(). Il sistema di blocco ricontrollato corregge questo dilemma assicurando che la sincronizzazione venga utilizzata solo quando viene creato un singolo caso di Singleton ogni volta che la funzione getInstance() viene invocata per la prima volta e che la stessa istanza venga ripristinata senza alcuna sincronizzazione sopra tutte quelle altre istanze.
Domande di intervista Java intermedie
Cos'è JDK? Citare le varianti di JDK?
JDK sta per Java Development Kit. Java Development Kit (JDK) è il software di riferimento durante lo sviluppo di qualsiasi applicazione Java. Java Development Kit (JDK) include la scrittura, la risoluzione dei problemi e l'analisi degli strumenti di programmazione Java.
Fondamentalmente, JDK è un'implementazione Java Standard Edition o Java Enterprise Edition. Java è stato ribattezzato Java 2 (abbreviato in Java 2 SDK o J2SDK) nel 1998 a causa di un significativo aggiornamento della piattaforma. Ha sviluppato tre versioni Java separate per supportare varie applicazioni.
- J2SE è l'acronimo di Java 2 Platform, Basic and Usual Edition ed è destinato a contesti desktop e server.
- J2EE è l'acronimo di Java 2 Platform, Corporate Edition, progettato per applicazioni aziendali e include funzionalità come l'archiviazione basata su cloud e il supporto dei servizi online.
- J2ME (Java 2 Platform, Micro Edition) è destinato a gadget o piattaforme installati e mobili.
Tuttavia, nel 2004, le etichette delle varianti sono state modificate rispettivamente in Java ME (Micro Edition of the Java Platform), Java EE (Enterprise Edition of the Java Platform) e Java SE (Standard Edition of the Java Platform). Anche il soprannome del kit di sviluppo è stato cambiato da "Java 2 SDK" a "JDK". Inoltre, il contesto operativo è stato rinominato "JRE" anziché "J2RE". Le varianti con le relative versioni, Java SE 6 e Java EE 5, sono ancora in uso.
Un costruttore può restituire un valore?
Comprendendo che un costruttore non è come una tecnica convenzionale utilizzata durante la programmazione in Java, in qualche modo non restituisce o riporta alcun risultato specificato, che potrebbe causare un effetto importante o un impatto sul codice. Il Costruttore può includere istruzioni illimitate, ma non può riportare o restituire i valori o il risultato di dichiarazioni.

Spiega la parola chiave "QUESTO" in Java
'Questo' è un termine specifico in Java che specifica l'entità che il programmatore sta eseguendo. La parola chiave è semplicemente anteposta al parametro diverso relativo all'utilizzo dell'operatore – punto (.), che può essere utilizzato dall'interno di un metodo o di un costruttore. La parola chiave "Questo" non viene utilizzata molto spesso poiché la maggior parte delle applicazioni ha lo scopo di evitare situazioni in cui sarebbe stato necessario. L'accesso alle variabili di istanza è fornito tramite il termine 'this.'
Spiega la parola chiave "SUPER" in Java
In Java, la parola d'ordine 'super' è un parametro relativo associato al concetto di ereditarietà che fa riferimento alle istanze della classe padre, supponendo che la classe derivata abbia un parametro nel gruppo o metodo con lo stesso nome della classe padre. Il termine viene utilizzato principalmente quando la sottoclasse deve accedere a un parametro, una funzione o un costruttore nella classe base.
Spiega il sovraccarico del metodo in Java
In Java, l'overloading si riferisce a metodi che hanno lo stesso nome e classe ma con criteri diversi e viceversa. Due o più tecniche hanno nomi e classi uniformi ma firme diverse nell'overloading. L'overloading è un polimorfismo della riga di comando che aumenta il comportamento di un metodo, causando così un sovraccarico.
Possiamo sovraccaricare un metodo statico in Java?
In Java, il metodo statico si comporta in modo simile alle normali metodologie di sovraccarico e, come tale, potrebbe essere sovraccaricato. Tuttavia, è necessario offrire un metodo statico aggiuntivo con lo stesso nome ma una firma della metodologia diversa se l'obiettivo è sovraccaricare il metodo statico.
Definisci rilegatura tardiva
L'associazione tardiva è un formato che indica che il compilatore non deve eseguire controlli di tipo sulle chiamate ai metodi, né controlli di argomenti e deve lasciare tutto al runtime (un'istanza è nella programmazione COM).
Definire l'invio del metodo dinamico
L'invio del metodo dinamico si riferisce alla risoluzione o alla correzione di una chiamata a un metodo sottoposto a override in fase di esecuzione anziché in fase di compilazione.
Perché la funzione di eliminazione è più veloce nell'elenco collegato rispetto a un array
L'operazione di rimozione di LinkedList restituisce O(1). Ma l'operazione di rimozione di ArrayList restituisce O(n) nel caso peggiore, cioè quando si elimina la prima voce e O(1) nello scenario migliore mentre si rimuove l'ultimo elemento. Rispetto a ArrayList, l'eliminazione dell'elemento LinkedList è più rapida. Il motivo è che ogni elemento LinkedList ha due puntatori (indirizzi) che puntano a entrambi i membri vicini nell'elenco. Di conseguenza, la rimozione di un nodo comporta la modifica della posizione di riferimento nei due componenti adiacenti del nodo.
Domande avanzate per interviste Java per esperti
Sebbene l'ereditarietà sia un concetto popolare di oops, è meno vantaggioso della composizione. Spiegare!
Le classi Java possono avere solo una superclasse poiché le eredità multiple non sono supportate nel linguaggio. In varie funzionalità, come la lettura e la scrittura di un file, è preferibile la struttura di compilazione. Puoi confrontarlo con le capacità di scrittore e lettore di un membro privato. Con l'aiuto della composizione, è possibile evitare la rottura dell'incapsulamento ottenendo una notevole flessibilità. Il test unitario, impossibile a causa dell'eredità, è realizzabile con l'assistenza della composizione.
In che modo la creazione di una stringa utilizzando new() è diversa da quella di un letterale?
Quando usiamo new() per generare una stringa, nella memoria heap viene creato un nuovo oggetto. Ci vuole più tempo per l'esecuzione e quindi rimane indietro rispetto a String letterale. Tuttavia, quando nella stringa sono già stabiliti dati per una stringa creata utilizzando il valore letterale String, esiste un collegamento degli stessi dati con la variabile String nel pool di stringhe. E questo si ottiene senza dover costruire una stringa completamente nuova con gli stessi dati stabiliti.
È possibile superare il limite di memoria in un programma nonostante abbia un Garbage Collector?
Sì. La presenza di un Garbage Collector non impedisce in alcun modo di fermare o impedire a un programma di esaurire la memoria.
Perché è necessaria la sincronizzazione? Spiegare con l'aiuto di un esempio pertinente
La sincronizzazione è un meccanismo che garantisce che tutti i thread coincidenti vengano eseguiti contemporaneamente. La sincronizzazione previene i problemi di coerenza della memoria prodotti da una visualizzazione della memoria sinergica che è incoerente. In un metodo sincronizzato, l'oggetto viene monitorato e mantenuto in posizione dal thread. Se un altro thread sta eseguendo il metodo sincronizzato, il thread attuale verrà interrotto finché il thread precedente non rilascerà il monitor.
Diciamo che, in una situazione in cui è necessario trovare il numero di richieste fatte a un determinato URL, avere più di una richiesta in esecuzione è destinato a creare un conteggio irregolare. Supponiamo che il thread 1 veda il conteggio come 12; verrà aumentato a 13 aggiungendo uno. Contemporaneamente, anche un altro thread 2 vede il conteggio come 12 e, allo stesso modo, viene aumentato a 13 aggiungendo 1. Questa imprevedibilità nel valore del conteggio si verifica perché invece del valore finale previsto di 14, ciò che verrebbe ottenuto come il valore sarà 13. È qui che entra in gioco la sincronizzazione all'aumentare della funzione (), quindi viene impedito l'accesso simultaneo al conteggio.
Puoi spiegare il ciclo di vita del thread Java?
In Java, il ciclo di vita di un thread è definito come le trasformazioni di stato di un thread dalla nascita alla morte. Quando viene generata un'istanza di thread e viene chiamata la funzione start() della classe Thread, il thread entra nello stato eseguibile. Quando la classe Thread chiama i metodi sleep() o wait(), il thread diventa non eseguibile.
Quale potrebbe essere il compromesso tra l'utilizzo di un array non ordinato e l'utilizzo di un array ordinato?
Uno dei principali vantaggi di un array ordinato è che ha una complessità del tempo di ricerca di O(log n). L'operazione di inserimento su un array ordinato ha una complessità temporale di O(n) perché i membri con punteggi maggiori devono essere spostati per creare una nuova variante. D'altra parte, l'operazione di inserimento di un array non ordinato richiede un tempo costante di O(1).
È possibile importare la stessa classe o pacchetto due volte in java e cosa succede durante l'esecuzione?
Sì. Indipendentemente dalla frequenza con cui viene importata la classe o il pacchetto, la JVM lo caricherà internamente una volta durante il runtime.
Il blocco "Finally" verrà eseguito se il codice system.Exit(o) viene scritto alla fine del blocco try?
No, il blocco 'finalmente' non verrà eseguito in questo scenario perché quando System.exit (0) viene attivato, il controllo lascia il programma istantaneamente e, quindi, “finalmente” non viene mai eseguito. Se Sistema. exit(0) viene invocato senza eccezioni; il programma non verrà eseguito.
Cosa intendi per interfacce marker in Java
Un'interfaccia senza costanti o metodi è nota come interfaccia marker o interfaccia di tagging poiché fornisce al compilatore e alla JVM informazioni sul tipo di runtime per gli oggetti. Le interfacce remote, serializzabili e clonabili sono esempi di interfacce marker e tutte queste interfacce sono vuote.
Spiegare il termine "Inizializzazione doppia parentesi" in Java
In Java, l'inizializzazione della doppia parentesi è una combinazione di 2 processi separati. In questa situazione sono interessate due parentesi graffe ({). L'inizializzazione della doppia parentesi si verifica quando nel codice java vengono visualizzate due parentesi graffe consecutive.
La costruzione di una classe interna senza nome è la prima parentesi graffa, mentre un blocco di inizializzazione è la seconda parentesi graffa. L'inizializzazione Java Double Brace si verifica quando una classe interna senza nome utilizza il blocco di inizializzazione.
Conclusione
Come programmatore principiante o anche un programmatore esperto, queste domande del colloquio possono sembrare un po 'complicate. Ma se ti impegni a praticare queste domande, sei sicuro di cogliere questa prossima opportunità che avrai.