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.

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?

- 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 "?"
- Ao trabalhar com opções, você pode colocar "?" na frente dos conjuntos de comandos, como métodos, propriedades e subscritos.
- 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.
- Caso contrário, a opção é descompactada e tudo o que vem após o "?" atua sobre o valor descompactado.
- Nos dois casos, o valor de toda a expressão é opcional.
O símbolo "!"
- 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.
- O ponto de exclamação realmente diz: “Eu sei que essa opção realmente importa; por favor use-o. "
- 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!