top 30 oops interview questions
Questo tutorial fornisce un set completo di domande e risposte per l'intervista alla programmazione orientata agli oggetti (OOP) più frequenti:
Lo sviluppo del software ha oltre 70 anni di storia in cui sono stati inventati vari linguaggi come FORTRAN, Pascal, C, C ++. C'erano una serie di istruzioni che agiscono come comandi dati all'hardware per eseguire alcuni calcoli matematici di base, creando linguaggi procedurali per progettare varie applicazioni software.
Con l'invenzione di Internet, per la progettazione di applicazioni complesse erano necessari linguaggi sicuri, stabili e indipendenti dalla piattaforma.
La programmazione orientata agli oggetti è indipendente dalla piattaforma, portatile, protetta e dotata di vari concetti come incapsulamento, astrazione, ereditarietà e polimorfismo.
I vantaggi di OOPS sono la riusabilità, l'estensibilità e la modularità che migliorano la produttività, la facilità di manutenzione grazie alla modularità, i costi di sviluppo più rapidi e inferiori grazie al riutilizzo del codice, producono applicazioni sicure e di alta qualità.
Cosa imparerai:
Concetti di base della programmazione orientata agli oggetti
La programmazione orientata agli oggetti coinvolge oggetti intellettuali, dati e comportamenti ad essa associati per portare soluzioni ai problemi aziendali. Nel linguaggio di programmazione Java, per progettare soluzioni per problemi aziendali, gli sviluppatori applicano concetti come astrazione, incapsulamento, ereditarietà e polimorfismo.
Vari concetti come Astrazione che ignora i dettagli irrilevanti, Incapsulamento che si concentra su ciò che è minimo richiesto senza rivelare alcuna complessità sulle funzionalità interne, Eredità ereditare le proprietà della classe genitore o implementare più eredità utilizzando un'interfaccia e Polimorfismo che estende le proprietà dell'override del metodo (polimorfismo statico) e dell'override del metodo (polimorfismo dinamico).
Domande di intervista OOPS più frequenti
D # 1) Spiega in breve cosa intendi per programmazione orientata agli oggetti in Java?
Risposta: OOP si occupa di oggetti, come entità della vita reale come penna, cellulare, conto bancario che ha stato (dati) e comportamento (metodi).
Con l'aiuto dell'accesso, l'accesso degli specificatori a questi dati e metodi è reso sicuro. I concetti di incapsulamento e astrazione offrono l'occultamento dei dati e l'accesso a elementi essenziali, ereditarietà e polimorfismo aiutano il riutilizzo del codice e il sovraccarico / sovrascrittura di metodi e costruttori, rendendo le applicazioni indipendenti dalla piattaforma, sicure e robuste utilizzando linguaggi come Java.
D # 2) Spiegare Java è un linguaggio puramente orientato agli oggetti?
Risposta: Java non è un linguaggio di programmazione orientato agli oggetti del tutto puro. I seguenti sono i motivi:
- Java supporta e utilizza tipi di dati primitivi come int, float, double, char, ecc.
- I tipi di dati primitivi vengono archiviati come variabili o nello stack anziché nell'heap.
- In Java, i metodi statici possono accedere a variabili statiche senza utilizzare un oggetto, contrariamente ai concetti orientati agli oggetti.
D # 3) Descrivi la classe e l'oggetto in Java?
Risposta: Classe e oggetto giocano un ruolo fondamentale nei linguaggi di programmazione orientati agli oggetti come Java.
- La classe è un prototipo o un modello che ha stato e comportamento supportati da un oggetto e utilizzati nella creazione di oggetti.
- L'oggetto è un'istanza della classe, per esempio, Human è una classe con lo stato come avente un sistema vertebrale, cervello, colore e altezza e ha comportamenti come canThink (), capacToSpeak (), ecc.
D # 4) Quali sono le differenze tra classe e oggetti in Java?
Risposta: Di seguito sono riportate alcune differenze principali tra classe e oggetti in Java:
Classe | Oggetto |
---|---|
Esempi di vita reale di Class possono essere un file • Una ricetta per preparare il cibo. • Stampe blu per un motore di automobile. | Possono essere esempi di oggetti reali • Un alimento preparato dalla ricetta. • Motore costruito come da blue-print. |
La classe è un'entità logica | L'oggetto è un'entità fisica |
La classe è un modello da cui è possibile creare l'oggetto | Object è un'istanza della classe |
La classe è un prototipo che ha lo stato e il comportamento di oggetti simili | Gli oggetti sono entità che esistono nella vita reale come il cellulare, il mouse o oggetti intellettuali come il conto bancario |
La classe è dichiarata con una parola chiave della classe come class Classname {} | L'oggetto viene creato tramite una nuova parola chiave come Employee emp = new Employee (); |
Durante la creazione della classe, non c'è allocazione di memoria | Durante la creazione dell'oggetto, la memoria viene allocata all'oggetto |
Esiste solo una classe unidirezionale definita utilizzando la parola chiave class | La creazione di oggetti può essere eseguita in molti modi, ad esempio utilizzando new keyword, metodo newInstance (), clone () e metodo factory. |
D # 5) Perché è necessaria la programmazione orientata agli oggetti?
Risposta: OOP fornisce specificatori di accesso e funzionalità di occultamento dei dati per maggiore sicurezza e controllo dell'accesso ai dati, il sovraccarico può essere ottenuto con il sovraccarico di funzioni e operatori, il riutilizzo del codice è possibile poiché gli oggetti già creati in un programma possono essere utilizzati in altri programmi.
La ridondanza dei dati, la manutenzione del codice, la sicurezza dei dati e il vantaggio di concetti quali incapsulamento, astrazione, polimorfismo ed ereditarietà nella programmazione orientata agli oggetti forniscono un vantaggio rispetto ai linguaggi di programmazione procedurali utilizzati in precedenza.
D # 6) Spiega l'astrazione con un esempio in tempo reale.
Risposta: Astrazione nella programmazione orientata agli oggetti significa nascondere interni complessi ma esporre solo caratteristiche e comportamenti essenziali rispetto al contesto. Nella vita reale, un esempio di astrazione è un carrello della spesa online, ad esempio in qualsiasi sito di e-commerce. Una volta selezionato un prodotto e prenotato l'ordine, sei interessato solo a ricevere il tuo prodotto in tempo.
Il modo in cui accadono le cose non è ciò che ti interessa, poiché è complesso e tenuto nascosto. Questo è noto come astrazione. Allo stesso modo, prendi l'esempio dell'ATM, la complessità dei meccanismi interni di come il denaro viene addebitato sul tuo conto viene tenuta nascosta e ricevi contanti tramite una rete. Allo stesso modo per le auto, il modo in cui la benzina fa funzionare il motore è estremamente complesso.
D # 7) Fornisci alcuni esempi in tempo reale e spiega l'ereditarietà.
Risposta: Ereditarietà significa che una classe (sottoclasse) acquisisce le proprietà di un'altra classe (super classe) per ereditarietà. Nella vita reale, prendiamo un esempio di eredità di una bicicletta normale dove è una classe genitore e una bici sportiva può essere una classe bambino, dove la bici sportiva ha ereditato le proprietà e il comportamento delle ruote rotanti con pedali tramite ingranaggi quello di una bici normale.
D # 8) Come funziona il polimorfismo in Java, spiegalo con esempi di vita reale?
Risposta: Il polimorfismo è una capacità di avere più forme o capacità del metodo di fare cose diverse. Nella vita reale, la stessa persona che svolge compiti diversi si comporta in modo diverso. In ufficio è un impiegato, a casa, è padre, durante o dopo le lezioni è uno studente, nei fine settimana gioca a cricket ed è un giocatore nel cortile.
come faccio ad aprire un file apk
In Java esistono due tipi di polimorfismo
- In fase di compilazione polimorfismo: Ciò si ottiene mediante il sovraccarico del metodo o il sovraccarico dell'operatore.
- Polimorfismo di runtime: Ciò si ottiene sostituendo il metodo.
Q # 9) Quanti tipi di eredità sono presenti?
Risposta: Di seguito sono elencati vari tipi di ereditarietà:
- Ereditarietà singola: La classe figlio singolo eredita le caratteristiche della classe genitore singolo.
- Ereditarietà multipla: Una classe eredita le funzionalità di più di una classe base e non è supportata in Java, ma può implementare più di un'interfaccia.
- Ereditarietà multilivello: Una classe può ereditare da una classe derivata rendendola una classe base per una nuova classe, per esempio, un bambino eredita il comportamento da suo padre e il padre ha ereditato le caratteristiche da suo padre.
- Ereditarietà gerarchica: Una classe viene ereditata da più sottoclassi.
- Ereditarietà ibrida: Questa è una combinazione di eredità singole e multiple.
Q # 10) Cos'è l'interfaccia?
Risposta: L'interfaccia è simile alla classe in cui può avere metodi e variabili, ma i suoi metodi non hanno un corpo, ma solo una firma nota come metodo astratto. Le variabili dichiarate nell'interfaccia possono avere public, static e final per impostazione predefinita. L'interfaccia viene utilizzata in Java per l'astrazione e le eredità multiple, dove la classe può implementare più interfacce.
D # 11) Puoi spiegare i vantaggi dell'astrazione e dell'ereditarietà?
Risposta: L'astrazione rivela all'utente solo i dettagli essenziali e ignora o nasconde dettagli irrilevanti o complessi. In altre parole, l'astrazione dei dati espone l'interfaccia e nasconde i dettagli di implementazione. Java esegue l'astrazione con l'aiuto di interfacce e classi astratte. Il vantaggio dell'astrazione è che semplifica la visualizzazione delle cose riducendo o nascondendo la complessità dell'implementazione.
La duplicazione del codice viene evitata e aumenta la riusabilità del codice. Solo i dettagli essenziali vengono rivelati all'utente e migliora la sicurezza dell'applicazione.
L'ereditarietà è dove la classe figlia eredita la funzionalità (comportamento) della classe genitore. Non abbiamo bisogno di scrivere codice una volta scritto nella classe genitore per la funzionalità di nuovo nella classe figlia e quindi rendere più facile riutilizzare il codice. Anche il codice diventa leggibile. L'ereditarietà viene utilizzata dove 'esiste una' relazione. Esempio: Hyundai è un auto O MS Word è un Software.
D # 12) Qual è la differenza tra estensioni e attrezzi?
Risposta: Entrambe le parole chiave extends e implements vengono utilizzate per l'ereditarietà ma in modi diversi.
Le differenze tra le parole chiave Extends e Implements in Java sono spiegate di seguito:
Si estende | Implementa |
---|---|
Una classe può estendere un'altra classe (figlio che estende il genitore ereditando le sue caratteristiche). Anche l'interfaccia eredita (usando la parola chiave extends) un'altra interfaccia. | Una classe può implementare un'interfaccia |
La sottoclasse che estende la super classe non può sovrascrivere tutti i metodi della super classe | L'interfaccia di implementazione della classe deve implementare tutti i metodi dell'interfaccia. |
La classe può estendere solo una singola super classe. | La classe può implementare un numero qualsiasi di interfacce. |
L'interfaccia può estendere più di un'interfaccia. | L'interfaccia non può implementare nessun'altra interfaccia. |
Sintassi: class Child estende la classe Parent | Sintassi: class Hybrid implementa Rose |
D # 13) Quali sono i diversi modificatori di accesso in Java?
Risposta: I modificatori di accesso in Java controllano l'ambito di accesso di classe, costruttore, variabile, metodo o membro dati. Vari tipi di modificatori di accesso sono i seguenti:
- Modificatore di accesso predefinito è privo di membri di dati, classi e metodi di specificatore di accesso e sono accessibili all'interno dello stesso pacchetto.
- Modificatori di accesso privato sono contrassegnati con la parola chiave private e sono accessibili solo all'interno della classe e non sono nemmeno accessibili dalla classe dallo stesso pacchetto.
- Modificatori di accesso protetto può essere accessibile all'interno dello stesso pacchetto o sottoclassi da pacchetti diversi.
- Modificatori di accesso pubblico sono accessibili da qualsiasi luogo.
D # 14) Spiega la differenza tra classe astratta e metodo?
Risposta: Di seguito sono riportate alcune differenze tra la classe astratta e il metodo astratto in Java:
Classe astratta | Metodo astratto |
---|---|
L'oggetto non può essere creato dalla classe astratta. | Il metodo astratto ha una firma ma non ha un corpo. |
Sottoclasse creata o eredita la classe astratta per accedere ai membri della classe astratta. | È obbligatorio sovrascrivere i metodi astratti della superclasse nella loro sottoclasse. |
La classe astratta può contenere metodi astratti o metodi non astratti. | La classe contenente il metodo astratto dovrebbe essere resa classe astratta. |
Q # 15) Quali sono le differenze tra metodo e costruttore?
Risposta: Di seguito sono riportate le differenze tra costruttori e metodi in Java:
Costruttori | Metodi |
---|---|
Il nome dei costruttori dovrebbe corrispondere a quello di Class. | I metodi non dovrebbero avere lo stesso nome del nome della classe. |
Sono utilizzati per creare, inizializzare e allocare memoria per l'oggetto. | I metodi vengono utilizzati per eseguire determinate istruzioni scritte al loro interno. |
I costruttori vengono richiamati implicitamente dal sistema ogni volta che vengono creati oggetti. | I metodi vengono richiamati quando viene chiamato. |
Vengono richiamati utilizzando la nuova parola chiave durante la creazione di un'istanza della classe (oggetto). | I metodi vengono richiamati durante l'esecuzione del programma. |
Il costruttore non ha un tipo restituito. | Il metodo ha un tipo restituito. |
Il costruttore non può essere ereditato dalla sottoclasse. | I metodi possono essere ereditati da una sottoclasse. |
D # 16) Cos'è un costruttore in Java?
Risposta: Constructor è un metodo senza un tipo restituito e ha il nome uguale a quello della classe. Quando creiamo un oggetto, un costruttore predefinito alloca memoria per un oggetto durante la compilazione del codice Java. I costruttori vengono utilizzati per inizializzare gli oggetti e impostare i valori iniziali per gli attributi degli oggetti.
D # 17) Quanti tipi di costruttori possono essere usati in Java? Spiega per favore.
Risposta: Esistono fondamentalmente tre tipi di costruttori in Java.
Questi sono:
- Costruttore predefinito: Questo costruttore è senza parametri e invoca ogni volta che crei un'istanza di una classe (oggetto). Se una classe è un Employee, la sintassi del costruttore predefinito sarà Employee ().
- Costruttore senza argomenti: Come suggerisce il nome, un costruttore senza argomenti è chiamato costruttore senza argomenti.
- Costruttore parametrizzato: Il costruttore con un numero di parametri è chiamato costruttore parametrizzato. È necessario fornire argomenti, ovvero valori iniziali rispetto al tipo di dati dei parametri in quel costruttore.
D # 18) Perché la nuova parola chiave viene utilizzata in Java?
Risposta: Quando creiamo un'istanza di classe, cioè oggetti, usiamo la parola chiave Java nuovo . Alloca la memoria nell'area di heap dove JVM riserva lo spazio per un oggetto. Internamente, richiama anche il costruttore predefinito.
Sintassi:
Class_name obj = new Class_name();
Q # 19) Quando usi la parola chiave super?
Risposta: Super è una parola chiave Java utilizzata per identificare o fare riferimento alla classe principale (base).
- Possiamo usare super per accedere al costruttore della super classe e chiamare i metodi della super classe.
- Quando i nomi dei metodi sono gli stessi in superclasse e sottoclasse, per fare riferimento alla super classe, il file super viene utilizzata la parola chiave.
- Per accedere ai membri dati con lo stesso nome della classe genitore quando sono presenti nella classe genitore e figlia.
- Super può essere utilizzato per effettuare una chiamata esplicita a costruttori senza argomento e parametrizzati della classe genitore.
- L'accesso al metodo della classe padre può essere eseguito utilizzando super , quando la classe figlia ha il metodo sovrascritto.
Q # 20) Quando usi questa parola chiave?
Risposta: Questo la parola chiave in Java si riferisce all'oggetto corrente nel costruttore o nel metodo.
- Quando attributi di classe e costruttori parametrizzati hanno entrambi lo stesso nome, Questo viene utilizzata la parola chiave.
- Parole chiave Questo invoca il costruttore della classe corrente, il metodo della classe corrente, restituisce l'oggetto della classe corrente, passa un argomento nel costruttore e chiama il metodo.
D # 21) Qual è la differenza tra Runtime e il polimorfismo in fase di compilazione?
Risposta: Sia il polimorfismo in fase di esecuzione che in fase di compilazione sono due diversi tipi di polimorfismo. Le loro differenze sono spiegate di seguito:
Compile Time Polymorphism | Polimorfismo di runtime |
---|---|
La chiamata viene risolta da un compilatore in polimorfismo in fase di compilazione. | La chiamata non viene risolta dal compilatore nel polimorfismo di runtime. |
È anche noto come binding statico e sovraccarico del metodo. | È anche noto come dinamico, ritardato e sostituzione del metodo. |
Metodi con lo stesso nome con parametri o metodi diversi con la stessa firma e tipi restituiti diversi sono polimorfismo in fase di compilazione. | Lo stesso metodo di nome con gli stessi parametri o la stessa firma associata a classi diverse è chiamato override del metodo. |
Si ottiene grazie alla funzione e al sovraccarico dell'operatore. | Può essere ottenuto tramite puntatori e funzioni virtuali. |
Poiché tutte le cose vengono eseguite in fase di compilazione. il polimorfismo in fase di compilazione è meno flessibile. | Poiché le cose vengono eseguite in fase di esecuzione, il polimorfismo di runtime è più flessibile. |
D # 22) Quali funzionalità orientate agli oggetti vengono utilizzate in Java?
Risposta: Un concetto di utilizzo di un oggetto nel linguaggio di programmazione Java trae vantaggio dall'uso di concetti orientati agli oggetti come l'incapsulamento per legare insieme lo stato e il comportamento di un oggetto, protegge l'accesso ai dati con specificatori di accesso, funzionalità come l'astrazione nel nascondere le informazioni, l'ereditarietà per estendere lo stato e comportamento delle classi base rispetto alle classi figlie, polimorfismo in fase di compilazione e runtime per il sovraccarico del metodo e l'override del metodo, rispettivamente.
D # 23) Cos'è il sovraccarico del metodo?
Risposta: Quando due o più metodi con lo stesso nome hanno un numero diverso di parametri o diversi tipi di parametri, questi metodi possono avere o meno tipi restituiti diversi, quindi sono metodi sovraccaricati e la funzionalità è l'overload del metodo. Il sovraccarico dei metodi è anche chiamato polimorfismo in fase di compilazione.
la fase del ciclo di sviluppo del software in cui viene condotta la programmazione è:
D # 24) Che cos'è l'override del metodo?
Risposta: Quando un metodo di una sottoclasse (derivata, classe figlia) ha lo stesso nome, parametri (firma) e lo stesso tipo restituito del metodo nella sua super classe (base, classe genitore), si dice che il metodo nella sottoclasse viene sovrascritto il metodo nella superclasse. Questa funzionalità è nota anche come polimorfismo di runtime.
D # 25) Spiega il sovraccarico del costruttore.
Risposta: Più di un costruttore con parametri diversi in modo che possano essere eseguite diverse attività con ogni costruttore è noto come sovraccarico del costruttore. Con il sovraccarico del costruttore, gli oggetti possono essere creati in modi diversi. Diverse classi Collection nell'API Java sono esempi di sovraccarico del costruttore.
D # 26) Quali tipi di argomenti possono essere usati in Java?
Risposta: Per i metodi e le funzioni Java, i dati dei parametri possono essere inviati e ricevuti in modi diversi. Se methodB () viene chiamato da methodA (), methodA () è una funzione chiamante e methodB () è chiamato funzione, gli argomenti inviati da methodA () sono argomenti effettivi e i parametri di methodB () sono chiamati argomenti formali.
- Chiama per valore: Le modifiche apportate al parametro formale (parametri di methodB ()) non vengono rimandate al chiamante (methodA ()), Questo metodo viene chiamato chiamata per valore . Java supporta la chiamata in base al valore.
- Chiama per riferimento: Le modifiche apportate al parametro formale (parametri di methodB ()) vengono rimandate al chiamante (parametri di methodB ()).
- Eventuali modifiche ai parametri formali (parametri di methodB ()) si riflettono nei parametri effettivi (argomenti inviati da methodA ()). Questa è chiamata chiamata per riferimento.
Q # 27) Distinguere tra binding statico e dinamico?
Risposta: Le differenze tra binding statico e dinamico sono spiegate nella tabella seguente.
Legame statico | Associazione dinamica |
---|---|
L'associazione statica in Java utilizza il tipo di campi e la classe come risoluzione. | L'associazione dinamica in Java utilizza l'oggetto per risolvere l'associazione. |
Il sovraccarico del metodo è un esempio di associazione statica. | L'override del metodo è un esempio di associazione dinamica. |
L'associazione statica viene risolta in fase di compilazione. | L'associazione dinamica viene risolta in fase di esecuzione. |
I metodi e le variabili che utilizzano l'associazione statica sono tipi privati, finali e statici. | I metodi virtuali utilizzano l'associazione dinamica. |
D # 28) Puoi spiegare la classe base, la sottoclasse e la superclasse?
Risposta: la classe base, la sottoclasse e la superclasse in Java sono spiegate come segue:
- La classe base o la classe genitore è una super classe ed è una classe da cui deriva la sottoclasse o la classe figlia.
- La sottoclasse è una classe che eredita attributi (proprietà) e metodi (comportamento) dalla classe base.
D # 29) Il sovraccarico degli operatori è supportato in Java?
Risposta: Il sovraccarico degli operatori non è supportato da Java in quanto,
- Rende l'interprete più impegnativo per comprendere l'effettiva funzionalità dell'operatore rendendo il codice complesso e difficile da compilare.
- Il sovraccarico degli operatori rende i programmi più soggetti a errori.
- Tuttavia, la caratteristica del sovraccarico dell'operatore può essere ottenuta nel sovraccarico del metodo in modo semplice, chiaro e privo di errori.
Q # 30) Quando viene utilizzato il metodo finalize?
Risposta: finalizzare metodo viene chiamato appena prima che l'oggetto stia per essere sottoposto a garbage collection. Questo metodo esegue l'override per ridurre al minimo le perdite di memoria, intraprendere attività di pulizia rimuovendo le risorse di sistema.
D # 31) Spiega i token.
Risposta: I token nel programma Java sono gli elementi più piccoli che il compilatore riconosce. Identificatori, parole chiave, letterali, operatori e separatori sono esempi di token.
Conclusione
I concetti di programmazione orientata agli oggetti sono parte integrante per sviluppatori, automazione e tester manuali che progettano framework di test di automazione per testare un'applicazione o sviluppare applicazioni con linguaggio di programmazione Java.
La comprensione approfondita è obbligatoria di tutte le funzionalità orientate agli oggetti come classe, oggetto, astrazione, incapsulamento, ereditarietà, polimorfismo e l'applicazione di questi concetti in un linguaggio di programmazione come Java per soddisfare i requisiti del cliente.
Abbiamo cercato di coprire le più importanti domande dell'intervista alla programmazione orientata agli oggetti e abbiamo fornito risposte appropriate con esempi.
Ti auguriamo tutto il meglio per la tua prossima intervista!
Lettura consigliata
- Java OOP: Introduzione alla programmazione orientata agli oggetti in Java
- Top 20 programmi di interviste Java per interviste di programmazione e codifica
- Top 50+ Core Java Intervista Domande e Risposte
- Tutorial sull'interfaccia Java e sulla classe astratta con esempi
- Incapsulamento in Java: tutorial completo con esempi
- Che cos'è l'astrazione in Java - Impara con esempi
- Concetti OOPS in C #: tutorial sui concetti di programmazione orientata agli oggetti
- Concetti di Python OOP (classi, oggetti ed ereditarietà Python)