Tag: 面试问题

面向高级/领先IOS开发人员的面试指南

你好, 在这篇文章中; 我喜欢分享一个针对开发人员面试准备的指南,该指南基于我的经验和阅读。 因此,在我以前的职业生涯中,我收到了无数的工作机会,并接受了中型/大型公司的采访。 我决定写一个指南,这可能对您也有帮助。 我们都知道面试是一个挑战性的过程。 因此,您可能是全职工作,并且每天都在解决主要问题,执行常规任务和冲刺,每天举行Scrum会议或每天早上使用看板,运行冲刺等。 但是,如果您认为自己准备好接受具有挑战性的面试,那就错了。 因为您仍然需要保持敏锐,也许您认为为战斗做好准备,但是将自己推进是一个好主意。 您必须为今天的下一个职位做好准备,可能是内部公司或其他公司,尝试了解公司的文化,并了解团队组织如何在软件行业中工作以及如何更改业务需求。 所以,保持自己的锋利是最好的选择,让我们提高自己的技能吧!

针对开发人员/高级开发人员的iOS面试问题

在本文中,我将介绍与iOS面试有关的大多数问题和答案。 它一定会在某种程度上帮助您。 开始吧。 Q1。 swift和目标C有什么区别? 什么是手动保留周期? 内存管理如何快速工作? 如何检查协议的可选方法在继承的类中实现? 什么是面向协议的编程? MVVM与MVC? 如何快速实施收款? NSArray vs Array? 您将如何在用户默认值中存储自定义对象? https://medium.com/ios-expert-series-or-interview-series/top-ios-interview-questions-and-answers-august-2018-5cc89eb67160 Q2。 为什么@ property / @ synthesize不存在? 如何实现可选功能? 为什么网点薄弱? 您将如何修改init函数中的let变量? 什么是隐式展开可选项? https://medium.com/ios-expert-series-or-interview-series/top-ios-interview-questions-and-answers-august-2018-part-2-9aa313dd04f2 Q3。 如何快速创建抽象类? https://medium.com/ios-expert-series-or-interview-series/how-to-create-an-abstract-class-in-swift-f8ebdc30e26 Q4。 黑白Delegate和DataSource有什么区别? https://medium.com/ios-expert-series-or-interview-series/top-ios-interview-questions-and-answers-august-2018-part-3-4868552831f4 Q5。 快速编写通用单例类? 什么是仅类协议? 快速的静态函数与类函数? https://medium.com/ios-expert-series-or-interview-series/top-ios-interview-questions-and-answers-august-2018-part-4-b5bb73d9b3d6 Q6。 DIspatchQueue中有哪些不同类型的队列? 什么是坚实原则? 什么是依赖注入? https://medium.com/ios-expert-series-or-interview-series/top-ios-interview-questions-and-answers-sept-2018-383dc3bbda67 Q7。 什么是适配器,责任链,装饰者,委托,外观设计模式? https://medium.com/ios-expert-series-or-interview-series/design-patterns-on-ios-7523230f3d31 Q8。 黑白手动和自动参考计数不同? 什么是并发,有多少种实现方法? https://medium.com/ios-expert-series-or-interview-series/top-ios-interview-questions-and-answers-oct-2018-c98e8821ff6c Q9。 MVC vs MVP vs […]

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 […]

iOS面试问题:基础知识

是的,许多伟大的作者已经讨论了这个话题,他们有很多的问题和答案。 在我的这篇文章中,我没有做任何不同的事情,尽管我认为分享我的采访经历会很棒。 那么从哪里开始呢? 诚实的答案将来自“ 基础知识 ”。 而且基础是Oops概念。即面向对象的编程概念。 如果面试官是有经验的人,他或她肯定会从此开始。 因此,在本文中,我们将介绍Oops概念。 对于与此相关的问题,我们应该准备好至少一个衬纸答案,并在需要时提供示例。 问:什么是面向对象编程? 面向对象编程是一个概念,它涉及现实世界中的对象以及操作这些对象的方法。 目标C / Swift中的基本概念: 类 :类是一组属性和方法。 //迅速 类Person:NSObject { var firstName:字符串? var lastName:字符串? var age:整数? func printFullName(){ //一些要打印的代码 } } // Objective-C @interface Person:NSObject @ property(强原子)NSString * firstName; @property(强原子)NSString * lastName; @property(assign,atomic)int age;-(void)printFullName; @结束 对象 :对象是类的实例。 //迅速 var person1 = Person()//目标C 人* person1 = […]

IOS面试常见问题解答(2018年9月)第3部分

iOS面试题2018 Q1。 您有一个iOS应用程序处于前台,用户在iPhone上按“主页”按钮,将调用UIViewController的哪个API,并按正确的顺序进行描述? 解决方案: ViewWillDisappear-> ViewDidDisappear 加载视图控制器的方法有以下三种: 要从情节instantiateViewController(withIdentifier:)加载视图控制器,请调用相应的UIStoryboard对象的UIStoryboard instantiateViewController(withIdentifier:)方法。 要使用nib文件初始化视图控制器对象,请以编程方式创建视图控制器类,然后使用init(nibName:bundle:)方法对其进行init(nibName:bundle:) 。 使用loadView()方法为视图控制器指定视图。 在该方法中,以编程方式创建视图层次结构,并将该层次结构的根视图分配给视图控制器的view属性。 Q2。 什么是固有内容大小? 解决方案 :具有基于内容大小的自然大小的视图称为其固有内容大小。 例如,按钮的固有内容大小是其标题的大小加上很小的空白。 Q3。 什么是内容拥抱,抗压缩性,您能否说出视图的默认值? 解决方案 :自动版式使用每个尺寸的一对约束来表示视图的固有内容大小。 内容拥抱将视图向内拉,使其紧贴内容周围。 压缩阻力将视图向外推,因此它不会剪切内容。 这些约束中的每一个都有其自己的优先级。 默认情况下,视图使用250优先级表示内容,并使用750优先级表示抗压缩性。 因此,拉伸视图比收缩视图更容易。 Q4。 考虑以下情形:考虑应用程序中的图像详细信息页面,该页面相对于Superview定位。 但是在iPhone X上,即使此特定视图使用“自动布局”,页面控件在屏幕底部的位置也太低了。 它正在运行到“主页”指示器中。 您将如何解决这个问题? 解决方案 :这里的问题是页面控件的底部约束是相对于超级视图的,超级视图是全屏显示,并且位于“主页”指示器后面。 除了限制超级视图,我们还应该将页面控件限制在底部的“安全区域”布局指南中。 如果我们将其更改为连接到“安全区域”,而不是“超级视图”,那么在iPhone X上,页面指示器将自动向上移到“主页”指示器上方。 Q5。 什么是View自动布局生命周期? 解决方案:在自动布局周期中初始化UIView之后,需要执行3个步骤。 更新通过 (根据其约束计算视框) 系统从上到下 (即从超级 视图到子视图 updateConstraints()遍历视图层次结构,并为每个视图调用updateConstraints() 。 布局阶段 (每个视图的框架都使用在“ 更新”阶段中计算出的矩形进行更新 。) 它是自下而上发生的 ,即系统将视图从子 视图遍历到超级视图,并为每个视图调用layoutSubviews […]

IOS面试常见问题解答(2018年8月)第2部分

Q1。 为什么@ property / @ synthesize不存在? Swift不区分属性和实例变量(即属性的基础存储)。 要定义属性,只需在类的上下文中声明一个变量。 如果您有使用Objective-C的经验,您可能会知道它提供了两种将值和引用存储为类实例的一部分的方法。 除了属性之外,您还可以将实例变量用作存储在属性中的值的后备存储。 Swift将这些概念统一为一个属性声明。 Swift属性没有相应的实例变量,并且不能直接访问该属性的后备存储。 这种方法避免了在不同的上下文中如何访问值的困惑,并将属性的声明简化为单个确定的语句。 有关属性的所有信息(包括名称,类型和内存管理特性)都在单个位置中定义,作为类型定义的一部分。 Q2。 如何实现可选功能? 可选在Swift中作为enum类型实现。 有关如何完成此操作的示例,请参阅Apple的Swift Tour: 枚举OptionalValue { 情况无 案例Some(T) } Q3。 声明一些常量变量并在创建该类的实例期间进行初始化? 对于类实例,只能在引入常量的类的初始化期间对其进行修改。 子类不能修改它。 您可以在初始化期间的任何时候为常量属性分配一个值,只要在初始化完成时将其设置为确定值即可。 为常量属性分配值后,就无法再对其进行修改。 Q4。 定义一个变量,并在设置该变量时将其保留计数增加4,您将如何做? var vc1:NSDate? = NSDate() print(CFGetRetainCount(vc1))// 2-我期望它是1,因为只有一个变量强烈引用此对象。 var vc2:NSDate? = vc1 print(CFGetRetainCount(vc1))// 3-参考计数增加1(强参考) var vc3:NSDate? = vc2 print(CFGetRetainCount(vc3))// 4-参考计数增加1(强参考) Q5。 为什么网点薄弱? 苹果公司在其示例代码中使用的最常见的一种代码遵循以下模式: @IBOutlet私有弱变量some​​Label:UILabel!@IBOutlet私有弱变量some​​Label:UILabel?@IBOutlet私有弱变量some​​Label:UILabel? 这些示例均遵循3条简单规则: […]

IOS面试常见问题解答(2018年8月)

2018年8月iOS最新面试题 在本文中,我将介绍在最近的采访中(2018年8月)向iOS工程师询问的一些问题。 那些正在准备的人一定会对他们有所帮助。 Q1。 swift和目标C有什么区别? Q2。 什么是手动保留周期? Q3。 Swift中的内存管理如何工作? 我们首先看一下Swift中的内存管理基础知识。 ARC(自动引用计数)为您完成了大多数内存管理工作,这是一个好消息。 原理很简单:默认情况下,每个指向类实例的引用都是所谓的强引用。 只要有至少一个强引用指向一个实例,该实例就不会被释放。 如果没有足够的参考指向该实例,则该实例将被释放。 让我们看下面的例子: class TestClass {init(){print(“ init”)} deinit {print(“ deinit”)}} var testClass:TestClass? = TestClass()testClass =无 创建实例后,情况如下所示: testClass对TestClass的实例有很强的引用。 如果我们现在将此引用设置为nil,则强引用将消失,并且由于没有强引用,因此TestClass的实例将被释放: 顺便说一句,如果您看一下控制台,您会发现一切工作正常,因为只有在释放实例时,系统才会调用deinit方法: 如果TestClass的实例未释放,则不会出现“ deinit”消息。 正如我们将在后面讨论的那样,在deinit内放置一条日志消息是观察对象释放的一种很好的方法。 Q4。 拥有所有权的方法有哪些(保留数增加1)? alloc / init —创建一个对象并声明其所有权 保留—用于声明该对象的所有权 复制—复制对象并声明其所有权 Q5。 什么方法用于声明所有权(将保留计数减少1)? release —声明对象的所有权。 自动释放—声明对象的所有权。 Q6。 什么是面向协议的编程及其好处? Swift的设计核心是两个非常强大的想法:面向协议的编程和一流的值语义。 这些概念中的每一个都有益于可预测性,性能和生产率,但是它们一起可以改变我们对编程的思考方式。 了解如何应用这些想法来改进编写的代码。 快速进行面向协议的编程 Q7。 如何检查协议的可选方法在继承的类中实现? […]

iOS开发人员面试问题-第2部分

上一部分,我们介绍了有关iOS,Swift和好的方法的一般问题。 这部分也相同,但包含之间的所有差异 。 类与结构 2. 枚举-关联与原始 3. 存储属性与计算属性 4. 映射vs过滤vs compactMap vs reduce 5. 转义,非转义,尾随,自动关闭 6. 开放vs公共vs内部vs文件私人vs私人 7. IBOutlet与IBAction 8. 强vs弱vs无主 9. 运营与GCD 10. 应用程式状态 11. 框架与绑定 12. 强制展开vs自动展开vs可选绑定 13. UIViewController生命周期: 14. KVO和KVC 15. CoreData vs SQLite vs Realm 在第3部分中将与您见面,并提供一组不同的技巧和技巧来破解iOS开发人员面试。 编辑: 第3部分 准备好了 !!! 谢谢阅读。 您可以通过以下方式与我联系: https://www.linkedin.com/in/kmuralidharan91/

IOS面试常见问题解答(2018年8月)第4部分

本文结束了本月的问题,下个月将有更多新问题。 Q1。 下面的代码片段是否正确并且不会产生编译器错误? 在B类中进行覆盖时,是否需要删除class关键字? 解决方案 : 是的,它是正确的并且可以正确编译,如果您在类B中的重写功能中删除了类关键字,则会抛出错误。 Q2。 在以下片段中,有两种情况 一种。 如果在func转换之前添加class关键字该怎么办呢?这意味着什么,它将进行编译? b。 如果在func转换之前添加static关键字该怎么办呢。这意味着什么,它将进行编译? 解决方案 : 一种。 它将给出编译时错误 b。 它将完美编译 下一个问题涵盖了什么意思。 Q3。 Swift中的静态函数和类函数有什么区别? 解决方案 :结构和枚举的静态函数,以及用于类的类 其他一些区别是类函数是动态调度的,并且可以被子类覆盖。 Q4。 什么是“仅类协议”,您可以为其编写代码吗? 解决方案 :通过将AnyObject协议添加到协议的继承列表中,可以将协议采用限制为类类型(而不是结构或枚举)。 Q4。 编写通用Singelton类? 解决方案:符合Initializable协议的类在整个生命周期中将只有一个实例。 用例: 希望你喜欢这个解释。 如有其他疑问,请访问-iOS专家系列或访谈系列 解决方案 :是否简单地将static用于结构和枚举,协议和类的静态函数? 那是主要的区别。 其他一些区别是类函数是动态调度的,并且可以被子类覆盖。

iOS开发人员(Swift)的10个最常见问题解答

我去过许多iOS开发人员特定的采访,我被要求解释很多东西而不是编写任何代码。 您可能知道如何构建应用程序或成为编写Swift代码的专家,但这并不意味着您会在iOS开发人员面试中表现出色。 大多数公司在雇用您时都不允许您编写应用程序或编写代码,它们只是问直接的问题,而且需要描述。 因此,请确保您了解开发应用程序时使用的内容。 这是我在iOS开发人员访谈中被问到的10个问题。 我已经从书本和在线资源中收集了答案,并将它们合并在一页上,所以您不会像我一样费劲。 程序需要根据需要分配和取消分配内存。 Swift会自动执行此操作。 Swift不使用垃圾回收器,这是一种常用工具。 ARC是为Obj-C引入的自动引用计数。 一切都是自动管理的,但是您需要了解ARC以避免内存泄漏。 保持周期? 当引用指向另一个引用时,就会发生保留周期,因此它将永远不会从堆中删除。 这主要发生在类和闭包中。 闭包存在于内存中,因此当您使用Self(作为参考)时,需要确保解决保留周期。 弱,无主,强? 除非您另外指定,否则所有Swift属性都是强大的,这意味着除非拥有它们的任何东西都从RAM中删除,否则它们不会从RAM中删除。 另一方面,当您想说“我希望能够引用此变量,但我不介意它消失了,所以我不想拥有它”时,它就很弱 。这看起来很奇怪:毕竟,引用可能不存在的变量有什么意义? 无所有权的意思是“不要介意这个,我将确保将其从内存中删除。” Model-View-Controller是基于三个作业类别的设计模式:模型,视图或控制器。 模型 :模型负责存储数据并使数据可用于其他对象。 视图 :视图是应用程序的视觉元素。 您在屏幕上看到的内容。 控制器 :控制器执行必要的逻辑,以连接您的视图和模型。 他们处理事件。 在开发应用程序时,您可以使用不同类型的设计模式,但这是最常见的设计模式。 Singleton :Singleton设计模式可确保给定类仅存在一个实例 Singleton Plus:您可以创建另一个对象。 不会强迫您使用共享的。 Facade :Facade设计模式提供了到复杂子系统的单个接口。 假设您有NetworkManager类,可以在其中发出HTTP请求,并且具有JSON响应。 使用Facade,您可以使NetworkManager只专注于网络。 装饰器:装饰器模式可向对象动态添加行为和职责,而无需修改其代码。 适配器:适配器允许具有不兼容接口的类一起工作。 它将自己包裹在对象周围,并公开一个标准接口以与该对象进行交互。 观察者 :在观察者模式中,一个对象将任何状态更改通知其他对象。 可可以两种方式实现观察者模式:通知和键值观察(KVO)。 主要区别在于值类型在传递时会被复制,而引用类型共享引用信息的单个副本。 一个可选的用来让任何类型的变量代表缺乏价值 。 可选变量可以随时保存值或nil。 类支持继承, 结构不支持。 类是引用类型, 结构是值类型。 强制拆包 ! […]