| 作者 |
| 故胤道长 |
| 丛书名 |
| 出版社 |
| 电子工业出版社 |
| ISBN |
| 9787121342622 |
| 简要 |
| 简介 |
| 内容简介书籍计算机书籍 《iOS面试之道》是作者将多年的工作经验和积累,结合具体面试内容总结而成的。《iOS面试之道》共分为3部分。第1部分为面试准备,详细介绍求职中遇到的基本问题,作者根据其多年的经验,在面试流程、简历投递、复习准备方面给出了完善的参考意见和建议。第2部分为算法知识。算法几乎是各种水平的程序员都要面对的考查内容。该部分采用Swift语言重新审视了多种数据结构和算法原理,可以说是为iOS开发者量身打造的算法解答。第3部分为iOS专业问答,分为语言工具、系统框架和经验之谈,采用问答的形式来详细介绍。如果你是一名iOS开发者,并且正准备跳槽,那么本书是一本不错的复习参考书;如果你没有面试计划,那么本书也可以帮助你对iOS知识进行提纲挈领的整理;如果你是面试官,那么希望本书能为你提供考查应聘者的依据和源泉;对于具有其他背景的软件工程师,若想一窥iOS世界的知识框架,本书也是不错的切入点。 |
| 目录 |
第1章 iOS工程师的面试 / 1 1.1 简历的准备 / 1 1.2 寻找机会 / 8 1.3 面试流程 / 9 1.4 代码和系统设计的准备 / 16 1.5 如何提问 / 22 1.6 Offer的比较和选择 / 24 第2章 算法基础 / 28 2.1 基本的数据结构 / 28 数组 / 28 字典和集合 / 30 字符串 / 32 2.2 链表 / 34 链表的基本概念 / 34 Dummy节点和尾插法 / 35 快行指针 / 38 2.3 栈和队列 / 40 栈和队列的基本概念 / 40 栈和队列互相转换 / 43 栈和队列面试实战题 / 45 2.4 二叉树 / 47 二叉树的基本概念 / 48 二叉树的遍历 / 50 二叉树面试实战题 / 51 2.5 排序和搜索 / 54 排序的基本概念 / 54 搜索的基本概念 / 57 排序面试实战题 / 59 搜索面试实战题 / 61 iOS中搜索与排序的配合使用 / 64 2.6 深度优先搜索和广度优先搜索 / 66 深度优先搜索和广度优先搜索的基本概念 / 66 深度优先搜索和广度优先搜索面试实战题 / 69 2.7 动态规划 / 74 斐波拉契数列问题 / 74 斐波拉契数列问题面试实战题 / 77 第3章 语言工具 / 81 3.1 Swift / 81 Swift面试理论题 / 81 Swift面试实战题 / 88 3.2 Objective-C / 91 Objective-C面试理论题 / 91 Objective-C面试实战题 / 96 3.3 Swift VS Objective-C / 101 数据结构 / 101 编程思路 / 104 语言特性 / 105 3.4 Xcode使用 / 112 Xcode调试 / 112 分析与优化 / 114 Playground技巧 / 117 第4章 系统框架 / 119 4.1 UI相关知识 / 119 UIKit / 119 UI控件和基本布局 / 119 动画 / 124 多任务开发 / 127 4.2 UIScrollView及其子类 / 131 UIScrollView及其子类理论面试题 / 131 拓展知识 / 134 优化进阶 / 138 4.3 网络、推送与数据处理 / 141 网络、推送与数据处理相关理论 / 142 iOS网络请求 / 144 信息推送 / 148 数据处理 / 150 4.4 并发编程 / 152 4.5 设计模式 / 168 第5章 经验之谈 / 175 5.1 架构的选择 / 175 5.2 面向协议的编程 / 184 POP VS OOP / 184 POP面试实战题 / 189 5.3 App的测试和上架 / 195 测试相关知识 / 195 App Store相关知识 / 201 结束语 / 204 题目 给出一个字符串,要求将其按照单词顺序进行反转\t33 类(class)和结构体(struct)有什么区别\t81 Swift是面向对象还是函数式的编程语言\t83 在Swift中,什么是可选型(Optional)\t84 在Swift中,什么是泛型(Generics)\t84 说明并比较关键词:Open,Public,Internal,File-private和Private\t85 说明并比较关键词:Strong,Weak和Unowned\t86 在Swift中,如何理解copy-on-write\t87 什么是属性观察(Property Observer)\t87 在结构体中如何修改成员变量的方法\t88 如何用Swift实现或(II)操作\t89 实现一个函数:输入是任意一个整数,输出为输入的整数 2\t89 实现一个函数:求0~100(包括0和100)中为偶数并且恰好是其他数字平方的 数字\t90 什么是ARC\t91 什么情况下会出现循环引用\t92 说明并比较关键词:strong,weak,assign和copy\t93 说明并比较关键词:atomatic和nonatomic\t94 atomic是百分之百线程安全的吗\t94 说明并比较关键词:_ _weak和_ _block\t95 什么是block?它和代理的区别是什么\t95 属性声明代码风格考查\t96 架构解耦代码考查\t97 内存管理语法考查\t98 多线程语法考查\t99 以scheduledTimerWithTimeInterval的方式触发的timer,在滑动页面上的列表时, timer会暂停,为什么?该如何解决\t100 Swift为什么将String,Array和Dictionary设计成值类型\t101 如何用Swift将协议(protocol)中的部分方法设计成可选(optional)\t102 协议的代码实战\t103 在Swift和Objective-C的混合编程项目中,如何在Swift文件中调用 Objective-C文件中定义的方法?如何在Objective-C文件中调用Swift 文件中定义的方法\t104 比较Swift和Objective-C中的初始化方法(init)有什么异同\t105 比较Swift和Objective-C中的协议(protocol)有什么异同\t105 谈谈对Objective-C和Swift动态特性的理解\t105 语言特性的代码实战\t107 message send如果找不到对象,则会如何进行后续处理\t108 什么是method swizzling\t108 Swift和Objective-C的自省(Introspection)有什么不同\t109 能否通过Category给已有的类添加属性(property)\t110 LLDB中p和po有什么区别\t112 Xcode中的Buildtime issues和Runtime issues指什么\t113 App启动时间过长,该怎样优化\t114 如何用Xcode检测代码中的循环引用\t115 怎样解决EXC_BAD_ACCESS\t116 如何在Playground中执行异步操作\t117 在playground中实现一个10行的列表,每行随机显示一个0~100的整数\t118 要在UIView上定义一个Label有哪几种方式\t119 storyboard/xib和纯代码构建UI相比,有哪些优点和缺点\t120 Auto Layout和Frame在UI布局和渲染上有什么区别\t121 UIView和CALayer有什么区别\t121 说明并比较关键词:frame,bounds和center\t122 说明并比较方法:layoutIfNeeded,layoutSubviews和setNeedsLayout\t123 说明并比较关键词:Safe Area,SafeAreaLayoutGuide和SafeAreaInsets\t123 在iOS中实现动画的方式有几种\t124 控制屏幕上的圆形小球,使其水平向右滑动200个point\t125 在iOS开发中,如何保证App的UI在iPhone、iPad及iPad分屏情况下 依然适用\t127 如何用drag & drop实现图片拖动功能\t129 说明并比较关键词:contentView,contentInset,contentSize和contentOffset\t131 说明UITableViewCell的重用机制\t133 说明并比较协议:UITableViewDataSource和UITableViewDelegate\t133 请说明并比较协议:UICollectionViewDataSource,UICollection- ViewDelegate 和UICollectionViewDelegateFlowLayout\t133 实现一个10行的列表,每行随机显示一个0~100的整数。用户可以删除、 移动任何一行,下拉列表中的数字重新刷新\t134 UICollectionView中的Supplementary Views和Decoration Views分别指什么\t137 如果一个列表视图滑动很慢,那么该怎样优化\t138 说一说实现预加载的方法\t139 如何用UICollectionView实现瀑布流界面\t140 说一说HTTP中GET与POST的区别\t142 说一说Session和Cookie的概念\t142 说明并比较网络通信协议:Ajax Polling,Long Polling,WebSockets和 Sever-Sent Event\t143 在一个HTTPS连接的网站中,输入账号和密码并单击登录按钮后, 到服务器返回这个请求前,这期间经历了什么\t143 说明并比较类:URLSessionTask,URLSessionDataTask, URLSessionUploadTask和URLSessionDownloadTask\t144 什么是Completion Handler\t145 设计一个方法,在给定API的网址的条件下,返回用户数据\t146 在iOS开发中,本地消息通知的流程是怎样的\t148 说一说在iOS开发中,远程消息推送的原理\t149 在iOS开发中,如何实现编码和解码\t150 说一说在iOS开发中数据持久化的方案\t151 在iOS开发中,对于并发操作有哪3种方式\t153 比较关键词:Serial,Concurrent,Sync和Async\t153 串行队列的代码实战\t154 并行队列的代码实战\t156 举例说明iOS并发编程中的三大问题\t157 竞态条件的代码实战\t160 试比较GCD中的方法:dispatch_async,dispatch_after,dispatch_ once 和dispatch_group\t162 GCD中全局(global)队列有哪几种优先级\t164 试比较Operations中的关键词:Operation,BlockOperation和OperationQueue\t164 如何在OperationQueue中取消某个Operation\t166 在实际开发中,主线程和其他线程有哪些使用场景\t168 说说你平常开发中用到的设计模式\t169 什么是MVC\t170 Objective-C和Swift在单例模式的创建上有什么区别\t171 什么是装饰模式(Decorator)\t171 什么是观察者模式(Observer)\t172 什么是备忘录模式(Memento)\t174 比较苹果官方的MVC架构的优点和缺点\t176 MVC架构的代码实战\t177 MVCS中的S为什么要单独拆分出来\t179 MVP和MVC有什么异同\t179 MVVM中的ViewModel的作用是什么\t180 比较MVC、MVP和MVVM这三种架构\t181 VIPER之间的各个组件是如何交互的\t182 什么是OOP?它在iOS开发中有哪些优点\t184 OOP在iOS开发中有哪些缺点\t185 POP相比OOP有哪些优势\t187 要给一个UIButton增加一个点击后抖动的效果,该怎样实现\t189 POP的代码实战\t190 试用Swift实现二分搜索算法\t192 一个App崩溃了,可能是什么原因造成的\t195 在模拟机上完成所有测试之后,就不需要在真机上再进行测试了吗\t196 为什么在单元测试中引入代码模块要用@testable关键词\t197 单元测试的代码实战\t197 说一说iOS中的性能测试(performance test)\t199 说一说iOS开发中的UI测试\t200 如何检查测试覆盖率\t200 什么是iOS中的App ID\t201 什么是iOS中的Code Signing\t202 什么是iOS中的App Thinning\t202 向App Store提交App时有哪些原因可能被拒\t203 |