50 domande e risposte per interviste sull'ingegneria del software
Domande e risposte sull'intervista per sviluppatori di software per le matricole
1) Quali sono le categorie importanti di software?
- Software di sistema
- Il software applicativo
- Software incorporato
- Applicazioni Web
- Software di intelligenza artificiale
- Software scientifico.
👉 Download gratuito del PDF: domande e risposte al colloquio sull'ingegneria del software
2) Qual è la differenza principale tra un programma per computer e un software per computer?
Un programma per computer è un pezzo di codice di programmazione. Svolge un compito ben definito. D'altra parte, il software include codice di programmazione, documentazione e guida per l'utente.
3) Cos'è la reingegnerizzazione del software?
È un processo di sviluppo software che viene eseguito per migliorare la manutenibilità di un sistema software.
4) Descrivere in breve il processo di sviluppo del software:
Lo sviluppo del software è un ciclo di vita composto dalle seguenti fasi:
- Analisi dei requisiti
- Specificazione
- Architettura del software
- Implementazione/Attuazione
- Testing
- Documentazione
- Formazione e supporto
- Assistenza
5) Quali sono i modelli SDLC disponibili?
Il modello a cascata, il modello a spirale, il modello big-bag, il modello iterativo e il modello a V sono alcuni dei famosi Modelli SDLC.
6) Cos'è la verifica e la validazione?
Verifica:
La verifica è un termine che si riferisce all'insieme di attività che garantiscono che il software implementi una funzione specifica.
convalida:
Si riferisce all'insieme di attività che garantiscono che il software sia stato costruito in base alle esigenze dei clienti.
7) Nel processo di sviluppo del software qual è il significato di debug?
Il debug è il processo che porta alla rimozione dell'errore. È una parte molto importante del successo del test.
8) Come puoi assicurarti che il tuo codice sia sicuro e veloce?
Nel software, la sicurezza dello sviluppo è sempre al primo posto. Quindi, se l'esecuzione del programma è lenta, cercherò di identificare il motivo della sua complessità temporale.
9) Nominare due strumenti utilizzati per tenere traccia dei requisiti software?
Esistono molti modi per tenere traccia dei requisiti.
Due comunemente usati sono:
- Redigere un documento con le specifiche dei requisiti per elencare tutti i requisiti.
- Crea un foglio Excel con l'elenco dei requisiti, del tipo, della dipendenza, della priorità, ecc.
10) Qual è la differenza principale tra uno stub e un mock?
Uno stub è un'implementazione minima di un'interfaccia che generalmente restituisce dati hardcoded mentre mock solitamente verifica gli output rispetto alle aspettative. Tali aspettative vengono stabilite nel test.
11) Quale linguaggio ti piace scrivere algoritmi di programmazione?
Ogni sviluppatore ha le sue opinioni quando si tratta delle scelte del linguaggio di programmazione. Tuttavia, si dovrebbero preferire i linguaggi di alto livello perché sono dinamici. Come C e C++ le lingue.
12) Cos'è il software informatico?
Il software per computer è un pacchetto che include un programma software, la relativa documentazione e una guida per l'utente su come utilizzare il software.
13) Secondo te quale modello SDLC è il migliore?
Non esiste una classificazione di questo tipo, poiché i modelli SDLC vengono adottati in base alle necessità del processo di sviluppo. Potrebbe differire da software a software.
14) Chi è il responsabile del progetto software? Qual è il suo ruolo?
Un project manager software è una persona responsabile della gestione del progetto di sviluppo software.
Il project manager si occupa della pianificazione del progetto, del monitoraggio dei progressi e della comunicazione. Lui o lei gestisce anche i rischi e le risorse per realizzare il progetto entro limiti di tempo, costi e qualità.
15) Cosa si intende per ambito software?
L'ambito del software è un confine ben definito. Comprende tutti i tipi di attività svolte per sviluppare e fornire il prodotto software.
L'ambito del software definisce tutte le funzionalità e gli artefatti da fornire come parte del software. L'ambito identifica anche cosa farà il prodotto? Cosa non fa parte del progetto? Cos'è la stima del progetto?
Questo processo è utile per stimare vari aspetti del prodotto software. Questa stima può essere decisa consultando esperti o utilizzando formule predefinite.
16) Come determinare la dimensione di un prodotto software?
La dimensione del prodotto software può essere calcolata utilizzando i due metodi seguenti
- Conteggio delle righe di codice consegnato
- Conteggio dei punti funzione forniti
17) Cosa sono i function point?
I punti funzione sono le funzionalità fornite dal prodotto software. È considerata la misura più importante per la dimensione del software.
18) Quali sono le tecniche di stima dei progetti software disponibili?
Le tecniche di stima più utilizzate sono:
- Tecnica di decomposizione
- Tecnica empirica
19) Cos'è la gestione della configurazione del software?
La gestione della configurazione del software è un processo di tracciamento e controllo delle modifiche che si verificano nel software.
Il controllo delle modifiche è una funzione che garantisce che tutte le modifiche apportate al sistema software siano coerenti e create utilizzando norme e regolamenti organizzativi.
20) Come si può misurare l'esecuzione del progetto?
Possiamo misurare l'esecuzione del progetto utilizzando il monitoraggio delle attività, i rapporti sullo stato e le liste di controllo delle tappe fondamentali.
21) Parlami di alcuni strumenti di gestione del progetto.
Esistono molti tipi di strumenti di gestione utilizzati in base alla necessità di un progetto software. Alcuni di essi sono il diagramma Pert, il diagramma di Gantt, l'istogramma delle risorse, i rapporti sullo stato, ecc.
22) Quali sono i requisiti software?
I requisiti software sono una descrizione funzionale di un sistema software proposto. Si presuppone che sia la descrizione del sistema di destinazione, delle sue funzionalità e caratteristiche.
23) Cos'è lo studio di fattibilità?
È una misura per scoprire quanto pratico e vantaggioso si rivelerà per l'organizzazione lo sviluppo del progetto software. L'analizzatore del software conduce uno studio per conoscere la fattibilità economica, tecnica e operativa del progetto.
- Economico: Comprende il costo della formazione, il costo degli strumenti aggiuntivi e la stima complessiva dei costi e dei benefici del progetto.
- Tecnica: Valuta l'aspetto tecnico. È possibile sviluppare questo sistema? Valutare l'idoneità delle macchine e del sistema operativo su cui verrà eseguito il software, conoscenza dello sviluppo del software e degli strumenti disponibili per questo progetto.
- Operanazionale: Qui l'analista deve valutare che l'organizzazione sarà in grado di adattarsi agevolmente ai cambiamenti apportati secondo la domanda del progetto. Vale la pena risolvere il problema al costo stimato?
Successivamente, dopo aver studiato tutto questo, viene creato il rapporto finale di fattibilità.
24) Cosa sono i requisiti funzionali e non funzionali?
I requisiti funzionali sono le caratteristiche funzionali che gli utenti si aspettano dal prodotto software proposto.
I requisiti non funzionali riguardano la sicurezza, le prestazioni, l'aspetto e la sensazione dell'interfaccia utente.
25) Cos'è la metrica del software?
Software Metrics offre misure per vari aspetti del processo software che sono suddivisi in:
- Metriche dei requisiti: requisiti di lunghezza, completezza
- Metriche del prodotto: numero di linee di codifica, metriche orientate agli oggetti, metriche di progettazione e test.
26) Cos'è la modularizzazione?
La modularizzazione è una tecnica utilizzata per dividere un sistema software in vari moduli discreti. Ci si aspetta che svolga i compiti in modo indipendente.
27) Cos'è la coesione?
La coesione è una misura che definisce l'intra-dipendenza tra gli elementi del modulo.
28) Menziona alcuni strumenti di analisi e progettazione del software?
Alcuni dei più importanti strumenti di analisi e progettazione del software sono:
- Diagrammi di flusso dei dati
- Grafici strutturati
- Inglese strutturato
- Dizionario dei dati
- Diagrammi di input e output del processo gerarchico
- Diagrammi delle relazioni tra entità e tabelle decisionali
29) Cosa si intende per diagramma di flusso dati di livello 0?
Il livello di astrazione più alto è chiamato Livello 0 di DFD. È anche chiamato DFD a livello di contesto. Rappresenta l'intero sistema informativo come un diagramma.
30) Qual è la differenza principale tra inglese strutturato e pseudo codice?
L'inglese strutturato è la lingua madre inglese. Viene utilizzato per scrivere la struttura di un modulo di programma. Utilizza parole chiave del linguaggio di programmazione. D'altra parte, lo Pseudo Code è più simile al linguaggio di programmazione senza sintassi di alcun linguaggio specifico.
Domande e risposte sull'ingegneria del software viva per esperti
31) Cos'è la progettazione strutturata?
La progettazione strutturata è una concettualizzazione del problema. Chiamato anche design della soluzione, si basa sulla strategia "divide et impera".
32) Cos'è la programmazione funzionale?
È un metodo di programmazione che utilizza i concetti di una funzione matematica. Fornisce mezzi di calcolo come funzioni matematiche, che producono risultati indipendentemente dallo stato del programma.
33) Cos'è la garanzia di qualità rispetto al controllo di qualità?
Il controllo qualità verifica se viene seguito il processo corretto durante lo sviluppo del software, mentre il controllo qualità si occupa del mantenimento della qualità del prodotto software.
34) Cosa sono gli strumenti CASE?
CASE significa Computer Aided Software Engineering. Sono un insieme di programmi applicativi software automatizzati, utilizzati per supportare, migliorare e rafforzare le attività SDLC.
35) Quale modello di processo rimuove i difetti prima che il software finisca nei guai?
Il metodo di ingegneria del software in camera bianca rimuove i difetti prima che il software si metta nei guai.
36) Risolvi questo problema
Ci sono venti calzini diversi di due tipi in un cassetto in una stanza buia. Qual è il numero minimo di calzini che devi portare con te per assicurarti di averne un paio abbinato?"
Se raccogli tre calzini, potrebbero essere dello stesso tipo anche se la probabilità è del 50%. Le probabilità non sono mai una realtà uguale. Pertanto, l'unico modo per "assicurarsi di avere una coppia corrispondente" è raccogliere almeno 11 numeri di shock.
37) Come puoi assicurarti che il tuo codice scritto sia in grado di gestire vari tipi di situazioni di errore?
Posso scrivere test che definiscono le situazioni di errore previste.
38) Spiegare le differenze tra un Thread e un Processo?
Un processo è un'istanza del programma del computer. In un singolo programma è possibile avere uno o più thread.
39) Dimmi la differenza tra un EXE e una DLL?
Un exe è un programma eseguibile mentre una DLL è un file che può essere caricato ed eseguito dai programmi in modo dinamico. È un repository di codice esterno per i programmi. Poiché entrambi sono programmi diversi, riutilizzare la stessa DLL invece di avere quel codice nel file. Riduce anche lo spazio di archiviazione richiesto.
40) Cos'è la tipizzazione forte e la tipizzazione debole? Quale è preferito? Perché?
La tipizzazione forte controlla i tipi di variabili in fase di compilazione. D'altra parte, la tipizzazione debole controlla i tipi del sistema in fase di esecuzione. Tra questi, la digitazione forte è sempre preferita perché minimizza i bug.
41) Descrivere la differenza tra programmazione orientata all'interfaccia, orientata agli oggetti e orientata agli aspetti.
- La programmazione dell'interfaccia è basata su contratto.
- L'orientamento agli oggetti è un modo per scrivere oggetti granulari che hanno un unico scopo.
- La programmazione orientata agli aspetti consiste nel separare il codice in modo tale che vari oggetti svolgano i compiti principali e i compiti sussidiari siano svolti da oggetti indipendenti.
42) Perché usare catch (eccezione) è sempre una pessima idea?
È una cattiva idea perché:
- Poiché non è definita alcuna variabile, non è possibile leggere l'eccezione
- È utile utilizzare un'eccezione quando si conoscono i tipi di eccezione.
43) Che tipo di dati vengono passati tramite le intestazioni HTTP?
Script e metadati passati tramite intestazioni HTTP.
44) Come stabilisci la priorità dei requisiti?
Innanzitutto, è necessario progettare un sistema valutando la struttura dei dati. Quindi dovresti passare alla struttura del codice necessaria per supportarlo.
45) Mi spiegate le differenze tra la progettazione orientata agli oggetti e quella basata sui componenti?
La progettazione orientata agli oggetti può essere facilmente incapsulata in una certa misura nella progettazione basata sui componenti.
46) Quando usi il polimorfismo?
Il polimorfismo viene utilizzato quando è necessaria la funzionalità di override durante l'ereditarietà della classe. Si tratta di classi condivise e contratti condivisi.
47) Qual è la differenza tra stack e coda?
- La coda è sempre First In, First Out
- Lo stack è sempre Last In, First Out
48) Cosa è essenziale per testare la qualità del codice?
Secondo me, il framework di unit test è essenziale per testare la qualità del codice.
49) Pensi che la manutenzione del software sia costosa?
Secondo me, la manutenzione del software non sarà mai costosa se utilizziamo un processo di sviluppo adeguato.
50) Mi dai differenze tra tag e rami?
I tag servono per i rilasci di versione che sono luoghi di conservazione temporanei per fare queste cose. Tuttavia, i rami vengono eliminati quando tali modifiche vengono unite nel trunk.
51) Dove è disponibile una variabile a livello di classe protetta?
Le variabili protette a livello di classe sono disponibili per qualsiasi sottoclasse derivata dalla classe base.
52) È possibile eseguire più blocchi catch per una singola istruzione try?
SÌ. È possibile eseguire più blocchi catch per una singola istruzione try.
53) Quando è necessario dichiarare una classe come astratta?
Dovremmo dichiarare una classe come astratta nelle seguenti situazioni:
- Quando la classe viene ereditata da una classe astratta, ma non tutti i metodi astratti sono stati sovrascritti.
- Nel caso in cui almeno uno dei metodi nella classe sia dichiarato come astratto.
54) Sviluppa un algoritmo che restituisca la tua posizione attuale e un elenco di posizioni di bancomat in quell'area. Ottieni gli sportelli bancomat K più vicini alla tua posizione.
Crea un metodo getDistance(a, b) che calcoli la distanza tra a e b.
Codice:
import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; public class PrioRQueueExample { public static void main(String[] args){ PriorityQueue<Double> pq = new PriorityQueue<Double>((x,y)-> {Double z = y-x;return z.intValue(); }); PrioRQueueExample pqe = new PrioRQueueExample(); //Number of ATMs to return i.e. K int num_ATMs = 3; double curr_loc = 0.00; Map<String,Double> nallATMLocs = new HashMap<String,Double>(); //Map of ATM names and their distance co-ordinates nallATMLocs.put("atm1",45.0); nallATMLocs.put("atm2",78.0); nallATMLocs.put("atm3",54.0); nallATMLocs.put("atm4",64.0); nallATMLocs.put("atm5",35.0); nallATMLocs.put("atm6",42.0); nallATMLocs.put("atm7",57.0); nallATMLocs.put("atm7",1.00); nallATMLocs.forEach((atm,dist) ->{if(pq.size() < num_ATMs){ pq.add(pqe.getLocation(curr_loc,dist));} else{ if( pq.peek() > pqe.getLocation(curr_loc,dist)){ pq.poll(); pq.add(pqe.getLocation(curr_loc,dist)); } } }); pq.forEach(atmLoc -> System.out.println(atmLoc)); } private double getLocation(double curr,double atm){ return atm - curr; } }
Queste domande del colloquio ti aiuteranno anche nel tuo viva(orale)