初级iOS开发人员在初次采访中会问什么问题

雇主想听些什么?你需要了解什么?他们在Internet上撰写了大量文章,但实际上,人为因素起着作用,您陷入了尚未准备好的简单问题。


哈Ha在过去的7个月中,我绕过了20多个地方的采访,他们都处于Junior iOS开发人员的职位。结果,在经历了移动开发的各种细微差别的无数折磨和折腾之后,他们给了我一个向公司报价的机会,对此我感到非常高兴。

作为一个没有早期开发经验的人,我是一名经济学家,他通过训练自己来分享自己的观点,并向刚决定走这条路的人澄清一点,他在面试中应该期待什么以及他绝对需要提出或学习什么问题。

我仅在此处为Junior Swift iOS开发人员职位写信。这些职位的其他面试没有通过。

我将列出几率以99%的比例询问您的内容,然后在每一项中添加几句话。

所以,让我们开始吧。

他们肯定会问您什么(嗯,如果您突然忘记问,他们显然会希望您知道这一点):

  • ViewController的生命周期
  • 面向对象
  • 类和结构之间的区别
  • 通讯协定
  • 控制器之间传输数据的方式
  • 故事板或Xib
  • 自动版式
  • 保存数据(CoreData,Realm,UserDefault等)
  • 请求并处理从服务器接收的数据(URLSession,Alamofire,Codable)
  • 关闭
  • 选装件
  • 扩展名
  • 泛型
  • 多线程(从表面上看,从六月开始,没有人需要深入的知识)
  • 弱,无主,私有,文件私有
  • 边框和界限之间的区别
  • 椰子足(SwiftPacketManager,迦太基)
  • 吉特

我们将简要讨论几点。

  • ViewController的生命周期

这里的一切都很简单。他们想听听您的消息:

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

当然还有方法,但是原则上这些方法就足够了。

  • 面向对象

您现在可以轻松地用Google搜索并阅读其中的内容。

  • 类与结构

实际上,这里的一切似乎都很简单,但是您确实需要知道它们的区别。您至少需要在一个基本示例中理解print()将产生什么以及为什么。

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

您应该知道在这两种情况下会得到什么样的打印效果。

如果您添加可以从谁继承ViewControllers,从谁不能继承ViewControllers,这也将是一个加号。(来自Struct'a的PS-否)

  • 通讯协定

阅读它的含义以及它们的用途(尽管我认为您已经听说过它们)。
他们可能还会询问协议的扩展。您需要准确了解代表是谁以及该连接的工作方式。

  • 控制器之间传输数据的方法

您只需几个即可。如果通过xib创建ViewController,则通过init委托方法,闭包。

  • 故事板或Xib

在这里,您很可能会询问您是否曾经通过xib创建过ViewController。他们不会要求您提供详细信息。您6月,您仍然了解不多。他们主要要了解的是您是否可以编写它。好吧,有必要给出一个答案,为什么您要通过xib创建,反之亦然。

  • 自动版式

您可以在这里长时间绘制该主题。我建议你用谷歌搜索它。了解一般本质,就足够了。

  • 保存数据(CoreData,Realm,UserDefault等)

这个问题将困扰您很长时间。最重要的是要知道何时使用UserDefault,在KeyChain中保存什么以及Realm是什么。在CoreData的家庭项目中保存几次数据,以便您大致了解它是哪种动物以及如何驯服它。

  • 请求并处理从服务器接收的数据(URLSession,Alamofire,Codable)

在这里,您需要知道什么是POST,GET。这将被问到。

您需要能够根据请求处理错误。理想的选择是面试前是否已获得房屋的职权范围。在这里,您可以展示出自己的全部力量。

Alamofire在项目上也很常见,因此您应该可以使用它。
您应该能够本着SwiftyJSON或ObjectMapper的精神,使用Codable或某些库来解析服务器返回给您的数据。

  • 闭包(闭包)

这是非常重要的一点。您可能经常使用它,但是没有深入研究此问题的实质。如果您知道如何编写和使用它们-太好了!但是,如果您不能简单地解释这是什么,该如何向雇主表明您知道这一点。我建议您彻底解决这个问题。

  • 选装件

这应该是最简单的项目之一。您应该了解此“SchrödingerCat”以及什么部署方法。一定要告诉他们,您不是Force Wwrap的支持者,并且会鄙视那些在项目中如此“废话”的人。

  • 扩展名

这不太可能听起来是一个单独的问题。最有可能将它与其他问题(例如,关于协议的问题)结合在一起。写几次Extension'y。我向你保证,那里没有什么复杂的。您一定会处理此问题。

但是例如,当我问一些案例时,为什么他们会提出伟大的想法。
您可以在这样的答案处标上自己的名字:“扩大我们无权访问的课程。” 例如,原生eplovskie,虽然我们无法涉足,但为了方便起见,我们希望对其进行一些扩展。

  • 泛型

他们是干什么的 它是什么?当您在SwiftBook中阅读泛型时,对于您来说,这似乎是一件非常复杂的事情,但实际上,那里的一切要简单得多。最主要的是简单地理解其编写原因。而且您总是可以监视如何创建它。您不会被迫在面试中写它。他们只是想听听您对这个问题的理解。

  • ARC(从表面上看,从六月开始,没有人需要深入的知识)

他们在这里想听听您关于链接计数的一般想法。如果“ counter”为0,它会如何增加以及会发生什么。他们不会要求您潜入引擎盖下,如果这样做,那么他们不太可能知道6月正坐在他们的面前。

他们在这里希望了解,例如,当ViewController未“意外”“取消初始化”(被杀死,消失,离开)时,您可以在代码中正确找到错误。

  • 多线程

如何从主线程转移到后台。有很多细微差别。您不会一次全部了解,最主要的是处理GCD和调度队列。这是有关该主题精彩文章

  • 弱,无主,私有,文件私有

他们有多弱。弱者和无人者有什么区别。

什么是私有和文件私有?这是一个简单的问题。您可以在互联网上阅读,没有什么复杂的,但是您仍然需要知道。

这里也可能包括懒惰的问题。这里的一切都一样简单。阅读!

  • 边框和界限之间的区别

这个问题原则上可以开始面试。但我补充说,这个问题出人意料地不像其他问题那么普遍。但是在互联网上沙沙作响的时候,我注意到这是一个相当普遍的问题,所以不要尝试走运,学习!认为您一定会被问到。这里没有什么复杂的,您只需要了解本质(是的,是的,就像其他所有问题一样)。

  • 椰子足(SwiftPacketManager,迦太基)

您绝对应该能够将库拉入您的项目。最受欢迎的是CocoaPods。原则上知道就足够了。但是,如果要扩大范围,还可以看到SwiftPacketManager,迦太基。

  • 吉特

好吧,我什至不知道可以添加什么。使用git进行提交(越多越好)。

您必须能够创建新分支,与其他分支合并(合并),并解决(解决)合并冲突。

原则上,我列出了我遇到的最受欢迎的问题。当然,没有人可以取消人为因素,他们可以解决其他任何问题,但是如果您精通这些问题,那么您已经准备好90%。我本人仍然是六月,我理解我的观点还远非专家,但我决定与他人分享我所知道的信息,希望它对某人非常有用,并有助于克服技术面试的阶段。

学习,发展和帮助他人!

All Articles