50 questions et réponses d'entretien en génie logiciel
Questions et réponses d'entretien avec les développeurs de logiciels pour les débutants
1) Quelles sont les catégories importantes de logiciels ?
- Logiciel système
- Le logiciel d'application
- Logiciel embarqué
- Applications Web
- Logiciel d'intelligence artificielle
- Logiciel scientifique.
👉 Téléchargement PDF gratuit : questions et réponses d'entretien en génie logiciel
2) Quelle est la principale différence entre un programme informatique et un logiciel informatique ?
Un programme informatique est un morceau de code de programmation. Il effectue une tâche bien définie. D'autre part, le logiciel comprend du code de programmation, de la documentation et un guide d'utilisation.
3) Qu’est-ce que la réingénierie logicielle ?
Il s'agit d'un processus de développement logiciel visant à améliorer la maintenabilité d'un système logiciel.
4) Décrivez brièvement le processus de développement logiciel :
Le développement d'un logiciel est un cycle de vie composé des étapes suivantes :
- Analyse des besoins
- Spécification
- Architecture logicielle
- Implantation
- Contrôle de qualité
- Documentation
- Formation et accompagnement
- Entretien
5) Quels sont les modèles SDLC disponibles ?
Le modèle en cascade, le modèle en spirale, le modèle Big-bag, le modèle itératif et le modèle en V sont quelques-uns des modèles les plus célèbres. Modèles SDLC.
6) Qu'est-ce que la vérification et la validation ?
Vérification:
La vérification est un terme qui fait référence à l'ensemble des activités qui garantissent qu'un logiciel implémente une fonction spécifique.
Validation:
Il fait référence à l'ensemble des activités qui garantissent que les logiciels ont été construits en fonction des besoins des clients.
7) Dans le processus de développement logiciel, quelle est la signification du débogage ?
Le débogage est le processus qui aboutit à la suppression d’une erreur. C’est une partie très importante de la réussite des tests.
8) Comment pouvez-vous vous assurer que votre code est à la fois sûr et rapide ?
Dans le logiciel, la sécurité du développement est toujours la première. Donc, si l'exécution du programme est lente, j'essaierai d'en identifier la raison en raison de sa complexité temporelle.
9) Nommez deux outils utilisés pour suivre les exigences logicielles ?
Il existe de nombreuses façons de suivre les exigences.
Deux couramment utilisés sont :
- Créez un document de spécifications des exigences pour répertorier toutes les exigences.
- Créez une feuille Excel contenant la liste des exigences, du type, de la dépendance, de la priorité, etc.
10) Quelle est la principale différence entre un stubs et un mock ?
Un stub est une implémentation minimale d'une interface qui renvoie généralement des données codées en dur tandis qu'une simulation vérifie généralement les sorties par rapport aux attentes. Ces attentes sont définies dans le test.
11) Dans quel langage aimez-vous écrire des algorithmes de programmation ?
Chaque développeur a son point de vue sur les choix de langage de programmation. Cependant, il faut préférer les langages de haut niveau car ils sont dynamiques. Comme C et C++ langues.
12) Qu'est-ce qu'un logiciel informatique ?
Un logiciel informatique est un package qui comprend un logiciel, sa documentation et un guide de l'utilisateur expliquant comment utiliser le logiciel.
13) Selon vous quel modèle SDLC est le meilleur ?
Il n’existe pas de classement de ce type, car les modèles SDLC sont adoptés en fonction des besoins du processus de développement. Cela peut différer d’un logiciel à l’autre.
14) Qui est le chef de projet logiciel ? Quel est son rôle ?
Un chef de projet logiciel est une personne chargée de gérer le projet de développement logiciel.
Le chef de projet s'occupe de la planification du projet, du suivi des progrès et de la communication. Il ou elle gère également les risques et les ressources pour livrer le projet dans les limites des contraintes de temps, de coût et de qualité.
15) Qu’entend-on par portée logicielle ?
La portée du logiciel est une frontière bien définie. Il comprend toutes sortes d’activités réalisées pour développer et fournir le produit logiciel.
La portée du logiciel définit toutes les fonctionnalités et artefacts à fournir dans le cadre du logiciel. La portée identifie également ce que fera le produit ? Quelle n'est pas la partie du projet ? Qu’est-ce que l’estimation de projet ?
Ce processus est utile pour estimer divers aspects du produit logiciel. Cette estimation peut être décidée soit en consultant des experts, soit en utilisant des formules prédéfinies.
16) Comment connaître la taille d'un produit logiciel ?
La taille du produit logiciel peut être calculée en utilisant les deux méthodes suivantes
- Compter les lignes de code livré
- Comptage des points de fonction délivrés
17) Que sont les points de fonction ?
Les points de fonction sont les fonctionnalités fournies par le produit logiciel. Elle est considérée comme la mesure la plus importante de la taille du logiciel.
18) Quelles sont les techniques d'estimation de projets logiciels disponibles ?
Les techniques d’estimation les plus largement utilisées sont :
- Technique de décomposition
- Technique empirique
19) Qu'est-ce que la gestion de la configuration logicielle ?
La gestion de la configuration logicielle est un processus de suivi et de contrôle des modifications apportées au logiciel.
Le contrôle des modifications est une fonction qui garantit que toutes les modifications apportées au système logiciel sont cohérentes et créées à l'aide des règles et réglementations de l'organisation.
20) Comment mesurer l’exécution d’un projet ?
Nous pouvons mesurer l'exécution du projet à l'aide du suivi des activités, des rapports d'état et des listes de contrôle des jalons.
21) Parlez-moi de quelques outils de gestion de projet.
Il existe de nombreux types d'outils de gestion utilisés selon les besoins d'un projet logiciel. Certains d'entre eux sont le diagramme de Pert, le diagramme de Gantt, l'histogramme des ressources, les rapports d'état, etc.
22) Quelles sont les exigences logicielles ?
Les exigences logicielles sont une description fonctionnelle d'un système logiciel proposé. Il est supposé qu'il s'agit de la description du système cible, de ses fonctionnalités et de ses caractéristiques.
23) Qu’est-ce qu’une étude de faisabilité ?
Il s'agit d'une mesure permettant de déterminer dans quelle mesure le développement d'un projet logiciel s'avérera pratique et bénéfique pour l'organisation. L’analyseur logiciel réalise une étude pour connaître la faisabilité économique, technique et opérationnelle du projet.
- Économique: Il comprend le coût de la formation, le coût des outils supplémentaires et l'estimation globale des coûts et des bénéfices du projet.
- Technique: Il évalue l'aspect technique. Est-il possible de développer ce système ? Évaluer l'adéquation de la ou des machines et du système d'exploitation sur lesquels le logiciel sera exécuté, la connaissance du développement logiciel et des outils disponibles pour ce projet.
- Operafacultatif : Ici, l'analyste doit évaluer que l'organisation sera capable de s'adapter en douceur aux changements apportés en fonction de la demande du projet. Le problème vaut-il la peine d’être résolu au coût estimé ?
Après avoir étudié tout cela, le rapport final de faisabilité est créé.
24) Quelles sont les exigences fonctionnelles et non fonctionnelles ?
Les exigences fonctionnelles sont des fonctionnalités fonctionnelles attendues par les utilisateurs du produit logiciel proposé.
Les exigences non fonctionnelles sont liées à la sécurité, aux performances, à l'apparence et à la convivialité de l'interface utilisateur.
25) Qu'est-ce que la métrique logicielle ?
Software Metrics propose des mesures pour divers aspects du processus logiciel qui sont divisés en :
- Mesures des exigences : exigences de longueur, exhaustivité
- Métriques du produit : nombre de lignes de codage, métriques orientées objet, métriques de conception et de test.
26) Qu'est-ce que la modularisation ?
La modularisation est une technique utilisée pour diviser un système logiciel en différents modules discrets. Il est prévu qu'il accomplisse les tâches de manière indépendante.
27) Qu'est-ce que la cohésion ?
La cohésion est une mesure qui définit l'intra-fiabilité entre les éléments du module.
28) Mentionne des outils d'analyse et de conception de logiciels ?
Certains des outils d'analyse et de conception de logiciels les plus importants sont :
- Diagrammes de flux de données
- Graphiques structurés
- Anglais structuré
- Dictionnaire de données
- Diagrammes de sortie du processus d'entrée hiérarchique
- Diagrammes de relations d'entités et tables de décision
29) Qu'entend-on par diagramme de flux de données de niveau 0 ?
Le niveau d'abstraction le plus élevé est appelé niveau 0 de DFD. Il est également appelé DFD au niveau du contexte. Il représente l’ensemble du système d’information sous la forme d’un seul diagramme.
30) Quelle est la principale différence entre l'anglais structuré et le pseudo-code ?
L'anglais structuré est la langue anglaise native. Il est utilisé pour écrire la structure d'un module de programme. Il utilise des mots-clés du langage de programmation. D'un autre côté, le pseudo-code ressemble davantage au langage de programmation sans syntaxe d'un langage spécifique.
Questions et réponses viva en génie logiciel pour les expérimentés
31) Qu’est-ce que le design structuré ?
La conception structurée est une conceptualisation du problème. Il s'agit également d'une conception de solution basée sur la stratégie « diviser pour mieux régner ».
32) Qu'est-ce que la programmation fonctionnelle ?
Il s'agit d'une méthode de programmation qui utilise les concepts d'une fonction mathématique. Il fournit des moyens de calcul sous forme de fonctions mathématiques, qui produisent également des résultats quel que soit l'état du programme.
33) Qu'est-ce que l'assurance qualité par rapport au contrôle qualité ?
L'assurance qualité vérifie si le processus approprié est suivi lors du développement du logiciel, tandis que le contrôle qualité s'occupe du maintien de la qualité du produit logiciel.
34) Que sont les outils CASE ?
CASE signifie assisté par ordinateur Génie logiciel. Il s'agit d'un ensemble de programmes d'application logiciels automatisés, utilisés pour prendre en charge, améliorer et renforcer les activités SDLC.
35) Quel modèle de processus supprime les défauts avant que le logiciel ne rencontre des problèmes ?
La méthode d’ingénierie logicielle en salle blanche supprime les défauts avant que le logiciel ne rencontre des problèmes.
36) Résolvez ce problème
Il y a vingt chaussettes différentes de deux types dans un tiroir dans une pièce sombre. Quel est le nombre minimum de chaussettes que vous devez emporter pour être sûr d’avoir une paire assortie ? »
Si vous prenez trois chaussettes, elles peuvent être du même type même si les chances sont de 50 %. Les chances ne sont jamais égales à la réalité. Par conséquent, la seule façon de « s'assurer que vous avez une paire correspondante » est de capter au moins 11 chocs.
37) Comment pouvez-vous vous assurer que votre code écrit peut gérer différents types de situations d'erreur ?
Je peux écrire des tests qui définissent les situations d'erreur attendues.
38) Expliquez les différences entre un Thread et un Processus ?
Un processus est une instance du programme informatique. Dans un seul programme, il est possible d'avoir un ou plusieurs threads.
39) Dites-moi la différence entre un EXE et une DLL ?
Un exe est un programme exécutable tandis qu'une DLL est un fichier qui peut être chargé et exécuté dynamiquement par des programmes. Il s'agit d'un référentiel de code externe pour les programmes. Comme les deux sont des programmes différents, réutilisez la même DLL au lieu d'avoir ce code dans leur fichier. Cela réduit également l’espace de stockage requis.
40) Qu'est-ce que le typage fort et le typage faible ? Lequel est préféré ? Pourquoi?
Le typage fort vérifie les types de variables au moment de la compilation. D'un autre côté, le typage faible vérifie les types du système au moment de l'exécution. Parmi eux, le typage fort est toujours préféré car il minimise les bugs.
41) Décrire la différence entre la programmation orientée interface, orientée objet et orientée aspect.
- La programmation d'interface est basée sur un contrat.
- L'orientation objet est une manière d'écrire des objets granulaires qui ont un seul objectif.
- La programmation orientée aspect consiste à séparer le code de telle manière que divers objets portent les tâches principales et que les tâches subsidiaires soient portées par des objets indépendants.
42) Pourquoi utiliser catch (exception) est toujours une mauvaise idée ?
C'est une mauvaise idée car :
- Comme aucune variable n'est définie, il n'est pas possible de lire l'exception
- Il est bon d'utiliser une exception lorsque vous connaissez les types d'exception.
43) Quel type de données est transmis via les en-têtes HTTP ?
Script et métadonnées transmis via les en-têtes HTTP.
44) Comment hiérarchisez-vous les exigences ?
Tout d’abord, vous devez concevoir un système en évaluant la structure des données. Ensuite, vous devez passer à la structure de code nécessaire pour le prendre en charge.
45) Donnez-moi les différences entre la conception orientée objet et basée sur les composants ?
La conception orientée objet peut facilement être encapsulée dans une certaine mesure dans la conception basée sur les composants.
46) Quand utilise-t-on le polymorphisme ?
Le polymorphisme est utilisé lorsqu'il est nécessaire de remplacer une fonctionnalité lors de l'héritage d'une classe. Il s'agit de classes partagées et de contrats partagés.
47) Quelle est la différence entre la pile et la file d'attente ?
- La file d'attente est toujours premier entré, premier sorti
- La pile est toujours la dernière entrée, la première sortie
48) Qu'est-ce qui est essentiel pour tester la qualité du code ?
Selon moi, le framework de tests unitaires est essentiel pour tester la qualité du code.
49) Pensez-vous que la maintenance des logiciels coûte cher ?
Selon moi, la maintenance des logiciels ne sera jamais coûteuse si nous utilisons un processus de développement approprié.
50) Donnez-moi des différences entre les balises et les branches ?
Les balises sont destinées aux versions de version qui sont des lieux de stockage temporaires pour faire de telles choses. Cependant, les branches sont supprimées lorsque ces modifications sont fusionnées dans le tronc.
51) Où une variable protégée au niveau de la classe est-elle disponible ?
Les variables protégées au niveau de la classe sont disponibles pour toute sous-classe dérivée de la classe de base.
52) Est-il possible d'exécuter plusieurs blocs catch pour une seule instruction try ?
Oui. Plusieurs blocs catch peuvent être exécutés pour une seule instruction try.
53) Quand faut-il déclarer une classe comme abstraite ?
Nous devons déclarer une classe comme abstraite dans les situations suivantes :
- Lorsque la classe est héritée d’une classe abstraite, mais que toutes les méthodes abstraites n’ont pas été remplacées.
- Dans le cas où au moins une des méthodes de la classe est déclarée comme abstraite.
54) Développez un algorithme qui affiche votre emplacement actuel et une liste des emplacements des guichets automatiques dans cette zone. Obtenez les guichets automatiques K les plus proches de votre emplacement.
Créez une méthode getDistance(a, b) qui calcule la distance entre a et b.
Code:
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; } }
Ces questions d'entretien vous aideront également dans votre soutenance