Vista previa del material en texto
Rust O que e o Rust? A) Uma linguagem de programacao focada em programacao funcional. B) Uma linguagem de programacao compilada, segura e com foco em performance. C) Uma linguagem de script com tipagem dinamica. D) Uma plataforma de desenvolvimento voltada para sistemas embarcados. Resposta: B) Uma linguagem de programacao compilada, segura e com foco em performance. Rust e uma linguagem de programacao projetada para oferecer seguranca de memoria sem comprometer o desempenho. Seu foco e permitir a criacao de software eficiente e seguro. Qual e a principal caracteristica de seguranca que Rust oferece em relacao a outras linguagens? A) Seguranca contra ataques de buffer overflow usando verificacao em tempo de compilacao. B) Seguranca contra excecoes de tempo de execucao. C) Gerenciamento automatico de memoria sem a necessidade de um Garbage Collector. D) Uso de tipagem dinamica para evitar erros em tempo de compilacao. Resposta: A) Seguranca contra ataques de buffer overflow usando verificacao em tempo de compilacao. Rust oferece seguranca de memoria sem a necessidade de um coletor de lixo, utilizando o sistema de posse e emprestimos (ownership and borrowing) para garantir que nao ocorram acessos indevidos a memoria. O que significa "ownership" (posse) em Rust? A) O sistema de gerenciamento de recursos do sistema operacional. B) A ideia de que uma variavel possui a responsabilidade exclusiva sobre a memoria alocada. C) A maneira como as funcoes determinam a propriedade de um valor. D) O conceito de que cada funcao pode ter um valor compartilhado por varias variaveis. Resposta: B) A ideia de que uma variavel possui a responsabilidade exclusiva sobre a memoria alocada. Em Rust, o sistema de ownership e a base para o gerenciamento de memoria. Cada valor possui um "dono", e esse dono e responsavel por liberar a memoria quando o valor nao for mais utilizado. O que acontece quando uma variavel em Rust e "movida" para outra variavel? A) A variavel original e copiada para a nova variavel. B) A variavel original perde o acesso ao valor, e a nova variavel passa a ser o unico dono do valor. C) A variavel original continua com o valor, mas a nova variavel passa a ter uma referencia ao valor. D) A variavel original permanece com o valor e a nova variavel passa a compartilhar a propriedade do valor. Resposta: B) A variavel original perde o acesso ao valor, e a nova variavel passa a ser o unico dono do valor. Quando ocorre uma transferencia de propriedade, a variavel original nao pode mais acessar o valor, o que previne problemas de memoria, como acesso a dados invalidos. O que e o "borrowing" (emprestimo) em Rust? A) Quando uma funcao recebe uma copia de um valor. B) Quando uma variavel compartilha seu valor com outra variavel, permitindo acesso temporario ao valor. C) Quando um valor e passado por referencia, mas sem a transferencia de propriedade. D) Quando uma variavel empresta a memoria de outra, mas nao pode modificar o valor. Resposta: C) Quando um valor e passado por referencia, mas sem a transferencia de propriedade. O "borrowing" permite que voce empreste uma referencia a um valor sem transferir sua posse, o que permite compartilhar dados de forma segura entre diferentes partes do codigo. Qual a principal diferenca entre "borrowing mutavel" e "borrowing imutavel" em Rust? A) O borrowing mutavel permite que a funcao altere o valor, enquanto o borrowing imutavel impede alteracoes no valor. B) O borrowing mutavel e exclusivo para numeros inteiros, enquanto o borrowing imutavel e para tipos de dados compostos. C) O borrowing imutavel permite que a funcao altere o valor, enquanto o borrowing mutavel impede alteracoes no valor. D) O borrowing imutavel requer uma copia do valor, enquanto o borrowing mutavel nao. Resposta: A) O borrowing mutavel permite que a funcao altere o valor, enquanto o borrowing imutavel impede alteracoes no valor. O borrowing mutavel permite modificar o valor enquanto ele esta sendo emprestado, mas so pode haver uma referencia mutavel de um valor em um determinado momento. O borrowing imutavel permite multiplas referencias, mas sem alteracoes. O que e a palavra-chave unsafe em Rust? A) Indica que o codigo pode ser executado sem verificacao de erros. B) Permite a manipulacao direta de memoria sem as restricoes de seguranca padrao. C) Habilita o uso de bibliotecas externas. D) Ativa o uso de um coletor de lixo no programa. Resposta: B) Permite a manipulacao direta de memoria sem as restricoes de seguranca padrao. A palavra-chave unsafe permite ao programador realizar operacoes que normalmente seriam rejeitadas pelo compilador, como acesso direto a memoria, mas isso pode gerar problemas de seguranca se nao for usado corretamente. Como Rust lida com concorrencia? A) Utilizando threads e locks (bloqueios) para garantir a seguranca. B) Utilizando o conceito de "data race" para melhorar a performance. C) Usando o modelo de concorrencia sem a necessidade de locks, com base em ownership e borrowing. D) A concorrencia e controlada apenas por threads, sem a preocupacao com seguranca de memoria. Resposta: C) Usando o modelo de concorrencia sem a necessidade de locks, com base em ownership e borrowing. Rust usa o sistema de ownership e borrowing para garantir que multiplas threads possam acessar dados de forma segura, sem risco de condicoes de corrida ou problemas de memoria. O que sao "traits" em Rust? A) Sao estruturas que permitem a comunicacao entre diferentes tipos de dados. B) Sao funcoes que podem ser compartilhadas entre varias implementacoes de tipos. C) Sao tipos que podem ser utilizados apenas dentro de uma funcao. D) Sao classes que podem ser herdadas por outras estruturas. Resposta: B) Sao funcoes que podem ser compartilhadas entre varias implementacoes de tipos. Traits sao uma forma de definir comportamentos comuns que podem ser implementados por diferentes tipos. Elas sao semelhantes as interfaces em outras linguagens. O que e o match em Rust? A) Uma expressao que permite comparar um valor contra padroes e executar blocos de codigo diferentes dependendo do padrao correspondente. B) Um operador para comparar variaveis de tipos diferentes. C) Uma funcao que cria um valor a partir de outros valores. D) Um comando para realizar a iteracao sobre um conjunto de dados. Resposta: A) Uma expressao que permite comparar um valor contra padroes e executar blocos de codigo diferentes dependendo do padrao correspondente. O match em Rust e uma forma poderosa e flexivel de realizar comparacoes e execucao de blocos de codigo com base em padroes de valores. O que e o "ownership system" (sistema de posse) e por que ele e importante em Rust? A) O sistema que garante que o codigo seja executado sem erros de compilacao. B) O sistema que permite que diferentes partes do codigo compartilhem variaveis globalmente. C) O sistema que impede condicoes de corrida ao garantir que apenas um componente tenha posse de um recurso por vez. D) O sistema que permite gerenciar objetos dinamicamente durante a execucao. Resposta: C) O sistema que impede condicoes de corrida ao garantir que apenas um componente tenha posse de um recurso por vez. O sistema de ownership em Rust assegura que os recursos, como memoria, sejam gerenciados de maneira segura, prevenindo vazamentos de memoria e outras falhas relacionadas. Como Rust lida com a alocacao de memoria? A) Usa um coletor de lixo para gerenciar a memoria. B) Depende do programador para gerenciar explicitamente a alocacao e liberacao de memoria. C) Usa o sistema de ownership para garantir que a memoria seja liberada automaticamente quando nao for mais necessaria. D) A memoria e alocada apenas no heap, sem a necessidade de gerenciamento. Resposta: C) Usa o sistema de ownership para garantir que a memoria seja liberada automaticamente quando nao for mais necessaria. Em Rust, a alocacao e liberacao de memoria sao feitas automaticamente atraves do sistemade ownership, sem a necessidade de um coletor de lixo. Qual a principal vantagem de usar "boxes" em Rust? A) Permitir a alocacao de memoria no heap. B) Facilitar o uso de tipos mutaveis. C) Acelerar a execucao de operacoes matematicas. D) Garantir a seguranca contra acessos simultaneos a memoria. Resposta: A) Permitir a alocacao de memoria no heap. A Box em Rust e usada para alocar dados no heap, o que permite manipular grandes estruturas de dados sem ocupar a pilha, mantendo a seguranca de memoria. O que sao "lifetimes" em Rust? A) A duracao de tempo durante a qual uma variavel pode ser acessada. B) O tempo durante o qual uma variavel permanece no heap. C) O numero de vezes que uma funcao e