Entrevista - 10 perguntas sobre Swift. Parte 3

Programa profissional “iOS Developer” - 5 meses de prática recomendada para o desenvolvimento de aplicativos móveis usando o Swift 5. Os melhores alunos são esperados em entrevistas de 12 empresas parceiras da OTUS; portanto, publicamos uma tradução do artigo final da série “iOS Interview Questions (Swift)”, onde consideraremos mais dezenas de perguntas, cujas respostas o ajudarão no emprego.


imagem


1. O que são falhas e onde elas podem ser usadas?


  • Closures são fragmentos de código independentes que podem ser passados ​​para uma função como argumento ou usados ​​em um programa.
  • Os fechamentos no Swift são como blocos em C e Objective-C e como lambdas em outras linguagens de programação.
  • É quase o mesmo que funções, mas os fechamentos não precisam ser nomeados.
  • Não há necessidade de declarar o tipo de cada parâmetro, mas se o fizer, não será necessário especificar o tipo do valor de retorno.

Siga o link para ver todas as opções de sintaxe de fechamento.


2. O que são fechamentos de escape / sem escape?


encerramentos @nonescaping (padrão):


  • Quando o fechamento é passado nos argumentos da função ee é usado antes que o corpo da função seja executado e o controle retorne.
  • Quando a função é concluída , o fechamento passado fica fora do escopo e não existe mais na memória.

fechamentos @escaping (fugitivos):


  • Quando o fechamento é passado nos argumentos da função e usado após o corpo da função ser executado e o controle retornar.
  • Quando a função é concluída , o fechamento transmitido continua a existir no escopo e permanece na memória até que o fechamento seja concluído. o link

3. Indique que tipos de coleções estão disponíveis no Swift?


imagem


  • Matrizes - usadas para armazenar vários valores do mesmo tipo em um formulário ordenado.
  • Set (Set) - usado para armazenar diferentes valores do mesmo tipo de forma não ordenada.
  • Dicionários - Usado para armazenar pares de valores-chave de forma não ordenada.

4. Como a classe base é definida no Swift?


No Swift, as classes que não herdam da classe base e as classes definidas sem especificar uma superclasse tornam-se automaticamente classes base.


5. O que são desinicializadores e como eles são escritos em Swift?


O desinicializador é declarado imediatamente antes de liberar a memória ocupada pela instância da classe. O desinicializador é escrito com a palavra-chave deinit . É usado se você precisar executar qualquer ação ou limpeza antes de liberar a memória ocupada pelo objeto.


Por exemplo , se você criar uma classe personalizada para abrir um arquivo e gravar alguns dados, precisará fechar o arquivo antes de liberar a memória ocupada pela instância da classe.


O desinicializador é gravado sem colchetes e não aceita nenhum parâmetro.


deinit { //   } 

6. Quando os pontos de interrogação duplos "??" são usados?


Esse operador é chamado de operador nil join . É usado para definir o valor padrão se a opção for nula.


 let a: String? = nil let b = "nil coalescing operator" let result = a ?? b print(result) //:"nil coalescing operator" 

  • a ?? b descompacta o opcional a se ele contiver um valor ou retorna o valor padrão b se a for nulo.
  • A expressão a sempre tem um tipo opcional. A expressão b deve corresponder ao tipo que é armazenado dentro de a.

6. Qual é a diferença entre '?' E '!'?


O símbolo "?"


  1. Ao trabalhar com opções, você pode colocar "?" na frente dos conjuntos de comandos, como métodos, propriedades e subscritos.
  2. Se o valor for anterior a "?" é igual a zero, então tudo o que vem depois de "?" ignorado e o valor de toda a expressão se torna nulo.
  3. Caso contrário, a opção é descompactada e tudo o que vem após o "?" atua sobre o valor descompactado.
  4. Nos dois casos, o valor de toda a expressão é opcional.

O símbolo "!"


  1. Após verificar se o opcional contém um valor, você pode acessar seu valor base adicionando um ponto de exclamação (!) No final do nome do opcional.
  2. O ponto de exclamação realmente diz: “Eu sei que essa opção realmente importa; por favor use-o. "
  3. Use-o apenas se tiver certeza absoluta de que a opção descompactada implicitamente é importante na primeira vez que você a acessa.

7. O que é um alias de tipo no Swift?


Uma declaração de alias de tipo introduz um alias nomeado de um tipo existente no programa. As declarações de alias de tipo são declaradas usando a palavra-chave typealias.


typealias name = tipo existente


 typealias StudentName = String let name:StudentName = "Jack" 

Você pode usar tipealias para a maioria dos tipos no Swift, por exemplo:


  • Tipos incorporados (por exemplo, String, Int)
  • Tipos personalizados (por exemplo, classes, estruturas, enumerações)
  • Tipos complexos (por exemplo, fechamentos)

8. Qual é a diferença entre funções e métodos no Swift?


Um método é uma função associada a uma classe, estrutura ou enumeração. Isso se aplica aos métodos de instância e métodos de tipo.


Função - declarada no escopo global e não pertence a nenhum tipo.


As funções podem ser definidas fora das classes ou dentro das classes / estruturas / enumerações, enquanto os métodos devem ser definidos dentro e fazer parte das classes / estruturas / enumerações.


9. Qual é a sintaxe dos parâmetros externos?


Um parâmetro externo nos permite dar nomes aos parâmetros de função para tornar seu objetivo mais compreensível.


func poder (base a: Int, expoente b: Int) -> Int


* Às vezes, é útil nomear cada parâmetro ao chamar uma função para indicar a finalidade de cada argumento que é passado para a função.


Se você deseja que os usuários de sua função forneçam nomes de parâmetros quando chamados, defina um nome de parâmetro externo para cada parâmetro, além do nome do parâmetro local. *


10. É possível redefinir estruturas e enumerações no Swift?


Você não pode subclassificar uma estrutura ou enumeração, nem pode substituí-los. Como a estrutura é um tipo de valor, e o compilador precisa saber seu tamanho exato no momento da compilação, o que torna impossível a substituição.


Para encontrar as partes anteriores, siga os links Parte 1 , Parte 2 , Tudo sobre fechamentos , Tudo sobre propriedades


Isso é tudo! Temos certeza de que as traduções serão úteis não apenas para os alunos do curso iOS Developer , mas também para muitos usuários do Habr. Desejamos a você sucesso profissional e aguardamos ansiosamente os próximos grupos de nossos programas on-line com direitos autorais!

Source: https://habr.com/ru/post/pt453644/


All Articles