面试过程-第2部分-iOS问题

您好,欢迎阅读本系列的第2部分。 如果您还没有,请检出第1部分。

因此,对于本文,我从列表中选择了10个随机(简单)问题,以下是他们的答案。

1. 自我介绍

这里没有太多解释。 您只需要谈论您的专业经验,教育背景和家庭背景即可。

因此,以下是您在简介中应涵盖的要点

· 教育背景 -新生应该在您的简介中包括此内容,因为您没有太多要谈论的经验,但是有多年经验的人可以避免这样做,因为他们可以直接谈论他们所做的工作。

· 家庭背景 –根据我的看法,这是可选的,您可以从介绍中忽略,除非并且直到您认为面试官应该知道一些非常有趣的事情为止。

· 专业经验 –经验丰富的专业人员应包括以下几点

· 多年经验。

·当前/最后一家公司。

·当前/上一个项目。

根据我的介绍,我仅介绍了一些重要的内容。 这仅是准则,而不是您必须遵循的规则列表。 如果您已经准备好一个经过充分准备和排练的介绍,那么使用它就不会有任何问题。

2. 完成最具挑战性的任务。

这是一个棘手的问题,您应该始终为该问题准备一个答案,因为如果尝试在面试中解决这个问题,那么在大多数情况下,您会想到的答案要么太简单,要么太难解释。 因此,最好对此问题准备充分的答案。

3. 列举一些您曾经使用过的iOS框架

这又是您应该事先准备的东西。 我一直在问这个问题,而我只记得UIKit 🤦🏽‍🤦🏽️。 我并不是说所有人都会发生这种情况,但事前准备没错。

4. 最新版本的swift中引入的新功能

每个新版本的swift都会引入新的变化,您应该知道这些变化。 您可以阅读或观看视频以保持最新状态。 您也可以参考whatsnewinswift网站。 在这里,您可以根据引入的所有swift版本跟踪swift中引入的所有更改。

5. 什么是闭包,它们是引用类型还是值类型?

我敢肯定,您中的许多人都使用过闭包,但是如果有人要求您定义或解释闭包,那么它将变得有些困难。 知道一件事是一回事,用正确的单词正确地解释它是另一回事,对吗?

无论如何根据迅速的文档

闭包是可以独立传递的功能块,可以在代码中传递和使用。 Swift中的闭包类似于C和Objective-C中的块,以及其他编程语言中的lambda。

因此,您可以使用以上定义来解释采访中的闭包。

对于问题的第二部分, 闭包是引用类型

请同时阅读以下主题(上述快速文档超链接中的详细信息)。

·闭包的类型,即转义和不转义

·尾随封口

·自动完成关闭

6. URLSession如何比NSURLConnection好?为什么我们已经拥有NSURLConnection时为什么需要URLSession?

因此,为此,我完成了以下两个类的比较

NSURLConnection

·您必须在每个连接上分别设置配置选项

·处理单个请求以及请求后的任何后续处理

·每个连接都有一个单独的委托

·当应用程序未运行时(即应用程序已暂停/应用程序退出/应用程序崩溃),它无法执行后台下载。

·可以启动或取消连接,但不能暂停和恢复。

URLSession

·我们提供了可重用的配置对象,其中封装了许多常见的配置选项。

·它处理多个任务,每个任务代表一个请求的URL以及根据请求的任何后续操作。

·在会话中的所有任务之间共享代理。

·当应用未运行时(例如,应用已暂停/应用退出/应用崩溃),它将执行后台下载。

有关更多详细信息,请阅读Raywenderlich的这篇文章。

7. 为什么我们需要可选的(快捷方式)?

可选参数是用于处理缺少值的东西,即可选类型可以具有值,也可以为nil。

在Objective-C中,变量也可以具有值或可以为nil值,那么为什么需要swift可选项?

对于可选类型,编译器提供编译时检查。 假设您正在使用一个可选变量,并且试图访问它的值,那么编译器会抱怨您需要首先取消包装可选类型,然后才能访问它的值。 由于有这么多运行时间,因此避免了nil崩溃的情况,因为我们总是在访问它之前先检查该值。 同样,对于可选对象,我们可以使用可选链接和可选绑定,这在Objective-C中是不可能的。 因此,这就是为什么与Objective-C相比,可选选项在语言功能方面的标记改进。

8. 如何为iPad纵向和iPad横向设计不同的布局?

这里的问题是,iPad的横向和纵向都具有“常规-常规”尺寸级别。 因此,如果有人希望UI元素具有不同的布局,如何识别方向。 解决方案如下:

·设计两种不同的UI布局。 一种用于紧凑型常规型,另一种用于常规型常规尺寸。

·然后重写以下函数,并针对不同的方向返回不同的大小类类型。

9. 什么是延迟块?

Defer等待执行一段代码,直到当前作用域(即循环或方法)存在为止。 延迟是否执行范围退出

·干净利落。

·来自警卫声明。

·引发错误。

同样,如果作用域中有多个defer语句,则它们的执行顺序与定义它们的顺序相反。

Defer的用例—确保在退出当前作用域之前清除某些资源。 有关详细信息,请阅读Defer。

10.什么是泛型?

同样,这是我们所有人都必须使用的东西,但是当要定义什么泛型时,这对我们来说是一项艰巨的任务。

根据迅速的文档,“ 通用代码使您可以编写灵活,可重用的函数和类型,这些函数和类型可以根据您定义的要求与任何类型一起使用。”

这是一个示例代码,用于从该类型的数组中搜索特定的数据类型。 在第一个函数中,我们从字符串数组中搜索一个字符串。 只要我们必须搜索字符串,它就可以工作,但是如果必须从整数或浮点数组中搜索整数或浮点数,则必须为整数和浮点数搜索创建不同的方法,这会导致代码重复。 因此,要消除此代码重复,我们可以使用泛型。 第二个函数使用泛型,其中搜索功能适用于所有类型,只要它符合“平等”协议即可。

让我知道您对这些问题/答案的看法,如果您认为某些答案不符合要求或需要更正,请在下面的评论中告诉我。

另外,还有很多问题要提出,我计划在下一部分中分享,但是如果有人不想等待并且希望查看完整的问题集,请提及您的电子邮件ID在下面的评论部分中,并将与您分享此列表。

最后但并非最不重要的一点,我要感谢这里的几个人。 首先是Omkar khedekar,它是对所有答案的审查。其次,Rajvi Gandhi,是为了使本文可读。

而已。 感谢您的阅读。😀😀😀