《iOS程序员面试笔试宝典》是一本非常实用的书籍,特别适合iOS程序员准备面试和笔试。作者从iOS程序员的角度出发,针对当前各大IT企业面试笔试中的特性与侧重点进行了详细的整理和总结。书中精心挑选了近3年多家典型IT企业的iOS面试笔试真题,涉及的业务领域包括系统软件、搜索引擎、电子商务、手机软件、安全关键软件等。这些真题具有非常高的代表性和参考性,能够帮助读者更好地理解和掌握iOS程序员面试的要点。对于准备找工作的iOS程序员来说,这本书可以成为他们的宝典,提前了解面试题型和出题思路,有助于他们在面试中脱颖而出。如果你是一名iOS程序员,正在寻找一本面试笔试方面的参考书籍,那么《iOS程序员面试笔试宝典》绝对是一个不错的选择。
iOS程序员面试笔试宝典 电子书封面
读者评价
还没读完,相对还行吧,iOS部分讲的挺全挺透彻,相比之前看的面试之道的iOS部分讲的确实有点水。不过也发现部分小问题,有的点想深入还是要去查别的,希望以后能及时更新完善。
非常好的一本iOS面试笔试书籍,题目覆盖广,解析精辟,性价比很高,非常推荐
自己最近都在看这本书,里面对IOS面试中的内容讲的非常详细,如果你准备要找IOS的开发岗位,那么这本书对你绝对有很大的帮助,让你轻轻松松找到满意的工作。极力推荐。
这是我见过的最值得推荐的iOS面试书籍,如果需要找工作,一本它就够了。 本书是一本适合计算机相关专业毕业生面试笔试的求职用书,同时也 适合期望在计算机软、硬件行业大显身手的计算机爱好者阅读。本书起于 iOS 面试笔试,但收获的不止面试笔试,还有更多的 iOS 实用操作技能。 书中附有大量面试笔试真题,让读者能够最大限度地提升应试技能。
内容介绍
本书针对当前各大IT企业面试笔试中的特性与侧重点,精心挑选了近3年多家典型IT企业的iOS面试笔试真题,由于这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机软件、安全关键软件等领域,所以面试笔试真题非常具有代表性与参考性。同时,本书对这些题目进行了合理的划分与归类,并进行了庖丁解牛式的分析与讲解,针对试题中涉及的部分重点、难点问题,本书都做了适当地扩展与延伸,力求对知识点的讲解清晰而不紊乱,全面而不啰唆。不仅如此,本书除了对iOS的基础语言知识进行深度剖析以外,还针对数据库、设计模式等相关知识的面试笔试做了非常详细的介绍。读者学习本书能够获取到求职的知识,更有针对性地进行求职准备,终能够收获一份满意的工作。
目录
- 前言
- 面试笔试经验技巧篇
- 经验技巧1 如何巧妙地回答面试官的问题2
- 经验技巧2 如何回答技术性问题3
- 经验技巧3 如何回答非技术性问题5
- 经验技巧4 如何回答快速估算类问题5
- 经验技巧5 如何回答算法设计问题6
- 经验技巧6 如何回答系统设计题9
- 经验技巧7 如何解决求职中的时间冲突问题11
- 经验技巧8 如果面试问题曾经遇见过,是否要告知面试官12
- 经验技巧9 被企业拒绝后是否可以再申请12
- 经验技巧10 如何应对自己不会回答的问题13
- 经验技巧11 如何应对面试官的“激将法”语言13
- 经验技巧12 如何处理与面试官持不同观点这个问题14
- 经验技巧13 什么是职场暗语15
- 经验技巧14 名企iOS工程师行业访谈录18
- 经验技巧15 iOS开发的前景如何20
- 经验技巧16 如何选择iOS开发语言20
- 经验技巧17 React Native 和Weex重要吗21
- 经验技巧18 企业对iOS开发者的要求有哪些22
- 经验技巧19 iOS开发招聘有哪些要求24
- 经验技巧20 iOS技术岗位面试精选27
- 面试笔试技术攻克篇
- 第1章 iOS开发基础概念35
- 1.1 概念35
- 1.1.1 什么是“应用瘦身”35
- 1.1.2 什么是Cocoa和Cocoa Touch36
- 1.1.3 什么是谓词36
- 1.1.4 什么是响应者链38
- 1.1.5 什么是“懒加载”39
- 1.1.6 类工厂方法是什么40
- 1.1.7 App ID和Bundle ID有什么不同40
- 1.1.8 什么是糖衣语法40
- 1.2 其他43
- 1.2.1 什么是SpriteKit和SceneKit43
- 1.2.2 iOS应用的生命周期回调方法主要有哪些43
- 1.2.3 iOS应用有哪几种不同状态?分别表示什么含义44
- 1.2.4 UIButton到NSObject之间的继承关系是怎样的45
- 1.2.5 Git和SVN有什么异同45
- 第2章 Objective-C语言基础47
- 2.1 Objective-C语言基础特性47
- 2.1.1 Objective-C的优缺点有哪些47
- 2.1.2 相对于Objective-C而言,Swift有什么新特性48
- 2.1.3 Foundation对象与Core Foundation对象有什么区别52
- 2.1.4 Objective-C中的类方法和实例方法有什么本质区别和联系53
- 2.1.5 子类初始化时为什么要调用self = [super init]54
- 2.1.6 #import与#include以及#import<>与#import" "各有什么区别54
- 2.1.7 Objective-C中@class代表什么54
- 2.1.8 Objective-C中有二维数组吗?如何实现55
- 2.1.9 在Objective-C的数组或字典中,添加nil对象会有什么问题55
- 2.1.10 Objective-C中的可变和不可变类型是什么56
- 2.2 数据类型57
- 2.2.1 在Objective-C中,常量有哪几种类型57
- 2.2.2 Objective-C中数据类型的限定词有哪些58
- 2.2.3 Objective-C中的NSInteger类型和C语言中的int类型有什么区别59
- 2.2.4 NSNumber与NSInteger有什么区别59
- 2.3 运算符和表达式60
- 2.3.1 在Objective-C中,前置运算和后置运算有什么区别60
- 2.3.2 整型值和浮点值在赋值操作中如何相互转换61
- 第3章 Objective-C语言的高级特性63
- 3.1 Objective-C中的属性63
- 3.2 Objective-C语言的多态性72
- 3.2.1 什么叫多态72
- 3.2.2 重载、重写和隐藏的区别是什么74
- 3.2.3 Objective-C和Swift中有重载吗74
- 3.3 Objective-C语言的动态性75
- 3.3.1 什么是编译时与运行时79
- 3.3.2 所谓的Objective-C是动态运行时语言是什么意思79
- 3.3.3 Objective-C中的id类型指的是什么?id、nil代表什么82
- 3.3.4 一般的方法method和Objective-C中的选择器selector有什么区别83
- 3.3.5 什么时候会报unrecognized selector错误83
- 3.3.6 什么是目标-动作机制83
- 3.3.7 在runtime中类与对象如何表示84
- 3.3.8 如何打印一个类中所有的实例变量85
- 3.3.9 如何使用runtime动态添加一个类87
- 3.3.10 如何在Category中增加属性(关联对象)88
- 3.3.11 如何理解消息传递机制89
- 3.3.12 如何理解消息转发机制91
- 3.3.13 isKindOfClass和isMemberOfClass有什么区别与联系94
- 3.3.14 Objective-C有私有方法吗?有私有变量吗94
- 3.4 Objective-C中的类别与扩展机制96
- 3.4.1 类别与其他特性(类扩展和继承)有什么区别97
- 3.4.2 Objective-C中类别特性的作用及其局限性是什么97
- 3.4.3 类别和类扩展如何使用98
- 3.4.4 为什么类别只能添加扩展方法而不能添加属性变量101
- 3.5 Method Swizzling魔法102
- 3.5.1 Method Swizzling的应用场景有哪些102
- 3.5.2 如何使用runtime进行方法交换105
- 3.6 其他问题107
- 3.6.1 C和Objective-C如何混用107
- 3.6.2 Swift和Objective-C如何互调107
- 3.6.3 Objective-C对象可以被copy的条件是什么109
- 3.6.4 Objective-C等同性中的字符串相等如何判断110
- 3.6.5 一个Objective-C对象如何进行内存布局(考虑有父类的情况)111
- 第4章 Cocoa Touch框架相关112
- 4.1 UITableView112
- 4.1.1 UITableViewCell的复用原理是怎么样的112
- 4.1.2 能否在一个视图控制器中嵌入两个tableView控制器114
- 4.1.3 一个tableView是否可以关联两个不同的datasource数据源115
- 4.1.4 如何对UITableView的滚动加载进行优化,防止卡顿116
- 4.2 UI视图117
- 4.2.1 viewDidLoad和viewDidAppear的区别是什么117
- 4.2.2 frame和bounds有什么区别1
1、自动释放池是什么,如何工作? 当您向一个对象发送一个autorelease消息时,Cocoa就会将该对象的一个引用放入到最新的自动释放池。它仍然是个正当的对象,因此自动释放池定义的作用域内的其它对象可以向它发送消息。当程序执行到作用域结束的位置时,自动释放池就会被释放,池中的所有对象也就被释放。 2、说一说static 关键字 (1)函数体内 static 变量的作用范围为该函数体,不同于 auto 变量,该变量的内存只被分配一次, 因此其值在下次调用时仍维持上次的值; (2)在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; (3)在模块内的 static 函数只可被这一模块内的其它函数调用,这个函数的使用范围被限制在声明它的模块内; (4)在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝; (5)在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因而只能访问类的static 成员变量。
试,难还是不难?取决于面试者的底蕴(气场+技能)、心态和认知及沟通技巧。面试其实可以理解为一场聊天和谈判,在这过程中有心理、思想上的碰撞和博弈。其实你只需要搞清楚一个逻辑:“面试官为什么会这样问?他希望听到什么答案?”然后针对性的准备和回答就行了,无他。 “你的优势是什么?”多年前我觉得这个问题很无聊,现在我经常这么问面试者,因为我真的想知道他的优势是什么,能给公司带来什么。最终能和面试官聊的开心愉快投缘的叫面霸。反之叫面瘫。 iOS程序员这样面试,当场拿到offer的几率是80%? 我带过的学生里找工作时有个有趣的现象,经常是懂沟通的人先找到工作,而不是技术最牛的那个。 面霸是可以练成的。我在这篇文章里尝试从两个方面对面试进行梳理,一个是流程,一个是细节。 流程可以让我们以上帝视角看问题,细节呢?细节决定成败。在面试这件事上,细节做的越细越好。 二、面试流程 面试就像一场战役,要打赢战役应该做如下功课,才能做到胸有成竹。 1. 面试前 战前需要充分准备,要研究对手,所谓知己知彼,百战不殆。要准备好足够的弹药。 2. 面试中 战斗时要保持正念、精神焕发,昂首挺胸,眼神坚定、谦虚谨慎。 3. 面试后 因为我们可能还要打多场战役,所以针对每次战役都要及时进行反思,总结经验教训,用现在流行的说法叫“复盘”。这样才会有进步,下次作战也会更有自信和把握。