Perguntas do teste escrito da entrevista incorporada (dia 10)


Prefácio

Este artigo continua a explicar o teste escrito e a entrevista.

1. A diferença entre array e lista vinculada

1.内存:

Arrays usam blocos contíguos de memória para armazenar elementos, com cada elemento ocupando um tamanho fixo de espaço na memória. Este método de armazenamento torna o acesso ao array rápido e os elementos em qualquer posição podem ser acessados ​​diretamente por meio de indexação.

Uma lista vinculada usa blocos discretos de memória para armazenar elementos, e cada elemento (nó) pode estar localizado em qualquer lugar da memória. Cada nó contém uma seção para armazenar dados e um ponteiro para o próximo nó. Este método de armazenamento torna as operações de inserção e exclusão mais flexíveis, mas o acesso aos elementos requer percorrer toda a lista vinculada.

2.性能:

A velocidade de acesso do array é rápida, e o elemento em qualquer posição pode ser acessado diretamente através do índice, e a complexidade de tempo é O(1). Mas ao inserir e excluir elementos, outros elementos precisam ser movidos para manter a continuidade, resultando em uma complexidade de tempo de O(n).

Quando a lista vinculada insere e exclui elementos, ela só precisa modificar o apontamento do ponteiro, para que a complexidade de tempo de inserção e exclusão possa chegar a O(1). Porém, ao acessar os elementos, é necessário percorrer a lista vinculada, e a complexidade de tempo é O(n).

3.操作复杂度:

As operações de inserção e exclusão do array requerem a movimentação de outros elementos, portanto a complexidade da operação é alta. Quando há muitas cenas onde elementos são inseridos e excluídos, o desempenho dos arrays não é tão bom quanto o das listas vinculadas.

As operações de inserção e exclusão da lista vinculada requerem apenas a alteração do ponteiro do ponteiro e a complexidade da operação é baixa. As listas vinculadas são mais adequadas em cenários onde são necessárias operações frequentes de inserção e exclusão.

数组适合于需要频繁访问元素的场景,而链表适用于需要频繁插入和删除元素的场景。

2. O que é alinhamento de memória

O alinhamento da memória refere-se ao processo de colocação de dados na memória de acordo com certas regras ao armazenar dados.

3. Calendário da CII

1. Sinal de início: O dispositivo mestre envia um sinal de baixo nível para indicar que a comunicação está prestes a começar.

2. Endereço do dispositivo: O dispositivo mestre envia o endereço do dispositivo escravo, que é usado principalmente para especificar o dispositivo escravo com o qual se comunicar. O endereço consiste em um endereço escravo de 7 bits e bits de leitura/gravação. O bit de leitura/gravação é usado para indicar se o dispositivo mestre deseja realizar uma operação de leitura ou gravação.

3. Sinal de reconhecimento: Após cada endereço ou dado ser enviado, o remetente liberará a linha SDA (linha de dados serial) e então o receptor enviará o bit de reconhecimento. Se os dados corretos forem recebidos, um sinal de resposta de baixo nível (ACK) será enviado; se os dados recebidos estiverem incorretos ou nenhuma resposta for necessária, um sinal de não resposta de alto nível (NACK) será enviado.

4. Operação de leitura ou gravação: O dispositivo mestre conclui a operação de leitura ou gravação transferindo dados. Numa operação de leitura, o dispositivo escravo envia dados para o dispositivo mestre; numa operação de escrita, o dispositivo mestre envia dados para o dispositivo escravo.

5. Sinal de parada: O dispositivo mestre envia um sinal de parada de alto nível para indicar o fim da comunicação.

Quatro, papel estático

A palavra-chave static pode ser usada na linguagem C para variáveis ​​estáticas, funções estáticas, variáveis ​​globais estáticas e variáveis ​​locais estáticas. Sua função específica inclui controlar o ciclo de vida das variáveis, o escopo e a visibilidade de outros arquivos.

5. Como verificar o dispositivo tty

Utilize ls /dev/tty*
Insira a descrição da imagem aqui

Seis, encontre o comando de arquivo especificado

1. Use o comando localizar:

find <路径> -name <文件名>

<caminho>: Especifique o caminho inicial da pesquisa. Pode ser o diretório raiz /, ou o diretório atual., ou outros diretórios especificados.
-name <nome do arquivo>: especifica o nome do arquivo a ser procurado. Curingas podem ser usados ​​para correspondência difusa, como * para representar qualquer caractere.

2. Use o comando localizar:

locate <文件名>

<nome do arquivo>: Especifique o nome do arquivo a ser pesquisado. Ao contrário do find, o comando localizar usa uma pesquisa baseada em banco de dados e, portanto, é mais rápido.

Sete, três apertos de mão e quatro acenos

1. Três apertos de mão

1. O primeiro handshake (SYN): O cliente envia um pacote com a flag SYN (sincronização) ao servidor para solicitar o estabelecimento de uma conexão. O remetente escolhe um número de sequência inicial (Número de Sequência) como valor inicial e define o sinalizador SYN como 1.

2. Segundo handshake (SYN+ACK): Após receber o pacote SYN do cliente, o servidor confirma o recebimento e envia um pacote com flags SYN e ACK (resposta) ao cliente. O servidor também selecionará um número de série inicial para si mesmo e adicionará 1 ao número de série do cliente como o número de confirmação.

3. O terceiro handshake (ACK): Após receber o pacote SYN+ACK do servidor, o cliente envia um pacote com flag ACK ao servidor como confirmação. O número de sequência neste pacote é definido como o número de confirmação recebido mais um.

Insira a descrição da imagem aqui

2. Acene quatro vezes

1. Etapa um (FIN1):
A parte que fecha ativamente a conexão (chamada de iniciador) envia um segmento TCP com o sinalizador FIN (Finish) para a outra parte.
O iniciador não envia mais dados, mas ainda pode receber dados enviados pela outra parte.

2. Etapa 2 (ACK1):
Após receber a mensagem FIN, a parte que recebe o FIN (chamada de fechamento passivo) envia uma mensagem de resposta de confirmação (ACK) ao iniciador para confirmar que o FIN foi recebido.
Os fechos passivos ainda podem enviar os dados restantes até que os dados nos buffers de envio e recebimento sejam transferidos.

3. A terceira etapa (FIN2):
O fechamento passivo envia um segmento de mensagem com a flag FIN para indicar que também deseja encerrar a conexão.
Os fechos passivos não enviam mais dados, mas ainda podem receber dados do iniciador.

4. Passo 4 (ACK2):
Após receber o FIN do fecho passivo, o iniciador envia uma resposta de confirmação ao fecho passivo para confirmar o recebimento do FIN.
O iniciador aguarda um período de tempo para garantir que a outra parte receba uma confirmação.

Insira a descrição da imagem aqui

8. Estado semifechado

O estado semi-fechado significa que em uma conexão TCP, uma parte fecha seu fluxo de saída (envio de dados), mas ainda pode receber dados enviados pela outra parte.

Nove, fluxo de bytes e datagrama

字节流(TCP):

Fluxo de bytes é o método de transmissão em TCP, que trata os dados como um fluxo contínuo de bytes sem limites claros de mensagem.
O TCP divide os dados em bytes e os transmite pela conexão de maneira não estruturada.
O remetente envia os dados ao destinatário na forma de um fluxo de bytes, e o receptor remonta os dados completos em ordem após receber os bytes.
Com confiabilidade e sequência, o TCP garante a confiabilidade e a sequência correta dos dados por meio de números de sequência, números de confirmação e mecanismos de retransmissão.

数据报(UDP):

Datagrama é um método de transmissão em UDP, que trata os dados como pacotes de dados independentes, e cada pacote de dados é independente um do outro.
O UDP divide os dados em datagramas de tamanho fixo (geralmente chamados de datagramas UDP ou pacotes UDP) para transmissão.
Cada datagrama possui suas próprias informações de cabeçalho, incluindo porta de origem, porta de destino e comprimento, etc., usadas para identificar e montar os dados.
A ordem e a confiabilidade dos datagramas não são garantidas quando são enviados, e o receptor não pode garantir a ordem e a integridade dos datagramas recebidos.

Resumir

Este artigo irá explicar isso aqui.

Acho que você gosta

Origin blog.csdn.net/m0_49476241/article/details/132243852
Recomendado
Clasificación