万本电子书0元读

万本电子书0元读

顶部广告

iOS程序员面试笔试宝典电子书

在这里,有面试笔试常见技巧的提炼与总结; 在这里,有面试笔试高频iOS知识的整理与剖析; 在这里,有面试笔试历年iOS真题的解答与拓展。

售       价:¥

纸质售价:¥61.40购买纸书

92人正在读 | 0人评论 6.2

作       者:猿媛之家

出  版  社:机械工业出版社

出版时间:2018-10-09

字       数:20.5万

所属分类:

温馨提示:此类商品不支持退换货,不支持下载打印

  • 读书简介
  • 目录
  • 累计评论(0条)
  • 读书简介
  • 目录
  • 累计评论(0条)
本书针对当前各大IT企业面试笔试中的特性与侧重,精心挑选了近3年多家典型IT企业的iOS面试笔试真题,由于这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机软件、安全关键软件等领域,所以面试笔试真题非常具有代表性与参考性。同时,本书对这些题目行了合理的划分与归类,并行了庖丁解牛式的分析与讲解,针对试题中涉及的部分重、难问题,本书都做了适当地扩展与延伸,力求对知识的讲解清晰而不紊乱,全面而不啰唆。不仅如此,本书除了对iOS的基础语言知识行深度剖析以外,还针对数据库、设计模式等相关知识的面试笔试做了非常详细的介绍。读者学习本书能够获取到求职的知识,更有针对性地行求职准备,终能够收获一份满意的工作。 本书针对当前各大IT企业面试笔试中的特性与侧重,精心挑选了近3年多家典型IT企业的iOS面试笔试真题,由于这些企业涉及业务包括系统软件、搜索引擎、电子商务、手机软件、安全关键软件等领域,所以面试笔试真题非常具有代表性与参考性。同时,本书对这些题目行了合理的划分与归类,并行了庖丁解牛式的分析与讲解,针对试题中涉及的部分重、难问题,本书都做了适当地扩展与延伸,力求对知识的讲解清晰而不紊乱,全面而不啰唆。不仅如此,本书除了对iOS的基础语言知识行深度剖析以外,还针对数据库、设计模式等相关知识的面试笔试做了非常详细的介绍。读者学习本书能够获取到求职的知识,更有针对性地行求职准备,终能够收获一份满意的工作。
【推荐语】
在这里,有面试笔试常见技巧的提炼与总结; 在这里,有面试笔试高频iOS知识的整理与剖析; 在这里,有面试笔试历年iOS真题的解答与拓展。
目录展开

作者简介

版权页

前言

面试笔试经验技巧篇

经验技巧1 如何巧妙地回答面试官的问题

经验技巧2 如何回答技术性问题

经验技巧3 如何回答非技术性问题

经验技巧4 如何回答快速估算类问题

经验技巧5 如何回答算法设计问题

经验技巧6 如何回答系统设计题

经验技巧7 如何解决求职中的时间冲突问题

经验技巧8 如果面试问题曾经遇见过,是否要告知面试官

经验技巧9 被企业拒绝后是否可以再申请

经验技巧10 如何应对自己不会回答的问题

经验技巧11 如何应对面试官的“激将法”语言

经验技巧12 如何处理与面试官持不同观点这个问题

经验技巧13 什么是职场暗语

经验技巧14 名企iOS工程师行业访谈录

经验技巧15 iOS开发的前景如何

经验技巧16 如何选择iOS开发语言

经验技巧17 React Native 和Weex重要吗

经验技巧18 企业对iOS开发者的要求有哪些

经验技巧19 iOS开发招聘有哪些要求

经验技巧20 iOS技术岗位面试精选

面试笔试技术攻克篇

第1章 iOS开发基础概念

1.1 概念

1.1.1 什么是“应用瘦身”

1.1.2 什么是Cocoa和Cocoa Touch

1.1.3 什么是谓词

1.1.4 什么是响应者链

1.1.5 什么是“懒加载”

1.1.6 类工厂方法是什么

1.1.7 App ID和Bundle ID有什么不同

1.1.8 什么是糖衣语法

1.2 其他

1.2.1 什么是SpriteKit和SceneKit

1.2.2 iOS应用的生命周期回调方法主要有哪些

1.2.3 iOS应用有哪几种不同状态?分别表示什么含义

1.2.4 UIButton到NSObject之间的继承关系是怎样的

1.2.5 Git和SVN有什么异同

第2章 Objective-C语言基础

2.1 Objective-C语言基础特性

2.1.1 Objective-C的优缺点有哪些

2.1.2 相对于Objective-C而言,Swift有什么新特性

2.1.3 Foundation对象与Core Foundation对象有什么区别

2.1.4 Objective-C中的类方法和实例方法有什么本质区别和联系

2.1.5 子类初始化时为什么要调用self=[super init]

2.1.6#import与#include以及#import<>与#import""各有什么区别

2.1.7 Objective-C中@class代表什么

2.1.8 Objective-C中有二维数组吗?如何实现

2.1.9 在Objective-C的数组或字典中,添加nil对象会有什么问题

2.1.10 Objective-C中的可变和不可变类型是什么

2.2 数据类型

2.2.1 在Objective-C中,常量有哪几种类型

2.2.2 Objective-C中数据类型的限定词有哪些

2.2.3 Objective-C中的NSInteger类型和C语言中的int类型有什么区别

2.2.4 NSNumber与NSInteger有什么区别

2.3 运算符和表达式

2.3.1 在Objective-C中,前置运算和后置运算有什么区别

2.3.2 整型值和浮点值在赋值操作中如何相互转换

第3章 Objective-C语言的高级特性

3.1 Objective-C中的属性

3.2 Objective-C语言的多态性

3.2.1 什么叫多态

3.2.2 重载、重写和隐藏的区别是什么

3.2.3 Objective-C和Swift中有重载吗

3.3 Objective-C语言的动态性

3.3.1 什么是编译时与运行时

3.3.2 所谓的Objective-C是动态运行时语言是什么意思

3.3.3 Objective-C中的id类型指的是什么?id、nil代表什么

3.3.4 一般的方法method和Objective-C中的选择器selector有什么区别

3.3.5 什么时候会报unrecognized selector错误

3.3.6 什么是目标-动作机制

3.3.7 在runtime中类与对象如何表示

3.3.8 如何打印一个类中所有的实例变量

3.3.9 如何使用runtime动态添加一个类

3.3.10 如何在Category中增加属性(关联对象)

3.3.11 如何理解消息传递机制

3.3.12 如何理解消息转发机制

3.3.13 isKindOfClass和isMemberOfClass有什么区别与联系

3.3.14 Objective-C有私有方法吗?有私有变量吗

3.4 Objective-C中的类别与扩展机制

3.4.1 类别与其他特性(类扩展和继承)有什么区别

3.4.2 Objective-C中类别特性的作用及其局限性是什么

3.4.3 类别和类扩展如何使用

3.4.4 为什么类别只能添加扩展方法而不能添加属性变量

3.5 Method Swizzling魔法

3.5.1 Method Swizzling的应用场景有哪些

3.5.2 如何使用runtime进行方法交换

3.6 其他问题

3.6.1 C和Objective-C如何混用

3.6.2 Swift和Objective-C如何互调

3.6.3 Objective-C对象可以被copy的条件是什么

3.6.4 Objective-C等同性中的字符串相等如何判断

3.6.5 一个Objective-C对象如何进行内存布局(考虑有父类的情况)

第4章 Cocoa Touch框架相关

4.1 UITableView

4.1.1 UITableViewCell的复用原理是怎么样的

4.1.2 能否在一个视图控制器中嵌入两个tableView控制器

4.1.3 一个tableView是否可以关联两个不同的datasource数据源

4.1.4 如何对UITableView的滚动加载进行优化,防止卡顿

4.2 UI视图

4.2.1 viewDidLoad和viewDidAppear的区别是什么

4.2.2 frame和bounds有什么区别

4.2.3 masksToBounds属性是什么?它有什么作用

4.2.4 tintColor 的作用是什么

4.2.5 UIViewController的生命周期方法有哪些

4.2.6 View和View之间的传值方式有哪些

4.3 其他问题

4.3.1 xib和storyboard相比各自的优缺点是什么

4.3.2 如何进行iOS 6和iOS 7的适配

4.3.3 imageNamed和imageWithContentsOfFile有什么区别

4.3.4 UIDevice如何获取设备信息

4.3.5 iOS中是如何使用自定义字体的

第5章 iOS开发中的对象间通信机制

5.1 iOS中的Protocol和Delegate

5.2 推送和通知

5.2.1 什么是消息推送?和Notification有什么区别

5.2.2 什么是Notification?什么时候用Delegate或Notification

5.2.3 NSNotification是同步还是异步

5.3 Objective-C中的键值编码和键值观察

5.3.1 什么是键值编码KVC?键路径是什么?什么是键值观察KVC

5.3.2 KVC的应用场景有哪些

5.3.3 如何运用KVO进行键值观察

5.3.4 如何使用KVO设置键值观察依赖键

5.3.5 KVO的背后原理是什么

5.3.6 setValue:forKey:方法的底层实现是什么

5.3.7 NSMutableDictionary中setValue和setObject有什么区别

5.3.8 NSNotification、Delegate、Block和KVO的区别是什么

第6章 iOS中的图层与动画

6.1 图层

6.1.1 UIView和CALayer的区别与联系是什么

6.1.2 什么是Layer层对象

6.1.3 如何使用CAShapeLayer绘制图层

6.1.4 iOS中如何实现为UIImageView添加圆角

6.1.5 contentsScale属性有什么作用

6.1.6 如何理解anchorPoint和position的作用

6.1.7 如何理解drawRect:方法

6.1.8 如何使用mask属性实现图层蒙版功能

6.1.9 如何解决masksToBounds离屏渲染带来的性能损耗

6.1.10 QuartzCore和Core Graphics有什么区别

6.2 动画

6.2.1 UIView动画原理是什么?以UIView类的animateWithDuration方法为例

6.2.2 什么是隐式动画和显式动画

6.2.3 隐式动画的实现原理是什么?如何禁用图层的隐式动画

6.2.4 CGAffineTransform和CATransform3D分别有什么作用

6.2.5 CATransition中过渡类型动画有哪几种type

6.2.6 如何使用UIView动画自定义过渡动画

6.2.7 如何理解并使用CAKeyframeAnimation

6.2.8 如何自定义UIViewController之间的转场动画

6.2.9 如何保持视图界面为动画结束时的状态

第7章 iOS中的数据持久化

7.1 沙盒机制

7.2 数据持久化方案

7.2.1 iOS平台做数据的持久化方式有哪些

7.2.2 如何使用NSUserDefault偏好设置保存数据

7.2.3 如何使用NSUserDefault保存自定义对象

7.2.4 什么是序列化或者归档

第8章 iOS中的内存管理

8.1 内存管理

8.1.1 什么是内存泄漏?什么是安全释放

8.1.2 僵尸对象、野指针、空指针分别指什么?它们有什么区别

8.1.3 Objective-C有GC垃圾回收机制吗

8.1.4 在Objective-C中,与alloc语义相反的方法是dealloc还是release

8.2 内存管理机制

8.2.1 当使用block时,什么情况会发生引用循环?如何解决

8.2.2 CAAnimation的delegate是强引用还是弱引用

8.2.3 按照默认法则,哪些关键字生成的对象需要手动释放

8.2.4 Objective-C是如何实现内存管理的

8.2.5 如何实现autorealeasepool

8.2.6 如果一个对象释放前被加到了NotificationCenter中,不在NotificationCenter中,那么remove对象可能会怎样

8.2.7 NSArray和NSMutableArray在Copy和MutableCopy下的内存情况是怎样的

第9章 iOS中的网络和多线程编程

9.1 iOS网络编程与多线程基础

9.1.1 什么是线程?线程与进程有什么区别?为什么要使用多线程

9.1.2 如何理解多线程

9.1.3 如何理解HTTP协议

9.1.4 HTTPS协议与HTTP协议有什么区别与联系

9.1.5 UIKit类要在哪一个应用线程上使用

9.1.6 iOS中有哪几种从其他线程回到主线程的方法

9.1.7 用户下载一个大图片,分成很多份下载,如何使用GCD实现

9.1.8 项目中什么时候选择使用GCD?什么时候选择NSOperation

9.1.9 NSOpertion如何实现线程依赖

9.1.10 什么是线程死锁

9.1.11 dispatch_barrier_(a)sync的作用是什么

9.1.12 如何理解线程安全

9.1.13 如何实现Cocoa中多线程的安全

9.1.14 如何使用NSURLConnection进行网络请求

9.1.15 如何使用NSURLSession进行网络请求

9.2 block与GCD

9.2.1 block有哪几种定义的方式

9.2.2 在ARC环境下,是否需要使用copy关键字来修饰block

9.2.3 在block内如何修改block外部变量

9.2.4 在block中使用self关键字是否一定导致循环引用

9.2.5 GCD中有哪几种队列

9.2.6 如何理解GCD死锁

9.2.7 如何使用GCD实现线程之间的通信

9.2.8 GCD如何实现线程同步

9.2.9 GCD多线程编程中什么时候会创建新线程

9.2.10 iOS中如何触发定时任务或延时任务

9.2.11 如何解决网络请求的依赖关系

第10章 iOS其他话题

10.1 iOS中函数响应式编程及ReactiveCocoa的使用

10.1.1 什么是ReactiveCocoa?如何使用

10.1.2 如何使用RAC防止button短时间内重复单击

10.2 iOS基础设计模式

10.2.1 什么是单例模式

10.2.2 什么是MVC设计模式

10.2.3 如何理解MVVM设计模式

10.3 第三方框架

10.3.1 SDWebImage是什么?加载图片的原理是什么

10.3.2 什么是CocoaPods

10.4 程序调试

10.4.1 BAD_ACCESS在什么情况下出现

10.4.2 如何调试BAD_ACCESS错误

10.4.3 如何查看设备应用的crash日志

10.4.4 如何检测内存泄漏

10.4.5 lldb(gdb)常用的调试命令有哪些

第11章 数据库

11.1 数据库基础知识

11.2 SQL语言的功能有哪些

11.3 内连接与外连接有什么区别

11.4 什么是事务

11.5 什么是存储过程?它与函数有什么区别与联系

11.6 一二三四范式有什么区别

11.7 什么是触发器

11.8 什么是游标

11.9 如果数据库日志满了,那么会出现什么情况

11.10 union和union all有什么区别

11.11 什么是视图

11.12 什么是数据库三级封锁协议

11.13 索引的优缺点有哪些

第12章 操作系统

12.1 进程管理

12.1.1 进程与线程有什么区别

12.1.2 线程同步有哪些机制

12.1.3 内核线程和用户线程有什么区别

12.2 内存管理

12.2.1 内存管理有哪几种方式

12.2.2 什么是虚拟内存

12.2.3 什么是内存碎片?什么是内碎片?什么是外碎片

12.2.4 虚拟地址、逻辑地址、线性地址、物理地址有什么区别

12.2.5 Cache替换算法有哪些

12.3 用户编程接口

12.3.1 库函数调用与系统调用有什么不同

12.3.2 静态链接与动态链接有什么区别

12.3.3 静态链接库与动态链接库有什么区别

12.3.4 用户态和核心态有什么区别

12.3.5 用户栈与内核栈有什么区别

附录

真题1

真题2

真题3

真题1答案

真题2答案

真题3答案

参考文献

作者简介

累计评论(0条) 0个书友正在讨论这本书 发表评论

发表评论

发表评论,分享你的想法吧!

买过这本书的人还买过

读了这本书的人还在读

回顶部