雇主想听些什么?你需要了解什么?他们在Internet上撰写了大量文章,但实际上,人为因素起着作用,您陷入了尚未准备好的简单问题。
哈Ha在过去的7个月中,我绕过了20多个地方的采访,他们都处于Junior iOS开发人员的职位。结果,在经历了移动开发的各种细微差别的无数折磨和折腾之后,他们给了我一个向公司报价的机会,对此我感到非常高兴。作为一个没有早期开发经验的人,我是一名经济学家,他通过训练自己来分享自己的观点,并向刚决定走这条路的人澄清一点,他在面试中应该期待什么以及他绝对需要提出或学习什么问题。我仅在此处为Junior Swift iOS开发人员职位写信。这些职位的其他面试没有通过。我将列出几率以99%的比例询问您的内容,然后在每一项中添加几句话。所以,让我们开始吧。他们肯定会问您什么(嗯,如果您突然忘记问,他们显然会希望您知道这一点):- ViewController的生命周期
- 面向对象
- 类和结构之间的区别
- 通讯协定
- 控制器之间传输数据的方式
- 故事板或Xib
- 自动版式
- 保存数据(CoreData,Realm,UserDefault等)
- 请求并处理从服务器接收的数据(URLSession,Alamofire,Codable)
- 关闭
- 选装件
- 扩展名
- 泛型
- 弧
- 多线程(从表面上看,从六月开始,没有人需要深入的知识)
- 弱,无主,私有,文件私有
- 边框和界限之间的区别
- 椰子足(SwiftPacketManager,迦太基)
- 吉特
我们将简要讨论几点。这里的一切都很简单。他们想听听您的消息: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创建过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%。我本人仍然是六月,我理解我的观点还远非专家,但我决定与他人分享我所知道的信息,希望它对某人非常有用,并有助于克服技术面试的阶段。学习,发展和帮助他人!