iOS面试之道

iOS面试之道
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者:
2018-07
版次: 1
ISBN: 9787121342622
定价: 59.00
装帧: 其他
开本: 16开
纸张: 胶版纸
页数: 220页
字数: 242千字
47人买过
  • 《iOS面试之道》是作者将多年的工作经验和积累,结合具体面试内容总结而成的。
      《iOS面试之道》共分为3部分。第1部分为面试准备,详细介绍求职中遇到的基本问题,作者根据其多年的经验,在面试流程、简历投递、复习准备方面给出了完善的参考意见和建议。第2部分为算法知识。算法几乎是各种水平的程序员都要面对的考查内容。该部分采用Swift语言重新审视了多种数据结构和算法原理,可以说是为iOS开发者量身打造的算法解答。第3部分为iOS专业问答,分为语言工具、系统框架和经验之谈,采用问答的形式来详细介绍。
      如果你是一名iOS开发者,并且正准备跳槽,那么本书是一本不错的复习参考书;如果你没有面试计划,那么本书也可以帮助你对iOS知识进行提纲挈领的整理;如果你是面试官,那么希望本书能为你提供考查应聘者的依据和源泉;对于具有其他背景的软件工程师,若想一窥iOS世界的知识框架,本书也是不错的切入点。 故胤道长

    卡内基梅隆大学硕士毕业,常年居住于美国的iOS开发者;先后就职于Uber、Amazon

    GitHub全美前20名的Swift开源作者

     

    唐巧

    资深 iOS 开发者

    拥有超过10万个微信公众号和微博粉丝,一直努力分享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

    题目目录

    给出一个字符串,要求将其按照单词顺序进行反转33

    类(class)和结构体(struct)有什么区别81

    Swift是面向对象还是函数式的编程语言83

    在Swift中,什么是可选型(Optional)84

    在Swift中,什么是泛型(Generics)84

    说明并比较关键词:Open,Public,Internal,File-private和Private85

    说明并比较关键词:Strong,Weak和Unowned86

    在Swift中,如何理解copy-on-write87

    什么是属性观察(Property Observer)87

    在结构体中如何修改成员变量的方法88

    如何用Swift实现或(II)操作89

    实现一个函数:输入是任意一个整数,输出为输入的整数 289

    实现一个函数:求0~100(包括0和100)中为偶数并且恰好是其他数字平方的

    数字90

    什么是ARC91

    什么情况下会出现循环引用92

    说明并比较关键词:strong,weak,assign和copy93

    说明并比较关键词:atomatic和nonatomic94

    atomic是百分之百线程安全的吗94

    说明并比较关键词:_ _weak和_ _block95

    什么是block?它和代理的区别是什么95

    属性声明代码风格考查96

    架构解耦代码考查97

    内存管理语法考查98

    多线程语法考查99

    以scheduledTimerWithTimeInterval的方式触发的timer,在滑动页面上的列表时,

    timer会暂停,为什么?该如何解决100

    Swift为什么将String,Array和Dictionary设计成值类型101

    如何用Swift将协议(protocol)中的部分方法设计成可选(optional)102

    协议的代码实战103

    在Swift和Objective-C的混合编程项目中,如何在Swift文件中调用

    Objective-C文件中定义的方法?如何在Objective-C文件中调用Swift

    文件中定义的方法104

    比较Swift和Objective-C中的初始化方法(init)有什么异同105

    比较Swift和Objective-C中的协议(protocol)有什么异同105

    谈谈对Objective-C和Swift动态特性的理解105

    语言特性的代码实战107

    message send如果找不到对象,则会如何进行后续处理108

    什么是method swizzling108

    Swift和Objective-C的自省(Introspection)有什么不同109

    能否通过Category给已有的类添加属性(property)110

    LLDB中p和po有什么区别112

    Xcode中的Buildtime issues和Runtime issues指什么113

    App启动时间过长,该怎样优化114

    如何用Xcode检测代码中的循环引用115

    怎样解决EXC_BAD_ACCESS116

    如何在Playground中执行异步操作117

    在playground中实现一个10行的列表,每行随机显示一个0~100的整数118

    要在UIView上定义一个Label有哪几种方式119

    storyboard/xib和纯代码构建UI相比,有哪些优点和缺点120

    Auto Layout和Frame在UI布局和渲染上有什么区别121

    UIView和CALayer有什么区别121

    说明并比较关键词:frame,bounds和center122

    说明并比较方法:layoutIfNeeded,layoutSubviews和setNeedsLayout123

    说明并比较关键词:Safe Area,SafeAreaLayoutGuide和SafeAreaInsets123

    在iOS中实现动画的方式有几种124

    控制屏幕上的圆形小球,使其水平向右滑动200个point125

    在iOS开发中,如何保证App的UI在iPhone、iPad及iPad分屏情况下

    依然适用127

    如何用drag & drop实现图片拖动功能129

    说明并比较关键词:contentView,contentInset,contentSize和contentOffset131

    说明UITableViewCell的重用机制133

    说明并比较协议:UITableViewDataSource和UITableViewDelegate133

    请说明并比较协议:UICollectionViewDataSource,UICollection- ViewDelegate

    和UICollectionViewDelegateFlowLayout133

    实现一个10行的列表,每行随机显示一个0~100的整数。用户可以删除、

    移动任何一行,下拉列表中的数字重新刷新134

    UICollectionView中的Supplementary Views和Decoration Views分别指什么137

    如果一个列表视图滑动很慢,那么该怎样优化138

    说一说实现预加载的方法139

    如何用UICollectionView实现瀑布流界面140

    说一说HTTP中GET与POST的区别142

    说一说Session和Cookie的概念142

    说明并比较网络通信协议:Ajax Polling,Long Polling,WebSockets和

    Sever-Sent Event143

    在一个HTTPS连接的网站中,输入账号和密码并单击登录按钮后,

    到服务器返回这个请求前,这期间经历了什么143

    说明并比较类:URLSessionTask,URLSessionDataTask,

    URLSessionUploadTask和URLSessionDownloadTask144

    什么是Completion Handler145

    设计一个方法,在给定API的网址的条件下,返回用户数据146

    在iOS开发中,本地消息通知的流程是怎样的148

    说一说在iOS开发中,远程消息推送的原理149

    在iOS开发中,如何实现编码和解码150

    说一说在iOS开发中数据持久化的方案151

    在iOS开发中,对于并发操作有哪3种方式153

    比较关键词:Serial,Concurrent,Sync和Async153

    串行队列的代码实战154

    并行队列的代码实战156

    举例说明iOS并发编程中的三大问题157

    竞态条件的代码实战160

    试比较GCD中的方法:dispatch_async,dispatch_after,dispatch_ once

    和dispatch_group162

    GCD中全局(global)队列有哪几种优先级164

    试比较Operations中的关键词:Operation,BlockOperation和OperationQueue164

    如何在OperationQueue中取消某个Operation166

    在实际开发中,主线程和其他线程有哪些使用场景168

    说说你平常开发中用到的设计模式169

    什么是MVC170

    Objective-C和Swift在单例模式的创建上有什么区别171

    什么是装饰模式(Decorator)171

    什么是观察者模式(Observer)172

    什么是备忘录模式(Memento)174

    比较苹果官方的MVC架构的优点和缺点176

    MVC架构的代码实战177

    MVCS中的S为什么要单独拆分出来179

    MVP和MVC有什么异同179

    MVVM中的ViewModel的作用是什么180

    比较MVC、MVP和MVVM这三种架构181

    VIPER之间的各个组件是如何交互的182

    什么是OOP?它在iOS开发中有哪些优点184

    OOP在iOS开发中有哪些缺点185

    POP相比OOP有哪些优势187

    要给一个UIButton增加一个点击后抖动的效果,该怎样实现189

    POP的代码实战190

    试用Swift实现二分搜索算法192

    一个App崩溃了,可能是什么原因造成的195

    在模拟机上完成所有测试之后,就不需要在真机上再进行测试了吗196

    为什么在单元测试中引入代码模块要用@testable关键词197

    单元测试的代码实战197

    说一说iOS中的性能测试(performance test)199

    说一说iOS开发中的UI测试200

    如何检查测试覆盖率200

    什么是iOS中的App ID201

    什么是iOS中的Code Signing202

    什么是iOS中的App Thinning202

    向App Store提交App时有哪些原因可能被拒203
  • 内容简介:
    《iOS面试之道》是作者将多年的工作经验和积累,结合具体面试内容总结而成的。
      《iOS面试之道》共分为3部分。第1部分为面试准备,详细介绍求职中遇到的基本问题,作者根据其多年的经验,在面试流程、简历投递、复习准备方面给出了完善的参考意见和建议。第2部分为算法知识。算法几乎是各种水平的程序员都要面对的考查内容。该部分采用Swift语言重新审视了多种数据结构和算法原理,可以说是为iOS开发者量身打造的算法解答。第3部分为iOS专业问答,分为语言工具、系统框架和经验之谈,采用问答的形式来详细介绍。
      如果你是一名iOS开发者,并且正准备跳槽,那么本书是一本不错的复习参考书;如果你没有面试计划,那么本书也可以帮助你对iOS知识进行提纲挈领的整理;如果你是面试官,那么希望本书能为你提供考查应聘者的依据和源泉;对于具有其他背景的软件工程师,若想一窥iOS世界的知识框架,本书也是不错的切入点。
  • 作者简介:
    故胤道长

    卡内基梅隆大学硕士毕业,常年居住于美国的iOS开发者;先后就职于Uber、Amazon

    GitHub全美前20名的Swift开源作者

     

    唐巧

    资深 iOS 开发者

    拥有超过10万个微信公众号和微博粉丝,一直努力分享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

    题目目录

    给出一个字符串,要求将其按照单词顺序进行反转33

    类(class)和结构体(struct)有什么区别81

    Swift是面向对象还是函数式的编程语言83

    在Swift中,什么是可选型(Optional)84

    在Swift中,什么是泛型(Generics)84

    说明并比较关键词:Open,Public,Internal,File-private和Private85

    说明并比较关键词:Strong,Weak和Unowned86

    在Swift中,如何理解copy-on-write87

    什么是属性观察(Property Observer)87

    在结构体中如何修改成员变量的方法88

    如何用Swift实现或(II)操作89

    实现一个函数:输入是任意一个整数,输出为输入的整数 289

    实现一个函数:求0~100(包括0和100)中为偶数并且恰好是其他数字平方的

    数字90

    什么是ARC91

    什么情况下会出现循环引用92

    说明并比较关键词:strong,weak,assign和copy93

    说明并比较关键词:atomatic和nonatomic94

    atomic是百分之百线程安全的吗94

    说明并比较关键词:_ _weak和_ _block95

    什么是block?它和代理的区别是什么95

    属性声明代码风格考查96

    架构解耦代码考查97

    内存管理语法考查98

    多线程语法考查99

    以scheduledTimerWithTimeInterval的方式触发的timer,在滑动页面上的列表时,

    timer会暂停,为什么?该如何解决100

    Swift为什么将String,Array和Dictionary设计成值类型101

    如何用Swift将协议(protocol)中的部分方法设计成可选(optional)102

    协议的代码实战103

    在Swift和Objective-C的混合编程项目中,如何在Swift文件中调用

    Objective-C文件中定义的方法?如何在Objective-C文件中调用Swift

    文件中定义的方法104

    比较Swift和Objective-C中的初始化方法(init)有什么异同105

    比较Swift和Objective-C中的协议(protocol)有什么异同105

    谈谈对Objective-C和Swift动态特性的理解105

    语言特性的代码实战107

    message send如果找不到对象,则会如何进行后续处理108

    什么是method swizzling108

    Swift和Objective-C的自省(Introspection)有什么不同109

    能否通过Category给已有的类添加属性(property)110

    LLDB中p和po有什么区别112

    Xcode中的Buildtime issues和Runtime issues指什么113

    App启动时间过长,该怎样优化114

    如何用Xcode检测代码中的循环引用115

    怎样解决EXC_BAD_ACCESS116

    如何在Playground中执行异步操作117

    在playground中实现一个10行的列表,每行随机显示一个0~100的整数118

    要在UIView上定义一个Label有哪几种方式119

    storyboard/xib和纯代码构建UI相比,有哪些优点和缺点120

    Auto Layout和Frame在UI布局和渲染上有什么区别121

    UIView和CALayer有什么区别121

    说明并比较关键词:frame,bounds和center122

    说明并比较方法:layoutIfNeeded,layoutSubviews和setNeedsLayout123

    说明并比较关键词:Safe Area,SafeAreaLayoutGuide和SafeAreaInsets123

    在iOS中实现动画的方式有几种124

    控制屏幕上的圆形小球,使其水平向右滑动200个point125

    在iOS开发中,如何保证App的UI在iPhone、iPad及iPad分屏情况下

    依然适用127

    如何用drag & drop实现图片拖动功能129

    说明并比较关键词:contentView,contentInset,contentSize和contentOffset131

    说明UITableViewCell的重用机制133

    说明并比较协议:UITableViewDataSource和UITableViewDelegate133

    请说明并比较协议:UICollectionViewDataSource,UICollection- ViewDelegate

    和UICollectionViewDelegateFlowLayout133

    实现一个10行的列表,每行随机显示一个0~100的整数。用户可以删除、

    移动任何一行,下拉列表中的数字重新刷新134

    UICollectionView中的Supplementary Views和Decoration Views分别指什么137

    如果一个列表视图滑动很慢,那么该怎样优化138

    说一说实现预加载的方法139

    如何用UICollectionView实现瀑布流界面140

    说一说HTTP中GET与POST的区别142

    说一说Session和Cookie的概念142

    说明并比较网络通信协议:Ajax Polling,Long Polling,WebSockets和

    Sever-Sent Event143

    在一个HTTPS连接的网站中,输入账号和密码并单击登录按钮后,

    到服务器返回这个请求前,这期间经历了什么143

    说明并比较类:URLSessionTask,URLSessionDataTask,

    URLSessionUploadTask和URLSessionDownloadTask144

    什么是Completion Handler145

    设计一个方法,在给定API的网址的条件下,返回用户数据146

    在iOS开发中,本地消息通知的流程是怎样的148

    说一说在iOS开发中,远程消息推送的原理149

    在iOS开发中,如何实现编码和解码150

    说一说在iOS开发中数据持久化的方案151

    在iOS开发中,对于并发操作有哪3种方式153

    比较关键词:Serial,Concurrent,Sync和Async153

    串行队列的代码实战154

    并行队列的代码实战156

    举例说明iOS并发编程中的三大问题157

    竞态条件的代码实战160

    试比较GCD中的方法:dispatch_async,dispatch_after,dispatch_ once

    和dispatch_group162

    GCD中全局(global)队列有哪几种优先级164

    试比较Operations中的关键词:Operation,BlockOperation和OperationQueue164

    如何在OperationQueue中取消某个Operation166

    在实际开发中,主线程和其他线程有哪些使用场景168

    说说你平常开发中用到的设计模式169

    什么是MVC170

    Objective-C和Swift在单例模式的创建上有什么区别171

    什么是装饰模式(Decorator)171

    什么是观察者模式(Observer)172

    什么是备忘录模式(Memento)174

    比较苹果官方的MVC架构的优点和缺点176

    MVC架构的代码实战177

    MVCS中的S为什么要单独拆分出来179

    MVP和MVC有什么异同179

    MVVM中的ViewModel的作用是什么180

    比较MVC、MVP和MVVM这三种架构181

    VIPER之间的各个组件是如何交互的182

    什么是OOP?它在iOS开发中有哪些优点184

    OOP在iOS开发中有哪些缺点185

    POP相比OOP有哪些优势187

    要给一个UIButton增加一个点击后抖动的效果,该怎样实现189

    POP的代码实战190

    试用Swift实现二分搜索算法192

    一个App崩溃了,可能是什么原因造成的195

    在模拟机上完成所有测试之后,就不需要在真机上再进行测试了吗196

    为什么在单元测试中引入代码模块要用@testable关键词197

    单元测试的代码实战197

    说一说iOS中的性能测试(performance test)199

    说一说iOS开发中的UI测试200

    如何检查测试覆盖率200

    什么是iOS中的App ID201

    什么是iOS中的Code Signing202

    什么是iOS中的App Thinning202

    向App Store提交App时有哪些原因可能被拒203
查看详情
相关图书 / 更多
iOS面试之道
iOS黑客攻防秘籍 第2版
陈德
iOS面试之道
iOS编程(第6版)
[美]Aaron Hillegass 著;王凤全 译;[美]Christian Keur
iOS面试之道
iOS开发基础教程(Swift版)(第2版)
陈志峰;田英;翟高粤
iOS面试之道
iOS开发案例教程(swift版)
孙志敏 田英
iOS面试之道
iOS应用开发教程(微课视频版)
罗良夫
iOS面试之道
iOS全埋点解决方案
王灼洲 著
iOS面试之道
iOS 14开发指南
管蕾
iOS面试之道
iOS应用逆向与安全之道
罗巍 著
iOS面试之道
iOS项目开发实战(高等职业教育移动互联应用技术专业教材)
赵善龙 、刘俊驰 主编
iOS面试之道
iOS开发基础入门与实战
张运生 著;郭敏强、蔡铁、郭敏强、蔡铁、张运生 编
iOS面试之道
iOS面试一战到底
张益珲 著
iOS面试之道
iOS程序员面试笔试真题库
蒋信厚 汪小发 楚秦