Dados e estruturas de dados Flashcards

1
Q

Qual a diferença entre um dicionário e um array?

A

Abordagem sugerida: tudo depende de como você acessa os dados: arrays devem ser acessados usando o índice de cada elemento, enquanto dicionários podem ser acessados usando algo que você define – strings são muito comuns. Certifique-se e dê exemplos práticos de onde cada um seria usado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Quais são as principais diferenças entre classes e struct em Swift?

A

Abordagem sugerida: sua resposta deve incluir uma discussão sobre tipos de valor (como structs) e tipos de referência (como classes), mas também o fato de que as classes permitem herança.
Para ganhar pontos extras, você pode mencionar que as classes possuem métodos deinit() e as structs não.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

O que são tuplas e por que são úteis?

A

Abordagem sugerida: tuplas são um pouco como estruturas anônimas e são úteis para retornar vários valores de um método com segurança de tipo, entre outras coisas. Certifique-se de fornecer alguma explicação sobre onde eles podem ser úteis, como retornar dois valores de uma matriz.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

O que o protocoloCodablefaz?

A

Abordagem sugerida: este protocolo foi introduzido no Swift 4 para nos permitir converter de forma rápida e segura tipos Swift personalizados de e para JSON, XML e similares.
Para ganhar pontos extras, fale sobre pontos de personalização, como estratégias de decodificação de chave e data, o protocolo CodingKey e muito mais, para que você possa mostrar que pode lidar com uma variedade de estilos de entrada e saída.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Qual é a diferença entre um array e um set(conjunto)?

A

Abordagem sugerida: isso é um pouco como ciência da computação 101, então comece respondendo com os fatos: os conjuntos não podem conter duplicatas e são desordenados, portanto a pesquisa é significativamente mais rápida. Nota: isso pode parecer uma pergunta trivial, mas a parte “significativamente mais rápida” é crítica – os conjuntos podem ser milhares de vezes mais rápidos que os arrays, dependendo de quantos elementos eles contêm. Se puder, dê exemplos específicos de onde um conjunto seria uma ideia melhor do que um array.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Qual é a diferença entre os tipos de dadosFloat,Double eCGFloat?

A

Abordagem sugerida: é uma questão de quantos bits são usados para armazenar dados: Float é sempre de 32 bits, Double é sempre de 64 bits e CGFloat é de 32 ou 64 bits, dependendo do dispositivo em que é executado, mas realisticamente, é apenas 64 bits o tempo todo.
Para ganhar pontos extras, fale sobre como o Swift 5.5 e posteriores nos permite usar CGFloat e Double de forma intercambiável.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Qual é a importância das principais estratégias de decodificação ao usarCodable?

A

Abordagem sugerida: Dê uma resposta específica primeiro – “as estratégias de decodificação de chaves nos permitem lidar com a diferença entre chaves JSON e nomes de propriedades em nossa estrutura Decodificavél (Decodable)” – e depois forneça algum tipo de exemplo prático. Por exemplo, você pode dizer que é comum que chaves JSON usem snake_case para nomes de chaves, enquanto em Swift preferimos camelCase, então precisamos usar uma estratégia de decodificação de chave para converter entre os dois.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Ao usar matrizes, qual é a diferença entremap()ecompactMap()?

A

Abordagem sugerida: Lembre-se de dar exemplos práticos, bem como delinear as principais diferenças. Então, você pode começar dizendo que map() transforma uma sequência usando uma função que especificamos, enquanto compactMap() faz a mesma etapa, mas depois desembrulha seus opcionais e descarta quaisquer valores nulos. Por exemplo, converter um array de strings em inteiros funciona melhor com compactMap(), porque a criação de um Int a partir de uma String é falível.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Por que a imutabilidade é importante?

A

Abordagem sugerida: a imutabilidade está profundamente incorporada no Swift, e o Xcode até avisa se var foi usado quando let era possível. É importante porque é como um contrato de programação: estamos dizendo que This Thing Should Not Change, então se tentarmos mudar o compilador irá recusar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

O que são intervalos unilaterais e quando você os usaria?

A

Abordagem sugerida: como sempre, comece com uma definição simples que esclareça a diferença entre intervalos regulares e, em seguida, forneça um exemplo prático.
Então, você pode dizer que intervalos unilaterais são intervalos onde você não especifica o início ou o fim do intervalo, o que significa que o Swift fará automaticamente o intervalo começar do início ou do final da coleção. Eles são úteis quando você deseja ler de uma determinada posição até o final de uma coleção, como se você deseja pular os primeiros 10 usuários de um array.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

O que significa quando dizemos “strings são collections em Swift”?

A

Abordagem sugerida: esta declaração significa que o tipo String do Swift está em conformidade com o protocolo Collection, que nos permite fazer um loop sobre os caracteres, contar o comprimento da string, mapear os caracteres, selecionar caracteres aleatórios e muito mais
Para ganhar pontos extras, fale sobre o próprio protocolo Collection – como isso significa que temos uma maneira consistente de trabalhar com strings, arrays, conjuntos e muito mais.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

O que é umUUID e quando você pode usá-lo?

A

Abordagem sugerida: UUID significa “identificador universalmente exclusivo”, que é uma longa sequência de números hexadecimais armazenados em um único tipo.
UUIDs são úteis para garantir que algum valor seja único, por exemplo, você pode precisar de um nome de arquivo exclusivo ao salvar algo.
Para ganhar pontos extras, talvez explique por que os chamamos de universalmente únicos – se você criou 100 trilhões de UUIDs, há uma chance em um bilhão de gerar uma duplicata.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Qual é a diferença entre um tipo de valor e um tipo de referência?

A

Abordagem sugerida: A melhor maneira de enquadrar esta discussão provavelmente será classes versus estruturas: uma instância de uma classe pode ter vários proprietários, mas uma instância de uma estrutura não pode.
Para ganhar pontos extras, mencione que os fechamentos também são tipos de referência e as implicações disso.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Quando você usaria oResulttype do Swift?

A

Abordagem sugerida: comece com uma breve introdução ao que o Result faz, dizendo que é um enum que encapsula sucesso e fracasso, ambos com valores associados para que você possa anexar informações extras. Eu então mergulharia na parte “quando você usaria isso” da pergunta – falar sobre código assíncrono é sua melhor aposta, especialmente em comparação com como coisas como URLSession muitas vezes passariam um valor e um erro, mesmo quando apenas um deveria existir de uma vez.
Se você quiser entrar em mais detalhes, mais benefícios do Result incluem a capacidade de enviar o resultado de uma função como um valor a ser tratado posteriormente e também a capacidade de lidar com erros de digitação.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

O que é apagamento de tipo e quando você o usaria?

A

Abordagem sugerida: O apagamento de tipo nos permite descartar algumas informações de tipo, por exemplo, para dizer que um array de strings é na verdade apenas AnySequence – é uma sequência contendo strings, mas não sabemos exatamente que tipo de sequência.
Isto é particularmente útil quando os tipos são longos e complexos, o que geralmente é o caso do Combine. Portanto, em vez de ter um tipo de retorno com 500 caracteres, podemos apenas dizer AnyPublisher<SomeType, Never> – é um editor que fornecerá SomeType e nunca gerará um erro, mas não nos importamos exatamente com qual editor é.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly