美文网首页
iOS面试前准备

iOS面试前准备

作者: Mominglaile | 来源:发表于2017-03-30 14:57 被阅读40次

    iOS是一个庞大的平台,涵盖2711个类,644个协议和125个框架。
    在准备iOS采访时,绝对检查所有API文档的冲动可能是自我毁灭的;
    因为不可能知道和智慧地回忆每一个角落和骷髅。
    那么我们应该关注什么呢?
    每个有能力的iOS开发人员应该知道面试的重点是什么?
    以下列表作为“肠道检查”;
    将这些领域视为为其他人编写移动代码的工作所需的基础技能。
    假设你也研究并熟悉候选公司所采用的其他杂项,利基技术。

    研究HIG

    臭名昭着的HIG就是苹果公司谈的

    人机接口指南 虽然并不是严格的技术文件,但HIG非常详细地描述了每个苹果提供的UIControl和导航范例的设计决策,可用性和适当的使用。
    苹果应用程序为什么感觉到这样的宣言。
    请确保以完整的方式进行审查,并记录每个控件的可接受的用例。

    评论Appstore指南

    如果App无法通过App Store评论,则应用程序的商业价值很小。
    知道什么类型的应用程序是允许的,哪些不是。
    研究并注意导致拒绝的灰色地区和情况。
    涉及Apple Pay,后台执行和应用内购买的规则是必需的知识。
    记下你有一个应用程序被拒绝的时间,以及通过审核的更改。

    了解你的编程语言 所有的。

    Swift是iOS开发的未来。 这个事实是不负责任的。 不过,这个事实并不意味着App Store中的数百万个应用程序,或者所有 Cocoa Foundation 将一夜之间转向Swift。
    苹果可能是魔术,但这是计算机科学。
    候选公司很有可能拥有必须与Swift接口的传统Objective-C代码。
    在一个常规项目中,Objective-C的流畅性仍然是必需的。
    UIButton action actions,NSOperation等iOS核心部分仍然需要通过Objective-C运行时进行调度。

    Objective-C熟悉

    能够解释"消息传递",以及它与 Objective-C的关系。
    (以及Swift中的不同之处)深入了解。
    阅读Obj-C运行时引用和objc.h头文件。
    了解什么是"键值编码"真正意义,以及与Swift的连接方式。

    将遗留的Objective-C代码移植到Swift是测试您的技能的好方法。
    确保您了解Obj-C可空性注释的工作原理以及它们如何贡献类型安全的跨语言界面。

    了解Objective-C的核心方面:

    • 协议和它们与Swift Protocols的区别

    • 类别

    • 班级额外资讯

    • 消息传递。

    • 基础类型之间的免费桥接。

    Swift 熟悉

    幸运的是,Swift playgrounds 提供了一个很好的地方,以满足更深奥的语言环境。 切换模式匹配, where 子句和解包枚举相关数据是强大的技术,可以在编码测试期间节省时间。

    知道为什么,什么时候使用Swift的核心方面:

    • 泛型。 创建自己可重复使用的堆栈或队列数据结构。

    • Value Types, Enums and Structs. 知道这些是不同于类,何时使用值类型而不是引用类型。

    • 什么是面向协议的编程?

    • Swift扩展

    • 浏览Swift标准库协议。 使用SequeueType协议创建自己的自定义集合。

    • Swift错误处理。 defer,,,,try!try?catchthrows

    自动布局和大小类

    iOS世界几乎每年都会使用新的支持的界面大小进行更改。 自适应接口在这里停留,流畅的自动布局是确保您的UI在任何地方都可操作的必要技能。

    界面生成器内自动布局的能力除了Auto Layout系统与 UIView 子类接口之外。 知道在哪里以及何时使用方法 layoutIfNeededlayoutSubviewssetNeedsLayout。通过NSLayoutConstraint课程 舒适的编程自动布局。

    目前,Size Classes 只能通过故事板进行配置。
    有能力的自适应UI工程师必须很乐意从头开始设计布局,并根据各种设备size-classes添加/删除约束。
    记得通用设备尺寸及其相关尺寸等级可以让您看起来很精明。

    联网

    没有应用程序是一个岛屿。
    如果有一个非常好的机会,您要努力去获得一个与后端接口服务交互的应用程序。
    该基准通常是HTTP协议的工作知识。
    可以使用cURL命令行工具测试REST服务。
    在iOS上,NSURLSession这组课程提供了一个梦幻般的高级网络编程接口。 知道如何完成(至少)这些任务:

    • 在每个请求上发送用户定义的头值。

    • 配置URL缓存,并确保所有请求都使用相同的缓存。

    • 如何编写异步,线程安全的网络代码。

    • NSURLComponents及其使用HTTP'GET'请求

    • httpBody编码,以及如何将图片和其他任意数据上传到网络端点。

    • 响应数据的类型安全处理。 这通常是 JSON数据,但不要假设. 能够将原始NSData 数据解码为任意数据格式。 演示错误处理和防御编码技术的知识。

    数据持久化

    每个应用程序都需要存储数据; 无论是在云端中,临时缓存还是临时文件。 移动平台是资源有限的环境,因此在选择持久性策略时需要更加谨慎。 所选择的持久性对应用程序的整个UX有直接的影响。 选择不好,用户可能会 遭受数据丢失,并且数据层与主线程循环相冲突时会降级UI。 可以谈论备用持久性策略,以及如何组合不同的存储选项来满足特殊情况。 知道了硬盘技术的细节。 持久化技术非常重要,只对理论知识熟悉,是并不能通过面试考验的。

    研究这些持久性技术:

    • Core Data,在iOS上最常见的数据持久性策略。 确保知道至少两个不同的核心数据架构和每个的好处。究竟知道mainQueueprivate并发类型的意思。

    • NSCoding仍然是一个相关的数据持久化策略,可以在不需要Core Data的对象图查询功能的较旧代码库中找到。 知道什么时候使用NSCoding,这与Swift数据类型有关。

    • NSUserDefaults是持久化解决方案的简单方式。既然使用简单,更当知道合理的使用它,它的过度使用可能会累积技术债务。知道什么样的数据适合使用NSUserDefaults,何时使用。

    • 第三方框架(Realm,FMDB等)。Core Data 不是大型项目里唯一的持久化方案。要了解更多的知识,请查看一些第三方移动持久性框架。将它们(以有意义的技术方式)与Core Data进行比较。

    内存管理

    手册

    启用ARC,编译器会自动插入 retainreleaseautorelease要求我们手动管理。然而,在老项目(或特殊情况,如 iOS6以前设备兼容)中,手动内存管理可能仍在使用中。确保您知道如何在没有MRC的帮助下编写代码。在Swift中,知道如何使用返回类型的未注释的CoreFoundation API

    自动参考计数

    Cocoa不依赖垃圾回收机制。
    那么你的程序如何知道何时释放内存?
    引用计数的基础知识是即使是最新手的iOS工程师所必需的技能。
    确保你知道'retain cycle'是什么,以及如何创建它们。
    了解ObjC and Swift 存储语义__blockweakstrongunowned selfweak self

    在Cocoa中设计面向对象的系统时,必须考虑内存和"ownership"的概念。

    Instruments(仪器) 和 lldb

    错误发生。
    确定出错的速度是任何专业程序员的基本技能。
    在面试中可能会询问您是否在示例应用程序中调试常见问题。
    确保您熟悉常见的仪器模板来诊断这些问题:

    • Memory leaks 和 Reference cycles

    • Slow UI performance

    • Slow Network performance

    • Slow Animations

    • Bad Core Data performance

    苹果技术说明iOS Debugging包含许多其他有价值的编译器标志和其他调试技术。

    知道你在做什么

    即使技术理解不深也不要在接受面试感到不安。面试官的工作只是分离哪些是不能做事的。
    如果你真的不懂,也不必担心,直接说出来,切勿装逼。

    继续尝试

    就像玩杂耍,做饭,还是滑翔,面试需要练习。
    对最终结果保持良好的态度,无论发生什么事情。
    面试失败可能是对自我的一种打击,但也是作为一种学习经验,可以提高下一个人的面试技巧。
    面试结束后,记录您觉得可以更好地回答的所有问题,或者您可能需要调查的问题。

    祝你好运!

    相关文章

      网友评论

          本文标题:iOS面试前准备

          本文链接:https://www.haomeiwen.com/subject/oxzuottx.html