DEV Community

Cover image for Perguntas de entrevista DEV
Henrique Vital
Henrique Vital

Posted on

Perguntas de entrevista DEV

Aqui está uma lista das perguntas de programação, com as respostas explicativas e exemplos adicionais para cada uma:

1. Qual é o propósito das transações em SQL?

Resposta:

Garantir a integridade dos dados armazenados no banco de dados.

Explicação:

As transações em SQL asseguram que as operações realizadas no banco de dados sejam consistentes e seguras. Elas seguem os princípios ACID (Atomicidade, Consistência, Isolamento e Durabilidade), garantindo que ou todas as operações de uma transação sejam realizadas ou nenhuma delas. Caso ocorra uma falha, a transação pode ser revertida, mantendo a integridade dos dados.

Exemplo:

Imagine uma transação que envolve a transferência de dinheiro entre duas contas bancárias. Se a transferência falhar no meio do processo, a transação deve ser revertida para garantir que o dinheiro não seja perdido.


2. Qual é a principal razão para utilizar tipagem no desenvolvimento de software (por exemplo, em TypeScript)?

Resposta:

Facilidade na detecção de erros e bugs.

Explicação:

A tipagem estática, como no caso do TypeScript, ajuda a identificar erros de tipo durante o desenvolvimento, antes mesmo de o código ser executado. Isso pode reduzir significativamente a quantidade de bugs relacionados a tipos de dados incorretos, facilitando a manutenção e melhorando a qualidade do código.

Exemplo:

Em TypeScript, ao declarar uma variável como let idade: number = "25";, o compilador gerará um erro, porque estamos atribuindo uma string a uma variável do tipo número.


3. Qual é o benefício de usar um ORM (Object-Relational Mapper) em uma aplicação?

Resposta:

Para simplificar o processo de mapeamento de objetos para tabelas de banco de dados.

Explicação:

Os ORMs permitem que você trabalhe com objetos no código e os mapeie automaticamente para as tabelas do banco de dados, sem precisar escrever SQL diretamente. Isso facilita a interação com o banco de dados, aumentando a produtividade e evitando erros comuns de SQL.

Exemplo:

Com um ORM como Sequelize (para Node.js), ao criar um objeto User, você pode salvar e recuperar esse objeto automaticamente no banco de dados sem escrever consultas SQL manualmente.


4. Qual é a principal diferença entre null e undefined em JavaScript?

Resposta:

"Null" é atribuído explicitamente para indicar a ausência de qualquer valor de objeto, enquanto "undefined" é o valor padrão para variáveis não inicializadas.

Explicação:

  • null é um valor atribuído explicitamente para indicar a ausência de valor ou objeto.
  • undefined é o valor padrão para variáveis que são declaradas mas não inicializadas.

Exemplo:

let a = null;  // null é atribuído explicitamente
let b;         // b é undefined porque não foi inicializado

console.log(a);  // null
console.log(b);  // undefined
Enter fullscreen mode Exit fullscreen mode

5. Como o Flexbox pode ser usado para centralizar horizontalmente um elemento dentro de seu contêiner pai?

Resposta:

Aplicar a propriedade "display: flex" ao contêiner pai e usar a propriedade "justify-content: center".

Explicação:

O Flexbox facilita o alinhamento de elementos. Para centralizar um elemento horizontalmente, você deve configurar o contêiner pai com display: flex e usar justify-content: center para alinhar os itens horizontalmente no centro.

Exemplo:

.container {
  display: flex;
  justify-content: center;
}

.item {
  width: 50%;
}
Enter fullscreen mode Exit fullscreen mode
<div class="container">
  <div class="item">Item centralizado</div>
</div>
Enter fullscreen mode Exit fullscreen mode

6. Como otimizar o pseudocódigo para verificar se um número N é primo?

Resposta:

Utilizar a raiz quadrada de N como limite superior do loop.

Explicação:

Em vez de verificar todos os números até (N-1), você pode verificar até a raiz quadrada de (N). Isso reduz significativamente a quantidade de verificações, pois, se (N) tem um divisor maior que sua raiz quadrada, o outro divisor já terá sido encontrado antes.

Exemplo:

function isPrime(N) {
  if (N <= 1) return false;
  for (let i = 2; i <= Math.sqrt(N); i++) {
    if (N % i === 0) return false;
  }
  return true;
}
console.log(isPrime(29));  // true
Enter fullscreen mode Exit fullscreen mode

7. Qual é a finalidade das transações em SQL?

Resposta:

Garantir a integridade dos dados armazenados no banco de dados.

Explicação:

As transações em SQL são usadas para garantir que as operações no banco de dados sejam concluídas corretamente ou, caso contrário, revertidas. Isso garante que o banco de dados permaneça consistente, mesmo em caso de falha.

Exemplo:

Em uma transação de venda, se o pagamento falhar após a atualização do estoque, a transação pode ser revertida para garantir que o estoque não seja atualizado sem que o pagamento tenha sido realizado.


8. Qual comando em Git desfaz um merge realizado de forma errada?

Resposta:

git merge --abort

Explicação:

Se você executar um merge e perceber que trouxe as mudanças da branch errada, pode usar o comando git merge --abort para cancelar o merge e voltar ao estado anterior, sem que as mudanças sejam aplicadas.

Exemplo:

git merge feature-branch
# Se perceber que o merge foi feito na branch errada
git merge --abort
Enter fullscreen mode Exit fullscreen mode

9. Qual é o principal benefício de utilizar um ORM (Object-Relational Mapper)?

Resposta:

Para simplificar o processo de mapeamento de objetos para tabelas de banco de dados.

Explicação:

O ORM permite que você trabalhe com objetos em seu código, e o ORM cuida de mapear esses objetos para o banco de dados de forma automática, sem precisar escrever SQL diretamente.

Exemplo:

Usando o ORM Sequelize, ao criar um novo usuário, ele automaticamente salva os dados no banco de dados sem você escrever SQL:

const User = sequelize.define('User', {
  name: Sequelize.STRING,
  email: Sequelize.STRING
});

User.create({ name: 'John Doe', email: 'john@example.com' });
Enter fullscreen mode Exit fullscreen mode

Esses exemplos e explicações devem ajudar a entender melhor os conceitos abordados nas questões de programação.

Top comments (0)