As 50 principais perguntas e respostas da entrevista de engenharia de software

baixar PDF

1) Quais são as categorias importantes de software?

  • Software de sistema
  • Software de aplicação
  • Software embutido
  • Aplicativos da web
  • Software de inteligência artificial
  • Software científico.

2) Qual é a principal diferença entre um programa de computador e um software de computador?

Um programa de computador é um código de programação. Ele executa uma tarefa bem definida. Por outro lado, o software inclui código de programação, documentação e guia do usuário.

3) O que é reengenharia de software?

É um processo de desenvolvimento de software que visa melhorar a manutenção de um sistema de software.

4) Descreva o processo de desenvolvimento de software em poucas palavras:

O desenvolvimento de software é um ciclo de vida composto pelas seguintes etapas:

  • Análise de requisitos
  • Especificação
  • Arquitetura de software
  • Implementação
  • Testando
  • Documentação
  • Treinamento e suporte
  • Manutenção

5) Quais são os modelos SDLC disponíveis?

O modelo em cascata, o modelo em espiral, o modelo big-bag, o modelo iterativo e o modelo em V são alguns dos famosos modelos SDLC.

6) O que é verificação e validação?

Verificação:

Verificação é um termo que se refere ao conjunto de atividades que garantem que o software implemente uma função específica.

Validação:

Refere-se ao conjunto de atividades que garantem aquele software que foi construído de acordo com a necessidade dos clientes.

7) No processo de desenvolvimento de software, qual é o significado de depuração?

A depuração é o processo que resulta na remoção do erro. É uma parte muito importante do teste bem-sucedido.

8) Como você pode ter certeza de que seu código é seguro e rápido?

No software, a segurança do desenvolvimento está sempre em primeiro lugar. Portanto, se a execução do programa é lenta, tentarei identificar as razões de sua complexidade de tempo.

9) Cite duas ferramentas que são usadas para rastrear os requisitos de software.

Existem várias maneiras de controlar os requisitos.

Dois comumente usados ​​são:

  • Faça um documento de especificações de requisitos para listar todos os requisitos.
  • Crie uma planilha do Excel com a lista de requisitos, tipo, dependência, prioridade, etc.

10) Qual é a principal diferença entre um stubs, um mock?

Um stub é uma implementação mínima de uma interface que geralmente retorna dados codificados permanentemente, enquanto o mock geralmente verifica as saídas em relação às expectativas. Essas expectativas são definidas no teste.

11) Qual linguagem você gosta de escrever algoritmos de programação?

Cada desenvolvedor tem suas opiniões quando se trata das opções de linguagem de programação. Porém, deve-se preferir linguagens de alto nível porque são dinâmicas. Como as linguagens C e C ++.

12) O que é software de computador?

O software de computador é um pacote que inclui um programa de software, sua documentação e o guia do usuário sobre como usar o software.

13) Na sua opinião, qual modelo SDLC é o melhor?

Não existe essa classificação, pois os Modelos SDLC são adotados conforme a necessidade do processo de desenvolvimento. Pode ser diferente de software para software.

14) Quem é o gerente de projeto de software? Qual é o seu papel?

Um gerente de projeto de software é a pessoa responsável por gerenciar o projeto de desenvolvimento de software.

O gerente do projeto está fazendo o planejamento do projeto, monitorando o andamento, a comunicação. Ele também gerencia riscos e recursos para entregar o projeto dentro das restrições de tempo, custo e qualidade.

15) O que significa escopo de software?

O escopo do software é um limite bem definido. Inclui todos os tipos de atividades realizadas para desenvolver e entregar o produto de software.

O escopo do software define todas as funcionalidades e artefatos a serem entregues como parte do software. O escopo também identifica o que o produto fará? O que não faz parte do projeto? O que é estimativa de projeto?

Este processo é útil para estimar vários aspectos do produto de software. Essa estimativa pode ser decidida consultando especialistas ou usando fórmulas predefinidas.

16) Como saber o tamanho de um produto de software?

O tamanho do produto de software pode ser calculado usando dois métodos a seguir

  • Contando as linhas do código entregue
  • Contando pontos de função entregues

17) O que são pontos de função?

Os pontos de função são os recursos fornecidos pelo produto de software. É considerada a medida mais importante para o tamanho do software.

18) Quais são as técnicas de estimativa de projetos de software disponíveis?

As técnicas de estimativa mais amplamente utilizadas são:

  • Técnica de decomposição
  • Técnica empírica

19) O que é gerenciamento de configuração de software?

O gerenciamento de configuração de software é um processo de rastreamento e controle de alterações que acontecem no software.

O controle de alterações é uma função que garante que todas as alterações feitas no sistema de software sejam consistentes e criadas usando regras e regulamentos organizacionais.

20) Como você pode medir a execução do projeto?

Podemos medir a execução do projeto usando monitoramento de atividades, relatórios de status e listas de verificação de marcos.

21) Fale-me sobre algumas ferramentas de gerenciamento de projetos.

Existem muitos tipos de ferramentas de gerenciamento usadas de acordo com a necessidade de um projeto de software. Alguns deles são Pert Chart, Gantt Chart, Resource Histogram, Status Reports, etc.

22) Quais são os requisitos de software?

Os requisitos de software são uma descrição funcional de um sistema de software proposto. Supõe-se que seja a descrição do sistema de destino, suas funcionalidades e recursos.

23) O que é estudo de viabilidade?

É uma medida para descobrir o quão prático e benéfico o desenvolvimento de projetos de software será para a organização. O analisador de software realiza um estudo para conhecer a viabilidade econômica, técnica e operacional do projeto.

  1. Econômico: Inclui o custo de treinamento, custo de ferramentas adicionais e estimativa geral dos custos e benefícios do projeto.

  2. Técnico: Avalie o aspecto técnico. É possível desenvolver este sistema? Avaliação da adequação da (s) máquina (s) e do sistema operacional no qual o software será executado, conhecimento do desenvolvimento de software e ferramentas disponíveis para este projeto.

  3. Operacional: Aqui o analista precisa avaliar se a organização será capaz de se ajustar sem problemas às mudanças feitas de acordo com a demanda do projeto. Vale a pena resolver o problema com o custo estimado?

Após, estudando tudo isso, é gerado o relatório final de viabilidade.

24) O que são requisitos funcionais e não funcionais?

Requisitos funcionais são recursos funcionais esperados pelos usuários do produto de software proposto.

Os requisitos não funcionais estão relacionados à segurança, desempenho, aparência e comportamento da interface do usuário.

25) O que é métrica de software?

Software Metrics oferece medidas para vários aspectos do processo de software que são divididos em:

  1. Métricas de requisitos: requisitos de comprimento, integridade
  2. Métricas do produto: Número de linhas de codificação, métricas orientadas a objetos, projeto e métricas de teste.

26) O que é modularização?

Modularização é uma técnica usada para dividir um sistema de software em vários módulos discretos. Isso é esperado para realizar as tarefas de forma independente.

27) O que é coesão?

A coesão é uma medida que define a intra-confiança entre os elementos do módulo.

28) Menciona algumas ferramentas de análise e design de software?

Algumas das ferramentas de design e análise de software mais importantes são:

  • Diagramas de fluxo de dados
  • Gráficos Estruturados
  • Inglês Estruturado
  • Dicionário de dados
  • Diagramas hierárquicos do processo de entrada e saída
  • Diagramas de relacionamento de entidades e tabelas de decisão

29) O que significa diagrama de fluxo de dados nível 0?

O nível de abstração mais alto é chamado de Nível 0 de DFD. Também é chamado de DFD de nível de contexto. Ele retrata todo o sistema de informações como um diagrama.

30) Qual é a principal diferença entre inglês estruturado e pseudo código?

O inglês estruturado é o idioma nativo do inglês. É usado para escrever a estrutura de um módulo de programa. Ele usa palavras-chave da linguagem de programação. Por outro lado, o Pseudo Código é mais parecido com a linguagem de programação sem sintaxe de nenhuma linguagem específica.

31) O que é design estruturado?

O projeto estruturado é uma conceituação de problema. Também chamado de design de solução e que se baseia na estratégia de 'dividir para conquistar'.

32) O que é programação funcional?

É um método de programação que usa os conceitos de uma função matemática. Ele fornece meios de computação como funções matemáticas, que também produzem resultados independentemente do estado do programa.

33) O que é garantia de qualidade vs. controle de qualidade?

A Garantia de Qualidade verifica se o processo adequado é seguido durante o desenvolvimento do software, enquanto o Controle de Qualidade trata da manutenção da qualidade do produto de software.

34) O que são ferramentas CASE?

CASE significa Engenharia de Software Assistida por Computador. Eles são um conjunto de programas aplicativos de software automatizados, que são usados ​​para apoiar, aprimorar e fortalecer as atividades do SDLC.

35) Qual modelo de processo remove defeitos antes que o software tenha problemas?

O método de engenharia de software de sala limpa remove os defeitos antes que o software tenha problemas.

36) Resolva este problema

Existem vinte meias diferentes de dois tipos em uma gaveta em um quarto escuro. Qual é o número mínimo de meias que você precisa levar para garantir que você tenha um par combinando? '

Se você escolher três meias, elas podem ser do mesmo tipo, mesmo que as probabilidades sejam de 50%. As probabilidades nunca são iguais. Portanto, a única maneira de 'garantir que você tenha um par compatível' é captar pelo menos 11 números de choques.

37) Como você pode ter certeza de que seu código escrito pode lidar com vários tipos de situação de erro?

Posso escrever testes que definem as situações de erro esperadas.

38) Explique as diferenças entre um Thread e um Processo?

Um processo é uma instância do programa de computador. Em um único programa, é possível ter um ou mais threads.

39) Diga-me a diferença entre um EXE e um DLL?

Um exe é um programa executável, enquanto uma DLL é um arquivo que pode ser carregado e executado por programas dinamicamente. É um repositório de código externo para programas. Como ambos são programas diferentes, reutilize a mesma DLL em vez de ter esse código em seu arquivo. Também reduz o espaço de armazenamento necessário.

40) O que é tipagem forte e tipagem fraca? Qual é o preferido? Porque?

A tipagem forte verifica os tipos de variáveis ​​em tempo de compilação. Por outro lado, a digitação fraca verifica os tipos de sistema em tempo de execução. Entre eles, a tipagem forte é sempre preferida porque minimiza os bugs.

41) Descreva a diferença entre programação orientada a interface, orientada a objetos e orientada a aspectos.

  • A programação da interface é baseada em contrato.
  • Orientado a objetos é uma forma de escrever objetos granulares com um único propósito.
  • A Programação Orientada a Aspectos serve para segregar o código de forma que vários objetos executem as tarefas principais e as tarefas subsidiárias sejam executadas por objetos independentes.

42) Por que usar catch (exception) é sempre uma má ideia?

É uma má ideia porque:

  • Como não há variável definida, não é possível ler a exceção
  • É bom usar uma exceção quando você conhece tipos de exceção.

43) Que tipo de dados são passados ​​via cabeçalhos HTTP?

Script e metadados passados ​​por cabeçalhos HTTP.

44) Como você prioriza os requisitos?

Primeiro, você precisa projetar um sistema avaliando a estrutura de dados. Em seguida, você deve passar para a estrutura de código necessária para suportá-lo.

45) Quais são as diferenças entre o projeto orientado a objetos e o projeto baseado em componentes?

O design orientado a objetos pode ser facilmente encapsulado em algum grau no design baseado em componentes.

46) Quando você usa polimorfismo?

O polimorfismo é usado quando há necessidade de uma funcionalidade de substituição ao herdar a classe. É sobre aulas compartilhadas e contratos compartilhados.

47) Qual é a diferença entre pilha e fila?

  • A fila é sempre o primeiro a entrar, o primeiro a sair
  • A pilha é sempre o último a entrar, o primeiro a sair

48) O que é essencial para testar a qualidade do código?

Na minha opinião, a estrutura de teste de unidade é essencial para testar a qualidade do código.

49) Você acha que a manutenção de software é cara?

Na minha opinião, manutenções de software nunca serão caras se usarmos o processo de desenvolvimento adequado.

50) Dê-me diferenças entre tags e branches?

As tags são para versões de versões que são locais de retenção temporários para fazer tal coisa. No entanto, os ramos são excluídos quando essas alterações são mescladas no tronco.

51) Onde uma variável protegida em nível de classe está disponível?

Variáveis ​​de nível de classe protegidas estão disponíveis para qualquer subclasse derivada da classe base.

52) É possível executar vários blocos catch para uma única instrução try?

sim. Vários blocos catch podem ser executados para uma única instrução try.

53) Quando você precisa declarar uma classe como abstrata?

Devemos declarar uma classe como abstrata nas seguintes situações:

  1. Quando a classe é herdada de uma classe abstrata, mas nem todos os métodos abstratos foram substituídos.
  2. No caso em que, no mínimo, um dos métodos da classe é declarado como abstrato.

54) Desenvolva um algoritmo que produza sua localização atual e uma lista de localizações de caixas eletrônicos nessa área. Obtenha os caixas eletrônicos K mais próximos de sua localização.

Crie um método getDistance (a, b) que calcula a distância entre a e b.

Código:

import java.util.HashMap; import java.util.Map; import java.util.PriorityQueue; public class PrioRQueueExample { public static void main(String[] args){ PriorityQueue pq = new PriorityQueue((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 nallATMLocs = new HashMap(); //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() 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; } }