Não sendo da área, sobrevivendo como desenvolvedor
#14. Conteúdo frequente em entrevistas técnicas para desenvolvedores iniciantes
[Áreas da memória principal]
- Área de código: área onde o código-fonte do programa é armazenado, e a CPU busca as instruções (fonte, função, instruções de controle) armazenadas na área de código para processá-las. Por exemplo, quando um programa escrito em C é executado, o código-fonte desse programa é armazenado na área de código.
- Área de dados: área onde as variáveis globais e estáticas são armazenadas, alocadas com o início do programa e permanecendo até sua finalização. Por exemplo, quando um programa escrito em C é executado, as variáveis globais ou estáticas declaradas nesse programa são armazenadas na área de dados.
- Área de pilha: área de memória temporária usada pelo programa, onde as variáveis locais e parâmetros relacionados à chamada de função são armazenados. É alocada com a chamada da função e liberada quando a função é finalizada. Por exemplo, quando uma função escrita em C é chamada, as variáveis locais ou parâmetros usados nessa função são alocados na área de pilha.
- Área de heap: área onde o usuário aloca e libera dinamicamente o espaço de memória. Por exemplo, quando a memória é alocada dinamicamente usando a função malloc() em C, a área de memória alocada é armazenada na área de heap.
- Pilha: estrutura de dados do tipo LIFO (Last-In, First-Out). Por exemplo, o botão 'Voltar' em um computador é semelhante a uma pilha. As páginas visitadas anteriormente são armazenadas na pilha e, quando o botão 'Voltar' é pressionado, a página mais recentemente armazenada é recuperada e exibida.
- Fila: estrutura de dados do tipo FIFO (First-In, First-Out). Por exemplo, receber um número de atendimento em um banco e entrar na fila de espera é semelhante a uma fila. A pessoa que chegou primeiro é atendida primeiro, e a pessoa que chegou por último é atendida por último.
- Árvore: estrutura de dados que representa dados em uma estrutura hierárquica. Por exemplo, a DOM (Document Object Model) do HTML é semelhante a uma árvore. A estrutura de uma página HTML é representada por uma árvore, começando com o nó raiz, a tag html, e os nós filhos sendo representados sequencialmente.
- Heap: uma das estruturas de árvore binária, dividida em heap máximo e heap mínimo. Por exemplo, em uma fila de prioridade, os dados com a maior prioridade são colocados no nó raiz do heap e os dados com a prioridade subsequente são colocados nos nós filhos, sendo esse um exemplo de heap máximo.
- RDBMS: banco de dados que define e gerencia dados de forma estruturada com um esquema rígido. Os dados podem ser armazenados de forma distribuída e são fáceis de modificar. Por exemplo, MySQL, Oracle e MS-SQL são exemplos típicos de RDBMS.
- NoSQL: banco de dados que armazena e gerencia dados com um esquema flexível. É adequado para o processamento e armazenamento de grandes volumes de dados e também possui alta escalabilidade. Por exemplo, MongoDB, Cassandra e HBase são exemplos típicos de NoSQL.
[Orientação a procedimentos e orientação a objetos]
- Programação orientada a procedimentos: técnica de programação onde o processamento sequencial é priorizado. Linguagens como C e Pascal são linguagens orientadas a procedimentos.
- Programação orientada a objetos: método que trata dados e procedimentos vinculados logicamente como um conceito chamado objeto (Object). Java, C++ e Python são exemplos de linguagens orientadas a objetos. Por exemplo, em um programa de simulação de carro, o carro pode ser representado como um objeto, e as propriedades do carro (cor, aceleração, etc.) como dados e as funções executadas pelo carro (dirigir, parar, etc.) como métodos.
[Sobrescrita e Sobrecarga]
- Sobrescrita (Overriding): redefinir e usar um método que uma classe pai possui em uma classe filha. Quando um método da classe pai é chamado na classe filha, o método redefinido na classe filha é executado em vez do método da classe pai. Por exemplo, o método toString() em Java é um exemplo de sobrescrita.
- Sobrecarga (Overloading): definir vários métodos com o mesmo nome, mas com tipos e números de parâmetros diferentes para responder a vários tipos de chamadas. Vários métodos com o mesmo nome, mas parâmetros diferentes, são executados. Por exemplo, o método print() em Java é um exemplo de sobrecarga.
[Algoritmo de substituição de página]
- FIFO (First-In, First-Out): substitui a página que está na memória física há mais tempo. Em um computador, 'fechar na barra de tarefas' também é semelhante ao algoritmo FIFO. O programa que foi iniciado primeiro é exibido por último e fechado, assim como no FIFO.
- LRU (Least Recently Used): substitui a página que não é usada há mais tempo. Um 'aplicativo para fechar aplicativos' que fecha aplicativos antigos e não usados com frequência também é semelhante ao algoritmo LRU.
- LFU (Least Frequently Used): substitui a página com o menor número de referências. Por exemplo, a função 'Fechar guia' que fecha a guia menos usada entre as guias abertas no navegador também é semelhante ao algoritmo LFU.
- MFU (Most Frequently Used): substitui a página com o maior número de referências. O algoritmo MFU não é frequentemente usado.
- Processo: unidade de trabalho alocada pelo sistema operacional, que significa programa. Quando vários processos são executados simultaneamente, cada processo recebe uma área de memória e CPU independentes.
- Thread: unidade de execução que opera dentro de um processo, compartilhando os recursos alocados para o processo. Por exemplo, cada guia em um navegador da web não é um processo, mas uma thread.
- Camada de aplicação: camada que conecta o usuário à rede, incluindo protocolos como HTTP, FTP e SMTP.
- Camada de apresentação: camada que define o método de representação de dados, incluindo protocolos como JPEG, MPEG e SSL.
- Camada de sessão: camada que gerencia a sessão entre dois sistemas de comunicação.
- Camada de transporte: camada responsável pela transmissão de dados, incluindo protocolos como TCP e UDP.
- Camada de rede: camada que define o caminho para a transmissão de dados, incluindo protocolos como IP e ICMP.
- Camada de enlace de dados: camada que transmite dados por meio de endereços físicos (endereço MAC), incluindo protocolos como Ethernet e Token Ring.
- Camada física: camada responsável pela comunicação de meios de transmissão e conexões físicas.
- TCP: serviço orientado à conexão que transmite dados de forma confiável. Ele estabelece ou encerra conexões usando o método de aperto de mão de 3 vias e o método de aperto de mão de 4 vias. Por exemplo, quando você faz login em um site ou transfere um arquivo, o TCP é usado.
- UDP: serviço não orientado à conexão que não passa por um procedimento de sinalização para transmissão de dados, com baixa confiabilidade, mas alta velocidade de processamento. Por exemplo, streaming de vídeo e jogos online usam UDP porque a velocidade de transmissão é importante.
Comentários0