基本信息
书名:iOS面试之道
定价:59.00元
作者:故胤道长 唐巧
出版社:电子工业出版社
出版日期:2018-07-01
ISBN:9787121342622
字数:242000
页码:220
版次:1
装帧:平装
开本:16开
商品重量:0.4kg
编辑推荐
适读人群 :如果你是一名iOS开发者,并且正准备跳槽,那么本书是一本不错的复习参考书;如果你没有面试计划,那么本书也可以帮助你对iOS知识进行提纲挈领的整理;如果你是面试官,那么希望本书能为你提供考查应聘者的依据和源泉;对于具有其他背景的软件工程师,若想一窥iOS世界的知识框架,本书也是不错的切入点。
117道以上IT大厂面试题
n
详解iOS大厂技术人员所关注和重视的技术点
n
不仅是面试指南,也是构建iOS知识体系的基本框架
n
在一问一答间,融入作者对问题本质的深刻理解和多年工作经验的沉淀
n
硅谷iOS工程师、资深iOS开发者为你详解硅谷、Google、Facebook、BAT等知名IT大厂面试题!
n
内容提要
《iOS面试之道》是作者将多年的工作经验和积累,结合具体面试内容总结而成的。
n
n
《iOS面试之道》共分为3部分。部分为面试准备,详细介绍求职中遇到的基本问题,作者根据其多年的经验,在面试流程、简历投递、复习准备方面给出了完善的参考意见和建议。第2部分为算法知识。算法几乎是各种水平的程序员都要面对的考查内容。该部分采用Swift语言重新审视了多种数据结构和算法原理,可以说是为iOS开发者量身打造的算法解答。第3部分为iOS专业问答,分为语言工具、系统框架和经验之谈,采用问答的形式来详细介绍。
n
n
如果你是一名iOS开发者,并且正准备跳槽,那么本书是一本不错的复习参考书;如果你没有面试计划,那么本书也可以帮助你对iOS知识进行提纲挈领的整理;如果你是面试官,那么希望本书能为你提供考查应聘者的依据和源泉;对于具有其他背景的软件工程师,若想一窥iOS世界的知识框架,本书也是不错的切入点。
目录
作者介绍
故胤道长
卡内基梅隆大学硕士毕业,常年居住于美国的iOS开发者;先后就职于Uber;GitHub全美前20名的Swift开源作者
唐巧
资深 iOS 开发者;拥有超过10万个微信公众号和微博粉丝,一直努力分享iOS相关知识;
著有《iOS开发进阶》 一书;现任猿辅导公司,小猿搜题产品技术负责人
n
文摘
《iOS面试之道》:
排序算法是算法中一个比较常见的知识点,主要功能是对一个乱序数组进行排序,为了达到更少的计算量,对一些排序方法进行了命名,其中比较出名的8大排序算法是: 冒泡排序,选择排序,希尔排序,快速排序,归并排序,堆排序,基数排序。
如果不涉及架构方面,以及多重计算优化的话,算法其实并不常用,当然在很多比较大的公司的面试题中,算法是一个比较重要的考察方面,并且考察的算法主要就是排序算法和二叉树。而在面试排序算法中,主要考察的排序并不是的8大算法,主要分为三个层次: 手写冒泡排序; 了解冒泡、选择、快速排序,并以伪代码形式写出; 除了前面两个层次,需要对剩下的排序算法有了解,并可以简单说出原理。这是面试题中关于考算法的三个等级,一般的公司不强求算法的话都只要求掌握个就行了,而大一些的公司,例如BAT,需要掌握到第二个层次,而第三个层次基本上没有公司会考到,当然不排除有些主攻算法的面试官会问到,所以这里对所有的排序算法进行分析讲解,希望读者们在以后的面试算法中能够轻松应付。
由于ObjectiveC的数组和字典不能存储值类型、结构体,也就是包括int、NSInteger、BOOL、CGRect类型都不能直接存储,需要转换成NSNumber或者NSValue来存储。所以为了展示排序算法,我们采用Swift语言来实现,首先Swift相比于ObjectiveC来说不区分可变和不可变数组,另外,Swift的数组和字典属于值类型,并且可以存储基本数据类型,甚至是nil也可以。。事实上,我们可以将partition放在快速排序的函数体内,成为其私有的函数,从而体现完整性,不过这里暂且只讨论算法,所以不做考虑。
可以从代码中看出,partition函数是将数组的某一区域进行一个简单的排序划分,获取到划分的位置,根据其位置再将数组划分为两个区域,然后分别递归调用快速排序函数。
接下来根据数组以及代码详细分析一下排序过程。
我们传递的数组是[2, 1, 5, 9, 4, 0, 6, 3, 8, 7],并且传递了数组的一个区域,表示在该区域里执行。进入quickSort函数,由于数组个数至少是大于1的(个数为0或者为1没有必要排序),所以执行partition函数,partition函数是快速排序的要点所在,接下来,我们调用partition函数传递的参数,仍然是该数组以及其整个范围。鉴于Swift的参数默认为let不可修改,所以可以使用同arr参数类似的inout修饰,但这将使整个函数显得过于冗杂,因此在partition内创建同名的局部变量left、right,并且记录区域的个值pivot为arr[left],我们称其为比较数,然后便开始while循环了。
序言