JavaRush /Java Blog /Random-IT /Pausa caffè #58. 20 domande importanti per l'intervista c...

Pausa caffè #58. 20 domande importanti per l'intervista che uno sviluppatore Java dovrebbe conoscere Vantaggi di conoscere più linguaggi di programmazione

Pubblicato nel gruppo Random-IT

20 domande importanti per l'intervista che uno sviluppatore Java dovrebbe conoscere

Fonte: Dev.toPausa caffè #58.  20 domande importanti per l'intervista che uno sviluppatore Java dovrebbe conoscere  Vantaggi di conoscere più linguaggi di programmazione - 1

1. Quali sono i due tipi di eccezioni in Java? Qual'è la differenza tra loro?

Risposta: Esistono due tipi di eccezioni in Java: eccezioni verificate e non verificate.
  1. Non è necessario dichiarare le eccezioni non controllate in un metodo o in una dichiarazione di parola chiave del costruttore se possono essere lanciate quando il metodo o il costruttore viene eseguito e propagarsi oltre il limite del metodo o del costruttore.
  2. D'altra parte, le eccezioni controllate devono essere dichiarate nel metodo del costruttore o nella dichiarazione della parola chiave.

2. Cos'è la JVM? Perché Java è chiamato "linguaggio di programmazione indipendente dalla piattaforma"?

Risposta: Java Virtual Machine (JVM) è una macchina virtuale di processo in grado di eseguire bytecode Java. Ogni file sorgente Java viene compilato in un file bytecode, che viene eseguito dalla JVM. Il linguaggio Java è progettato per creare programmi applicativi che possono essere eseguiti su qualsiasi piattaforma, senza la necessità di riscrivere o ricompilare per ogni singola piattaforma. La Java Virtual Machine rende ciò possibile perché è consapevole della lunghezza specifica dell'istruzione e di altre funzionalità della piattaforma hardware sottostante.

3. Qual è la differenza tra un'applet e un'applicazione Java?

Risposta:
  • Le applet vengono eseguite in una finestra del browser abilitata per Java.
  • Un'applicazione Java è un programma Java autonomo che può essere eseguito all'esterno del browser.
Entrambi richiedono una Java Virtual Machine (JVM). Tuttavia, un'applicazione Java richiede un metodo principale con una firma specifica per iniziare l'esecuzione. Le applet Java non necessitano di tale metodo per iniziare l'esecuzione. Inoltre, le applet Java in genere utilizzano una politica di sicurezza restrittiva, mentre le applicazioni Java in genere utilizzano una politica di sicurezza più rilassata.

4. Qual è la differenza tra JDK e JRE?

Risposta:
  • Java Runtime Environment (JRE) è fondamentalmente una Java Virtual Machine (JVM) che esegue i tuoi programmi Java. Include anche plug-in del browser per eseguire l'applet.
  • Il Java Development Kit (JDK) è un kit di sviluppo software completo per il linguaggio Java, incluso JRE, compilatori e strumenti (come JavaDoc e Java Debugger) per consentire all'utente di sviluppare, compilare ed eseguire applicazioni Java.

5. Cos'è una servlet?

Risposta: Una servlet è una classe del linguaggio di programmazione Java utilizzata per elaborare le richieste dei client e creare contenuti web dinamici. Le servlet vengono utilizzate principalmente per elaborare o archiviare dati inviati da un modulo HTML, fornire contenuto dinamico e gestire informazioni sullo stato che non sono presenti nell'HTTP senza stato.

6. Cos'è una pagina JSP?

Risposta: Java Server Page (JSP) è un documento di testo che contiene due tipi di testo:
  • dati statici,
  • Elementi JSP.
I dati statici possono essere espressi in qualsiasi formato di testo, come HTML o XML. JSP è una tecnologia che mescola contenuto statico con contenuto generato dinamicamente.

7. Cosa sono le direttive? Quali tipi di direttive sono disponibili in JSP?

Risposta: Le direttive sono istruzioni che vengono elaborate dal motore JSP quando la pagina viene compilata in un servlet. Le direttive vengono utilizzate per impostare istruzioni a livello di pagina, inserire dati da file esterni e specificare librerie di tag personalizzate. Le direttive sono definite tra <%@ e %>. Di seguito sono riportati i diversi tipi di direttive:
  • Direttiva Include: utilizzata per includere un file e combinare il contenuto del file con la pagina corrente.
  • Direttiva pagina: viene utilizzata per definire determinati attributi su una pagina JSP come la pagina di errore e il buffer.
  • Taglib: utilizzato per dichiarare un taglib personalizzato utilizzato nella pagina.

8. Cosa fanno i metodi System.gc() e Runtime.gc()?

Risposta: questi metodi possono essere utilizzati come suggerimento per la JVM per attivare la garbage collection. In genere, la Java Virtual Machine (JVM) esegue la garbage collection periodicamente o quando la memoria libera raggiunge livelli bassi.

9. Quali differenze ci sono tra HashMap e Hashtable?

Risposta: esistono molte differenze tra HashMap e Hashtable in Java:
  1. Hashtable è sincronizzato mentre HashMap no. Ciò rende HashMap migliore per le applicazioni senza thread, poiché gli oggetti non sincronizzati generalmente funzionano meglio di quelli sincronizzati.
  2. Hashtable non consente chiavi o valori null. HashMap ti consente di utilizzare una chiave nulla e un numero qualsiasi di valori nulli.
  3. Una delle sottoclassi di HashMap è LinkedHashMap, quindi se desideri un ordine di iterazione prevedibile (ordine di inserimento predefinito), puoi facilmente scambiare HashMap con LinkedHashMap. Non sarebbe così facile se utilizzassi Hashtable.

10. Cos'è JDBC?

Risposta: JDBC è un livello di astrazione che consente agli utenti di scegliere tra database. Con JDBC, gli sviluppatori possono scrivere applicazioni di database in Java senza preoccuparsi dei dettagli dietro un particolare database.

11. Cosa significa la parola chiave "statica"? Puoi sovrascrivere un metodo privato o statico in Java?

Risposta: La parola chiave static significa che è possibile accedere a un membro variabile o a un metodo senza richiedere un'istanza della classe a cui appartiene . L'utente non può eseguire l'override dei metodi statici in Java poiché l'override del metodo si basa sull'associazione dinamica in fase di esecuzione e i metodi statici sono associati in modo permanente in fase di compilazione. Un metodo statico non è associato ad alcuna istanza della classe, quindi questo concetto non è applicabile.

12. Qual è il significato di un blocco final nella gestione delle eccezioni?

Risposta: Un blocco last verrà sempre eseguito, indipendentemente dal fatto che venga lanciata un'eccezione. Anche se non è presente alcuna istruzione catch e si verifica un'eccezione. Un'ultima cosa da menzionare è che il blocco final viene utilizzato per rilasciare risorse come buffer I/O, connessioni al database, ecc.

13. Qual è la differenza tra eccezione ed errore in Java?

Risposta: L'errore è una condizione critica che non può essere gestita dal codice del programma. Un'eccezione è una situazione eccezionale che può essere gestita dal codice del programma.

14. Quando un oggetto diventa idoneo per la garbage collection in Java?

Risposta: un oggetto Java è soggetto a Garbage Collection quando non è più disponibile per il programma che lo sta attualmente utilizzando.

15. Cos'è un iteratore?

Risposta: l' interfaccia Iterator fornisce una serie di metodi che possono scorrere qualsiasi raccolta . Ogni raccolta Java contiene un metodo Iterator che restituisce un'istanza Iterator . Gli iteratori possono rimuovere elementi dalla raccolta sottostante durante l'iterazione.

16. Cos'è il passaggio per riferimento e il passaggio per valore?

Risposta:
  • Quando un oggetto viene passato per value , significa che viene passata una copia dell'oggetto. In questo modo, anche se vengono apportate modifiche a questo oggetto, queste non influiranno sul valore originale.
  • Quando un oggetto viene passato per riferimento , significa che l'oggetto non viene effettivamente passato, ma piuttosto viene passato un riferimento all'oggetto. In questo modo, qualsiasi modifica apportata con il metodo esterno si rifletterà anche in tutti i luoghi.

17. Cos'è un'applet Java?

Risposta: un'applet Java è un programma che può essere incluso in una pagina HTML ed eseguito in un browser client abilitato per Java. Le applet vengono utilizzate per creare applicazioni web dinamiche e interattive.

18. Come funziona HashMap in Java?

Risposta: HashMap in Java memorizza coppie chiave-valore. HashMap richiede una funzione hash, utilizza i metodi hashCode ed equals per impostare e recuperare elementi da e verso la raccolta. Quando viene chiamato il metodo put , HashMap calcola il valore hash della chiave e memorizza la coppia nell'indice appropriato all'interno della raccolta. Se la chiave esiste, il suo valore viene aggiornato con il nuovo valore. Alcune caratteristiche importanti di HashMap sono la sua capacità, il fattore di carico e la variazione delle dimensioni della soglia.

19. Quali sono le principali interfacce del Java Collections Framework?

Risposta: Java Collections Framework è un insieme progettato di interfacce e classi che supportano operazioni su raccolte di oggetti. Le principali interfacce che si trovano nel Java Collections Framework sono:
  • Una Collezione rappresenta un gruppo di oggetti, conosciuti come i suoi elementi.
  • Un Set è una raccolta che non può contenere elementi duplicati.
  • Una lista è una raccolta ordinata che può contenere elementi ripetuti.
  • Una mappa è un oggetto che mappa le chiavi sui valori e non può contenere chiavi duplicate.

20. Quali tipi di dati supporta Java? Cos'è l'Autoboxing e l'Unboxing?

Risposta: Il linguaggio di programmazione Java supporta i seguenti otto tipi di dati primitivi:
  • byte
  • corto
  • int
  • lungo
  • galleggiante
  • Doppio
  • booleano
  • car
L'autoboxing è una conversione automatica eseguita dal compilatore Java tra i tipi primitivi e le corrispondenti classi wrapper di oggetti. Se la trasformazione va nella direzione opposta, questa operazione si chiama Unboxing . Grazie per aver letto e buona fortuna per il tuo colloquio tecnico!

Vantaggi di conoscere più linguaggi di programmazione

Fonte: Dev.to Personalmente sono convinto che ogni sviluppatore dovrebbe conoscere più di un linguaggio di programmazione. In altre parole, se parliamo di linguaggi di programmazione, lo sviluppatore deve essere poliglotta.Pausa caffè #58.  20 domande importanti per l'intervista che uno sviluppatore Java dovrebbe conoscere  Vantaggi di conoscere più linguaggi di programmazione - 2

Lingue primarie e secondarie

Per semplificare le cose, vorrei chiarire alcuni dei termini utilizzati in questo articolo. Credo che ogni sviluppatore dovrebbe avere un linguaggio che preferisce. Io chiamo questa lingua la principale. Chiamerò ausiliaria qualsiasi lingua diversa da quella principale. Naturalmente, uno sviluppatore può cambiare la sua lingua principale (più di una volta) nel corso della sua carriera. Questo va bene. Ci sono molte ragioni per cui questo viene spiegato.

Esperto

Nelle discussioni sugli sviluppatori poliglotti, si sostiene spesso che la conoscenza di una seconda lingua da parte dello sviluppatore ha il prezzo di essere meno abile nella lingua principale. I sostenitori di questa idea presumono che imparare ogni nuova lingua richieda tempo e che questa volta non puoi più dedicarlo all'acquisizione della conoscenza della tua lingua principale. Questa linea di pensiero mi sembra sbagliata. Vedo un'altra analogia: lo sport. È noto che praticare uno sport migliora le prestazioni in un altro. Naturalmente, puoi vincere medaglie d'oro in entrambi gli eventi, ed è improbabile che le freccette ti rendano un nuotatore migliore. D'altra parte, se sei uno scalatore, lo yoga ti aiuterà a sviluppare flessibilità ed equilibrio. Pertanto, praticare lo yoga ti renderà uno scalatore migliore di quanto saresti senza di esso. Penso che imparare ogni lingua aggiuntiva spesso migliorerà le tue abilità anche nelle altre lingue che conosci.

Gamma più ampia di strumenti

Inoltre, conoscere più linguaggi di programmazione migliora notevolmente il tuo arsenale come sviluppatore. Allarga i tuoi orizzonti e ti permette di guardare certe cose da diverse prospettive. Facciamo un esempio dalla vita di tutti i giorni. Se hai mai usato un cacciavite, hai familiarità con le viti con testa Phillips. A prima vista, tutte le viti con testa Phillips sono uguali e sembra che possano essere serrate tutte con un cacciavite. Sì, succede che hai difficoltà a stringere o svitare qualche vite, ma in generale ti basta un cacciavite. Pausa caffè #58.  20 domande importanti per l'intervista che uno sviluppatore Java dovrebbe conoscere  Vantaggi di conoscere più linguaggi di programmazione - 3Ma un giorno entri in un negozio di utensili, guardi tutti quei bellissimi cacciaviti e scopri che esistono diversi tipi di cacciaviti Phillips. Vedi che il cacciavite che già possiedi è un Phillips (PH) e decidi di acquistare il suo gemello, il Pozidriv (PZ). E poi all'improvviso si scopre che per alcune viti una è più adatta e per altre un'altra. Sembrano uguali, ma non sono intercambiabili . (Se ti stavi chiedendo cosa significano le lettere PH e PZ sui tuoi cacciaviti, ora lo sai). Con più conoscenze e uno strumento extra, sarai in grado di fare un lavoro migliore la prossima volta che avrai bisogno di stringere una vite con testa Phillips. Lo stesso vale per i linguaggi di programmazione.

Non è necessario pagare per ulteriori conoscenze

Quindi, personalmente non vedo il valore nell'imparare un linguaggio di programmazione aggiuntivo. Sarai ugualmente eccellente in entrambe le lingue? Probabilmente no, ma è improbabile che sia questo il tuo obiettivo. Impari qualcosa di nuovo sulla tua lingua madre? Ne sono assolutamente sicuro. Conoscere una nuova lingua rivelerà le differenze tra loro. E questo, a sua volta, risveglierà la tua curiosità. Ti chiederai perché le cose vengono fatte diversamente in una nuova lingua e cosa fanno. In conclusione, darò un esempio dalla vita. Ho usato uno strumento da riga di comando scritto in Python. Ogni volta che installavo questo strumento su una nuova macchina si verificavano dei problemi e con ogni aggiornamento il numero di problemi aumentava. Se hai Go nella tua cassetta degli attrezzi, noterai subito il suo vantaggio in questo scenario. Go ti consente di compilare i suoi artefatti in un binario autonomo. Puoi essere sicuro che, una volta compilato, il binario funzionerà su ogni macchina per cui lo hai compilato. Quindi ho portato la CLI Python su Go. Con questa nuova versione non dovevo più preoccuparmi di modificare il runtime o le dipendenze di terze parti. Questo è un ottimo esempio di scelta dello strumento più appropriato per l'attività. E per poter scegliere, devi diventare uno sviluppatore poliglotta.
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION