50 perguntas e respostas da entrevista de engenharia de software
Perguntas e respostas da entrevista com desenvolvedores de software para calouros
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.
๐ Download gratuito de PDF: Perguntas e respostas da entrevista de engenharia de software
2) Qual รฉ a principal diferenรงa entre um programa de computador e um software de computador?
Um programa de computador รฉ um pedaรงo de 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 feito para melhorar a capacidade de manutenรงรฃo de um sistema de software.
4) Descreva resumidamente o processo de desenvolvimento de software:
O desenvolvimento de software รฉ um ciclo de vida composto pelas seguintes etapas:
- Anรกlise de requisitos
- Especificaรงรฃo
- Arquitetura de software
- Implementaรงรฃo
- Testes
- Documentaรงรฃo
- Treinamento e suporte
- Manutenรงรฃo
5) Quais sรฃo os modelos SDLC disponรญveis?
Modelo Cachoeira, Modelo Espiral, Modelo Big-bag, Modelo Iterativo e Modelo 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 que o software seja 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 for lenta, tentarei identificar o motivo da sua complexidade de tempo.
9) Cite duas ferramentas usadas para monitorar os requisitos de software.
Existem muitas maneiras de acompanhar os requisitos.
Dois comumente usados โโsรฃo:
- Faรงa um documento de especificaรงรตes de requisitos para listar todos os requisitos.
- Crie uma planilha Excel com a lista de requisitos, tipo, dependรชncia, prioridade, etc.
10) Qual a principal diferenรงa entre um stubs e um mock?
Um stub รฉ uma implementaรงรฃo mรญnima de uma interface que geralmente retorna dados codificados, enquanto o mock geralmente verifica as saรญdas em relaรงรฃo ร s expectativas. Essas expectativas sรฃo definidas no teste.
11) Em que linguagem vocรช gosta de escrever algoritmos de programaรงรฃo?
Cada desenvolvedor tem sua opiniรฃo quando se trata de escolhas de linguagem de programaรงรฃo. Porรฉm, deve-se preferir linguagens de alto nรญvel porque sรฃo dinรขmicas. Como C e C++ lรญnguas.
12) O que รฉ software de computador?
Software de computador รฉ um pacote que inclui um programa de software, sua documentaรงรฃo e um guia do usuรกrio sobre como usar o software.
13) Na sua opiniรฃo qual modelo SDLC รฉ o melhor?
Nรฃo existe tal classificaรงรฃo, pois os Modelos SDLC sรฃo adotados conforme a necessidade do processo de desenvolvimento. Pode diferir de software para software.
14) Quem รฉ o gerente de projetos 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 e a comunicaรงรฃo. Ele ou ela 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. Esta estimativa pode ser decidida consultando especialistas ou utilizando fรณrmulas prรฉ-definidas.
16) Como saber o tamanho de um produto de software?
O tamanho do produto de software pode ser calculado seguindo dois mรฉtodos
- 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 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 mudanรงas รฉ uma funรงรฃo que garante que todas as mudanรงas 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) Conte-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 Grรกfico Pert, Grรกfico Gantt, Histograma de Recursos, Relatรณrios de Status, 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. Presume-se que seja a descriรงรฃo do sistema alvo, suas funcionalidades e recursos.
23) O que รฉ estudo de viabilidade?
ร uma medida para descobrir o quรฃo prรกtico e benรฉfico o desenvolvimento do projeto 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.
- Econรดmico: Inclui o custo de treinamento, custo de ferramentas adicionais e estimativa geral de custos e benefรญcios do projeto.
- tรฉcnica: Avalia o aspecto tรฉcnico. ร possรญvel desenvolver este sistema? Avaliar a adequaรงรฃo da(s) mรกquina(s) e sistema operacional em que o software serรก executado, conhecimento do desenvolvimento de software e ferramentas disponรญveis para este projeto.
- Operaoperacional: 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 pelo custo estimado?
Depois de estudar tudo isso รฉ criado 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?
Mรฉtricas de Software oferece medidas para vรกrios aspectos do processo de software que sรฃo divididos em:
- Mรฉtricas de requisitos: requisitos de comprimento, integridade
- Mรฉtricas do produto: Nรบmero de linhas de codificaรงรฃo, mรฉtricas orientadas a objetos, mรฉtricas de design e teste.
26) O que รฉ modularizaรงรฃo?
Modularizaรงรฃo รฉ uma tรฉcnica usada para dividir um sistema de software em vรกrios mรณdulos discretos. Espera-se que execute as tarefas de forma independente.
27) O que รฉ coesรฃo?
A coesรฃo รฉ uma medida que define a intra-dependรชncia entre os elementos do mรณdulo.
28) Menciona algumas ferramentas de anรกlise e design de software?
Algumas das ferramentas mais importantes de anรกlise e design de software sรฃo:
- Diagramas de fluxo de dados
- Grรกficos Estruturados
- Inglรชs estruturado
- Dicionรกrio de dados
- Diagramas hierรกrquicos de entrada e saรญda do processo
- Diagramas de relacionamento de entidades e tabelas de decisรฃo
29) O que significa diagrama de fluxo de dados de nรญvel 0?
O nรญvel de abstraรงรฃo mais alto รฉ chamado de Nรญvel 0 do DFD. Tambรฉm รฉ chamado de DFD de nรญvel de contexto. Ele retrata todo o sistema de informaรงรฃo como um diagrama.
30) Qual a principal diferenรงa entre o inglรชs estruturado e o pseudocรณdigo?
Inglรชs estruturado รฉ o idioma nativo do inglรชs. ร usado para escrever a estrutura de um mรณdulo de programa. Ele usa palavras-chave de linguagem de programaรงรฃo. Por outro lado, o Pseudo Cรณdigo se assemelha mais ร linguagem de programaรงรฃo sem sintaxe de nenhuma linguagem especรญfica.
Perguntas e respostas vivas de engenharia de software para experientes
31) O que รฉ design estruturado?
O design estruturado รฉ uma conceituaรงรฃo do problema. ร tambรฉm chamado de design de soluรงรตes e que se baseia na estratรฉgia de โdividir para conquistarโ.
32) O que รฉ programaรงรฃo funcional?
ร um mรฉtodo de programaรงรฃo que utiliza 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 Auxiliado por Computador Engenharia de Software. 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 em sala limpa remove defeitos antes que o software tenha problemas.
36) Resolva este problema
Hรก vinte meias diferentes de dois tipos numa gaveta de um quarto escuro. Qual รฉ o nรบmero mรญnimo de meias que vocรช precisa levar para garantir que terรก um par que combine?โ
Se vocรช pegar trรชs meias, elas poderรฃo ser do mesmo tipo, mesmo que as chances sejam de 50%. As probabilidades nunca sรฃo uma realidade igual. Portanto, a รบnica maneira de 'garantir que vocรช tenha um par correspondente' รฉ pegar pelo menos 11 choques.
37) Como vocรช pode ter certeza de que seu cรณdigo escrito pode lidar com vรกrios tipos de situaรงรตes de erro?
Posso escrever testes que definam 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 uma 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? Por que?
A digitaรงรฃo forte verifica os tipos de variรกveis โโem tempo de compilaรงรฃo. Por outro lado, a digitaรงรฃo fraca verifica os tipos do sistema em tempo de execuรงรฃo. Entre eles, a digitaรงรฃo 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 que tรชm um รบnico propรณsito.
- A Programaรงรฃo Orientada a Aspectos consiste em segregar o cรณdigo de tal maneira que vรกrios objetos executam as tarefas principais e as tarefas subsidiรกrias sรฃo realizadas por objetos independentes.
42) Por que usar catch (exceรงรฃo) รฉ 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 transmitidos por cabeรงalhos HTTP.
44) Como vocรช prioriza os requisitos?
Primeiro, vocรช precisa projetar um sistema avaliando a estrutura de dados. Entรฃo vocรช deve passar para a estrutura de cรณdigo necessรกria para suportรก-lo.
45) Dรช-me as diferenรงas entre design orientado a objetos e baseado em componentes?
O design orientado a objetos pode ser facilmente encapsulado atรฉ certo ponto no design baseado em componentes.
46) Quando vocรช usa polimorfismo?
O polimorfismo รฉ usado quando hรก necessidade de funcionalidade de substituiรงรฃo ao herdar a classe. Trata-se de aulas compartilhadas e contratos compartilhados.
47) Qual รฉ a diferenรงa entre pilha e fila?
- A fila รฉ sempre o primeiro a entrar, primeiro a sair
- A pilha รฉ sempre a รบltima a entrar, a primeira a sair
48) O que รฉ essencial para testar a qualidade do cรณdigo?
Na minha opiniรฃo, o framework de testes unitรกrios รฉ essencial para testar a qualidade do cรณdigo.
49) Vocรช acha que a manutenรงรฃo de software รฉ cara?
Na minha opiniรฃo, a manutenรงรฃo de software nunca serรก cara se usarmos um processo de desenvolvimento adequado.
50) Dรช-me diferenรงas entre tags e ramificaรงรตes?
Tags sรฃo para lanรงamentos de versรฃo que sรฃo locais temporรกrios para fazer tal coisa. No entanto, as ramificaรงรตes sรฃo excluรญdas quando essas alteraรงรตes sรฃo mescladas no tronco.
51) Onde estรก disponรญvel uma variรกvel protegida em nรญvel de classe?
Variรกveis โโprotegidas em nรญvel de classe 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:
- Quando a classe รฉ herdada de uma classe abstrata, mas nem todos os mรฉtodos abstratos foram substituรญdos.
- No caso em que pelo menos um dos mรฉtodos da classe รฉ declarado como abstrato.
54) Desenvolva um algoritmo que produza sua localizaรงรฃo atual e uma lista de locais 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 calcule 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<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;
}
}
Essas perguntas da entrevista tambรฉm ajudarรฃo em sua viva (oral)

