Quais perguntas são feitas pelo desenvolvedor Junior iOS nas primeiras entrevistas

O que os empregadores querem ouvir? O que você precisa saber? Eles escrevem muito na Internet, mas, na realidade, o fator humano desempenha um papel e você é pego em perguntas simples para as quais não estava preparado.


Olá, Habr. Nos últimos sete meses, ignorei as entrevistas, em algum lugar com mais de 20. Eles estavam todos na posição de desenvolvedor Júnior do iOS. Como resultado, após numerosos tormentos e pull-ups de várias nuances do desenvolvimento móvel, eles me deram uma oferta à empresa, pela qual fiquei extremamente feliz.

Eu, como uma pessoa sem experiência inicial em desenvolvimento, um economista que me treina, gostaria de compartilhar e deixar um pouco claro para uma pessoa que acabou de decidir seguir esse caminho, o que ele deve esperar em entrevistas e que perguntas ele definitivamente precisa levantar ou aprender.

Escreverei aqui apenas para posições de desenvolvedor Junior Swift iOS. Outras entrevistas sobre essas posições não foram aprovadas.

Vou listar as coisas que, com uma probabilidade de 99%, pedirão, depois adicionarei algumas palavras sobre cada item.

Então, vamos começar.

O que eles definitivamente perguntarão a você (bem, se você esquecer de perguntar de repente, eles obviamente esperarão de você que você saiba disso):

  • Ciclo de vida do ViewController
  • OOP
  • A diferença entre classe e estrutura
  • Protocolos
  • Maneiras de transferir dados entre controladores
  • Storyboard ou xib
  • AutoLayout
  • Salvando dados (CoreData, Realm, UserDefault, etc.)
  • Solicitações e trabalho com dados recebidos do servidor (URLSession, Alamofire, Codable)
  • Encerramentos
  • Opcionais
  • Extensões
  • Genéricos
  • ARCO
  • Multithreading (superficialmente, ninguém exigirá conhecimento aprofundado a partir de junho)
  • fraco, sem dono, privado, privado
  • A diferença entre quadro e limites
  • Cocoapods (SwiftPacketManager, cartago)
  • Git

Discutiremos brevemente alguns pontos.

  • Ciclo de vida do ViewController

Tudo é simples aqui. Eles querem ouvir de você:

viewDidLoad()
viewWillAppear(_ animated: Bool)
viewDidAppear(_ animated: Bool)
viewWillDisappear(_ animated: Bool)
viewDidDisappear(_ animated: Bool)

É claro que ainda existem métodos, mas estes serão, em princípio, suficientes.

  • OOP

Você pode facilmente pesquisar no Google neste momento e ler o que está lá.

  • Classe vs Estrutura

Aqui, de fato, tudo parecia simples, mas você realmente precisa saber em que eles diferem. Você precisa entender pelo menos em um exemplo básico o que print () produzirá e por quê.

let customClass = EasyQuestion()
let a = customClass
let b = a
b.someProperty = 4
print(a.someProperty)

Você deve saber qual impressão fornecerá nesses dois casos.

Também será uma vantagem se você adicionar de quem os ViewControllers podem ser herdados e de quem não. (PS da Struct'a - não)

  • Protocolos

Leia o que é e para que elas são usadas (embora eu pense que você já tenha ouvido falar sobre elas).
Eles também podem perguntar sobre a extensão do protocolo. Você precisa entender exatamente quem são os delegados e como essa conexão funciona.

  • Maneiras de transferir dados entre controladores

Será o suficiente para você citar um casal. Delegar métodos, encerramentos, via init, se criarmos um ViewController via xib, etc.

  • Storyboard ou xib

Aqui você provavelmente será perguntado se já criou um ViewController via xib. Eles não solicitarão detalhes e detalhes. Você junho, você ainda não sabe muito. O principal para eles entenderem é se você pode escrevê-lo. Bem, será necessário responder porque você cria através do xib ou vice-versa.

  • AutoLayout

Aqui você pode pintar por um longo tempo sobre este tópico. Eu aconselho você a pesquisar no Google o que é. Entenda a essência geral, isso será suficiente.

  • Salvando dados (CoreData, Realm, UserDefault, etc.)

Esta pergunta irá assombrá-lo por um longo tempo. O mais importante é saber quando usar UserDefault, o que salvar no KeyChain, o que é o território. Salve os dados algumas vezes em seus projetos domésticos no CoreData para ter uma idéia geral de que tipo de animal é e como domá-lo.

  • Solicitações e trabalho com dados recebidos do servidor (URLSession, Alamofire, Codable)

Aqui você precisa saber o que é o POST, GET. Isso será solicitado.

Você precisa ser capaz de lidar com erros mediante solicitação. A opção ideal é se você recebeu os Termos de Referência da casa antes da entrevista. Lá você pode demonstrar todo o poder da sua mente.

O Alamofire também é comum em projetos, portanto você deve poder usá-lo.
Você deve poder analisar os dados que o servidor retorna para você usando o Codable ou algumas bibliotecas no espírito do SwiftyJSON ou ObjectMapper.

  • Encerramentos (encerramentos)

Este é um ponto muito importante. Pode acontecer que você realmente o use com frequência, mas não se aprofundou na essência desse problema. Se você sabe como escrevê-los e usá-los, ótimo! Mas como você mostra ao empregador que sabe disso se não pode explicar em termos simples o que é? Aconselho que você faça uma análise minuciosa do SwiftBook sobre esse assunto.

  • Opcionais

Esse deve ser um dos itens mais fáceis para você. Você deve conhecer esse "gato Schrödinger" e quais são os métodos de implantação. Não deixe de dizer a eles que você não é um defensor do Force Unwrap e despreze profundamente as pessoas que são tão "ruins" no projeto.

  • Extensões

É improvável que isso pareça um problema separado. O mais provável é que esteja em conjunto com outros problemas (por exemplo, uma pergunta sobre protocolos). Escreva algumas vezes Extension'y. Garanto-lhe, não há nada complicado lá. Você definitivamente vai lidar com esse problema.

Mas, por exemplo, tive casos em que perguntaram por que grandes mentes surgiram com isso.
Você pode marcar-se em algum lugar dessa resposta - "Para expandir a classe à qual não temos acesso". Por exemplo, eplovskie nativo, no qual não podemos entrar, mas queremos expandi-lo um pouco para nossa conveniência.

  • Genéricos

Para que servem? O que é isso? Quando você lê sobre genéricos no SwiftBook, pode parecer que isso é algo super complicado para a sua mente simples, mas na verdade tudo é muito mais simples lá. O principal é simplesmente entender a essência do que está escrito. E você sempre pode espionar como criá-lo. Você não será forçado a escrevê-lo em uma entrevista. Eles só querem ouvir sua compreensão sobre esse problema.

  • ARC (superficialmente, ninguém exigirá conhecimento aprofundado a partir de junho)

Aqui eles querem ouvir de você uma idéia geral da contagem de links. Como aumenta e o que acontecerá se o "contador" for 0. Eles não pedirão que você mergulhe debaixo do capô, mas se o fizerem, é improvável que eles entendam que o mês de junho está sentado na frente deles.

Aqui eles querem entender que você pode encontrar erros corretamente no código quando o seu ViewController, por exemplo, não "reinicializa" (mata, desaparece, sai) "acidentalmente".

  • Multithreading

Como transferir do segmento principal para o segundo plano. Existem muitas nuances. Você não entenderá tudo de uma vez, o principal é lidar com o GCD e as filas de expedição. Aqui está um ótimo artigo sobre esse tópico.

  • fraco, sem dono, privado, privado

O que eles são fracos. Qual é a diferença entre fraco e sem dono.

O que são privados e privados de arquivo? Esta é uma pergunta simples. Você pode ler na Internet, não há nada complicado, mas você ainda precisa saber.

Também pode incluir a questão do preguiçoso aqui. Tudo é tão simples aqui. Leia-o!

  • A diferença entre quadro e limites

Esta questão pode, em princípio, iniciar uma entrevista. Mas acrescento que essa pergunta surpreendentemente não era tão comum quanto as outras. Mas farfalhando na Internet, notei que essa é uma pergunta bastante comum, então não tente a sorte, aprenda! Pense que você certamente será solicitado. Não há nada complicado aqui, você só precisa entender a essência (sim, sim, como em todos os outros problemas).

  • Cocoapods (SwiftPacketManager, cartago)

Você definitivamente deve poder puxar bibliotecas para o seu projeto. O mais popular é o CocoaPods. Em princípio, será suficiente para você conhecê-lo. Mas se você quiser expandir o alcance, também poderá ver SwiftPacketManager, cartago.

  • Git

Bem, aqui eu nem sei o que pode ser adicionado. Use o git, faça commits (quanto mais, melhor).

Você deve poder criar novas ramificações, mesclar (mesclar) com outras ramificações e resolver (resolver) conflitos de mesclagem.

Em princípio, listei as perguntas mais populares que encontrei. É claro que ninguém cancelou o fator humano e eles podem capturá-lo em qualquer outra questão, mas se você é versado nessas questões, então você já está 90% pronto. Eu ainda sou junho e entendo que minha opinião está longe de ser especialista, mas resolvi compartilhar com outras pessoas o que sei na esperança de que seja muito útil para alguém e ajude a superar a etapa de uma entrevista técnica.

Aprenda, desenvolva e ajude outras pessoas!

All Articles