iOS面试前准备

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包含许多其他有价值的编译器标志和其他调试技术。

知道你在做什么

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

继续尝试

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

祝你好运!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 11,945评论 4 60
  • 一晃几年过去,终于读至最后一字。中学时从论斤卖的破书摊上把它淘回家,拆开一看却都是黄脆的纸、蹩脚的错别字,略嫌...
    对世界上瘾阅读 269评论 0 2
  • 三爱刚一上映,就去电影院看了,评分、票房、甚至男女主演和制作水平都不会影响我的观感和心情,于我而言这是和作者自由行...
    赵玥昕阅读 5,215评论 3 28
  • 本来是想写关于饮食方面的东西,但是我脑子里其实还挺乱的,就打算从自身减肥经历开始,结果没想到一扯扯出一大篇,干脆就...
    echi阅读 1,102评论 12 6
  • 《落水狗》是昆汀·塔伦蒂诺1992年推出的电影也是他的处女作,也是昆汀cult片情节的起步。时隔30多年,《杀死比...
    d55a31d8c39e阅读 855评论 0 0