iOS面试问答

在这个故事中,我将分享与IOS开发相关的采访问题。 希望您会找到很多有用的信息。

我们为什么应该录用你?

在面试中专注于代码。 您想展示自己的技能,但是最终公司对您对代码的了解以及花费在研究和学习更多时间上的时间感兴趣。

尽管问题和答案可能是技术性的,但记住要向您的准雇主表明您是人也是很重要的。 为技术性添加一些色彩,加入您喜欢的开发人员双关语,并了解您的知识-这是一个成功的组合,一定会让您梦想中的iOS演出。

命名用于构建iOS应用程序用户界面的框架?

UIKit框架:UIKit框架提供了事件处理,绘图模型,窗口,视图和控件,这些控件是专门为触摸屏界面设计的。

您如何响应应用程序的状态转换?

通过在应用程序的委托对象上调用相应的方法,状态转换可以以适当的方式响应状态更改。

ApplicationDidBecomeActive()方法可用于准备作为前台应用程序运行。

当应用程序在后台运行时,可以使用ApplicationDidEnterBackground()方法执行一些代码,并且可以随时将其挂起。

当您的应用程序移出后台时,可以使用ApplicationWillEnterForeground()方法执行一些代码

当您的应用终止时,将调用ApplicationWillTerminate()方法。

iOS 9中添加了哪些功能?

1 —智能搜索和Siri-

2-更深入的搜索功能

3-旧金山字体,

4 —可选的iCloud Drive应用程序

保留和分配之间有什么区别?

分配创建从一个对象到另一个对象的引用,而不增加源的保留计数。

保留创建从一个对象到另一个对象的引用,并增加源对象的保留计数。

在UIView中指定元素布局的不同方式有哪些?

1 —使用InterfaceBuilder — XIB文件

2-具有NSLayoutConstraint的自己的视图,该视图按自动布局进行排列

3 —(id)initWithFrame:(CGRect)frame方法。

什么是原子性质?

确保始终返回完全初始化的对象。

什么是单例课程?

在应用程序中仅创建该类的一个实例。

Objective-C是否包含私有方法?

否,如果您确实想要私有方法,则需要添加本地类别/未命名类别/类扩展

什么是plist?

Plist是指属性列表,该属性列表将数据组织为命名值和使用多种对象类型的值列表

复用标识符的目的是什么?

在UITableView中使用相似的布局但内容不同

“ app ID”,“ Team ID”和“ bundle ID”之间有什么区别?它们分别是做什么用的?

应用程序ID是两部分的字符串,用于标识单个开发团队中的一个或多个应用程序。 该字符串由Team ID和bundle ID搜索字符串组成,并用句点(。)分隔两个部分。

团队ID由Apple提供,对于特定的开发团队是唯一的。

开发人员提供捆绑软件ID搜索字符串,以匹配单个应用程序的捆绑软件ID或一组应用程序的一组捆绑软件ID。

可可中的抽象类是什么?

可可不提供任何所谓的摘要

什么是NSURLConnection类。 定义其类型?

两种类型的NSURLConnection类。 一个是异步的,另一个是同步的。

异步连接将创建一个新线程,并在新线程上执行其下载过程。

同步连接将在下载内容并进行通信时阻止调用线程。

列出哪些不同的Swift控件语句。

1 —继续

2-休息

3-跌倒

4 —返回

什么是可选链接?

可选链接是查询和调用属性的过程。

Swift中提供哪些收集类型?

1 —阵列

2 —字典

3 —套

请记住,这些不同于Swift数据类型!

什么是DispatchGroup?

允许汇总工作同步。 即使它们可能在不同的队列中运行,我们也可以使用它们来提交多个不同的工作项并跟踪它们何时完成

解释不同类型的通知

本地:应用程序仍在后台运行-不需要服务器。

推送:上传您的证书,“为应用提供数字握手”,并允许服务器通过应用发送通知

Any和AnyObject有什么区别?

ANY可以代表任何类型的实例,包括函数类型和可选类型。

AnyObject可以代表任何类类型的实例

什么是持续集成?

持续集成使我们能够在应用程序开发中出现问题时及早获得反馈。

什么是封装?

封装是一种面向对象的设计原理,它隐藏了对象的内部状态和功能。 这意味着对象将其状态信息保密。

什么是类别?何时使用?

类别是一种在不扩展类的情况下向其添加其他方法的方法。

viewDidLoad和viewDidAppear有什么区别?

加载视图时调用viewDidLoad

每当在设备上显示视图时,都会调用viewDidAppear

什么是协议,如何定义自己的协议以及何时使用?

协议类似于Java的接口。 它定义了一个类在采用协议时必须/可以实现的必需和可选方法的列表。

什么是依赖管理?

如果我们要集成开放源代码项目,从第三方项目添加框架,甚至在我们自己的产品中重用代码,则依赖管理可以帮助我们管理这些关系。 可可豆荚和迦太基就是很好的例子

边界和框架有什么区别?

框:视框是矩形,表示为对应于其中包含的超级视图的位置(X,Y)和大小(宽度/高度)。

边界:矩形视图的边界,表示为对应于其自身坐标系(0.0)的位置(X,Y)和大小(宽度/高度)

是什么 ? 在Swift中?

在属性声明期间使用问号,因为它告诉编译器此属性是可选的。

双问号(“ ??”)的用途是什么

提供变量的默认值。

Swift中let和var有什么区别?

let关键字用于声明常量,而var用于声明变量。

什么是内存泄漏?

内存泄漏是一种资源泄漏,当计算机程序错误地管理分配以致不再释放不再需要的内存时,就会发生这种情况

什么是自动版式?

自动布局基于放置在这些视图上的约束来动态计算视图层次结构中所有视图的大小和位置。

应用程式变薄是什么意思?

商店和操作系统通过根据用户特定设备的功能量身定制应用交付,从而以最小的占用空间优化了iOS,tvOS和watchOS应用的安装。这种优化称为应用细化,可让您创建使用最多设备功能,占用最多设备的应用最小的磁盘空间,并容纳Apple可以应用的将来更新。

什么是KVC和KVO? 举一个使用KVC设置值的示例。

KVC代表键值编码 。 这是一种机制,通过该机制可以在运行时使用字符串访问对象的属性,而不必在开发时静态地知道属性名称。

NSString * n = [对象valueForKey:@“名称”]

KVO代表键值观察,并允许控制器或类观察属性值的更改。

[对象setValue:@“ Mary” forKey:@“ name”]