├── README.md └── iOS高级面试简历模板指导.md /README.md: -------------------------------------------------------------------------------- 1 | # iOS开发高级进阶必看: iOS面试题库合集+ 学习资料库 2 | 3 | ## 前言 4 | 5 | ### 谈一谈:为什么整理资料的缘由: 6 | 7 | >**同为iOS开发者:深知大多数初/中级iOS工程师,年限在3-5年左右,对于iOS技术,感觉好像什么都会点,又好像什么都不太精,开发不费劲,但遇到优化问题就懵;有说迫切希望提升开发能力,看了各种各样的学习资料,花了不少时间精力,还是一知半解不系统;还有的说写了不少项目,含金量却不高,一被问到底层就各种哑口无言了。** 8 | > 9 | >**究其根本,是因为知识体系零散,而技术迭代太快跟不上节奏,对底层原理不理解,基础打的不牢固。** 10 | 11 | **如何有效提高自己的 " 硬核底层 " 实力,既不畏惧市场环境的影响,也不害怕职场竞争;就成为当下最关注的问题了!** 12 | 13 | **于是整理了这份《iOS学习资料库》;希望在进阶的道路上,为你提供一点点微薄的帮助!** 14 | 15 | #### 《iOS学习资料库》,请耐心花上几分钟看完; 16 | 17 | *** 18 | ## 资料目录: 19 | 20 | * **1、[《BAT等各个大厂iOS面试真题+答案大全》]()** 【详情:看底部介绍】 21 | 22 | * **2、[《iOS开发全套面试教学视频》]()** 【详情:看底部介绍】 23 | 24 | * **3、[《iOS中高级开发必看的热门书籍 》]()** 【详情:看底部介绍】 25 | 26 | * **特别篇:[4、iOS高级面试简历指导](https://github.com/LGBamboo/iOS-offer/tree/main)【点击跳转观看】** 27 | 28 | * **新增文集:[5、全网各大厂iOS面试题-文集大全](https://github.com/LGBamboo/iOS-Advanced)【点击跳转观看】** 29 | 30 | 31 | *** 32 | 33 | ## 第一份资料 34 | 35 | ### 收集整理:BAT等各个大厂iOS面试真题+答案.PDF文档 36 | 37 | >**资料获取:[加-iOS高级技术交流Q圈](https://jq.qq.com/?_wv=1027&k=GynQasZN)** 38 | 39 | ![](https://upload-images.jianshu.io/upload_images/13277235-626baa02cf82d6c5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 40 | 41 | ![](https://upload-images.jianshu.io/upload_images/13277235-899cef1b82d5fa65.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 42 | 43 | ![](https://upload-images.jianshu.io/upload_images/13277235-f8a56f6870cb9862.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 44 | 45 | 46 | **希望获取到的你;能好好利用,提升自己!** 47 | 48 | >**资料获取方式:加入合作-iOS高级技术交流Q圈:[563513413](https://jq.qq.com/?_wv=1027&k=GynQasZN),管理处免费领取全套iOS资料** 49 | > 50 | >**点击-直接加入:[iOS高级技术交流Q圈](https://jq.qq.com/?_wv=1027&k=GynQasZN)** 51 | 52 | *** 53 | 54 | ## 第二份资料: 55 | 56 | **iOS开发全套面试教学视频:iOS好友私密分享的;(此视频比较私密;仅限个人观看,请勿外传!)** 57 | 58 | >**视频个人获取:请私加合作-- VX:iOSchenchen1234,或者 QQ: 169911468 ;** 59 | > 60 | >**添加时请备注:iOS面试教学视频;** 61 | (Ps:请勿外传,仅仅个人学习使用) 62 | 63 | ![微信二维码](https://upload-images.jianshu.io/upload_images/13277235-4416b349e4a371e8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 64 | 65 | **视频内容目录:** 66 | 67 | ![](https://upload-images.jianshu.io/upload_images/13277235-5dcf484cf7a6f776.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 68 | 69 | *** 70 | 71 | ## 第三份资料: 72 | 73 | **iOS热门书籍大全**:其中包含**架构、iOS进阶、Swift、网络书籍、数据结构算法等**;适合每一位iOS开发者,挑选适合自己的书籍阅读学习;(**全网唯一**) 74 | 75 | ### 书籍文档目录: 76 | 77 | ![](https://upload-images.jianshu.io/upload_images/13277235-bc0c45a9496ebf28.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 78 | 79 | #### 简单展示一下: 80 | 81 | **iOS进阶:** 82 | 83 | ![](https://upload-images.jianshu.io/upload_images/13277235-21d877147393433f.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 84 | 85 | **架构:** 86 | 87 | ![](https://upload-images.jianshu.io/upload_images/13277235-707ad69e667d7da4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) 88 | 89 | 90 | *** 91 | 92 | **还用很多内容,就不详细展示了,这是全网独一份的,也是含金量很高的书籍资料;** 93 | 94 | 95 | >**资料获取方式:加入合作-iOS高级技术交流Q圈:[563513413](https://jq.qq.com/?_wv=1027&k=GynQasZN),管理处免费领取全套iOS资料** 96 | > 97 | >**点击-直接加入:[iOS高级技术交流Q圈](https://jq.qq.com/?_wv=1027&k=GynQasZN)** 98 | 99 | *** 100 | ### 翻到底了,我也是有底线的 101 | 102 | **暂时整理了这些iOS的技术资料;后期收集到更好的,会在文章底部持续更新;敬请期待~~** 103 | 104 | -------------------------------------------------------------------------------- /iOS高级面试简历模板指导.md: -------------------------------------------------------------------------------- 1 | # iOS高级面试简历指导 2 | 3 | ### 前言 4 | **这篇文章我来总结一下iOS程序员的简历应该怎么写,有哪些注意事项,如何拿下大厂offer的必备技术点;** 5 | 6 | **花点时间,耐心看完,一定会对你有所帮助!** 7 | 8 | ### 目录 9 | **一:iOS开发者定位分析** 10 | 11 | **二:iOS开发基本要求和技术加分项** 12 | 13 | **三:个人简历信息模板分析** 14 | 15 | *** 16 | 17 | ## 一:iOS开发者定位分析 18 | 19 | ### 1、简历注意点(了解自己) 20 | 21 | * **1、不要夸张自身的简历;面试一问便知!** 22 | * **2、简历制作尽量不要用"招聘网站"的自动生成简历模板** 23 | * **3、根据自身的特点,自身优势,制作属于自己的简历** 24 | (1)优势:学历,技术背景等,哪一块突出,哪一块就是优势! 25 | 26 | ### 2、iOS开发者定位分析(仅个人看法) 27 | 28 | **1:开发者定位--初级iOS开发者** 29 | 30 | >* 1.能完成基本的UI界面搭建 31 | >* 2.了解网络,能利用网络框架上传 32 | >* 3.熟悉iOS常用内置的API 33 | >* 4.能使用常用的第三方框架 34 | >* 5.能根据业务逻辑,完成数据与uI联系 35 | 36 | **2:开发者定位--中级iOS开发者** 37 | 38 | >* 1.能够快速完成界面搭建 39 | >* 2.能够根据项目业务逻辑以及项目需求封装出常用的工具类 40 | >* 3.熟练常用iOS内置API 41 | >* 4.能根据业务需要快速选择合适的第三方,并快速完成第三方学习. 42 | >* 5.了解常用第三方框架底层并能做二次封装 43 | >* 6.具备基本的架构能力.能够根据项目以及业务方向设计健壮的项目架构 44 | >* 7.较好的编程习惯 45 | >* 8.具备一定的产品意识 46 | >...... 47 | 48 | 49 | **3.开发者定位一高级i0S开发者** 50 | 51 | >* 1.第三方库安全性评估 52 | >* 2.架构风险评估,项目风险评估 53 | >* 3.具备创新并开发出新框架的能力 54 | >* 4.有自身技术专项领域.在这个领域有积累有造诣, 解决公司核心业务.比如项目安全.图形图像处理,音视频.能够帮助公司攻克技术难度,做技术研发. 55 | ...... 56 | >(其他能力不一一概括了) 57 | 58 | ### 3、开发者定位小总结 59 | 总之我们要足够了解自己,才能在简历上有一个清晰的定位,以及在求职过程中,有一个明确的位置选择; 60 | `例如:有一家公司招的高级开发者,但个人能力目前达不到高级开发,这样去面试结果可想而知,而且还会浪费一次机会!` 61 | 当面试中认知到自己的不足,那么就要朝着更高的层次去学习提升! 62 | 63 | ## 二:iOS开发基本要求和技术加分项 64 | 65 | ### 1、基本需求: 66 | 67 | >1.多线程 68 | > 69 | >2.网络 70 | > 71 | >3.主流第三方框架实现原理 72 | > 73 | >4.OC本质 74 | > 75 | >5.数据结构/算法 76 | > 77 | >6.数据库 78 | > 79 | >7.设计模式 80 | > 81 | >8.项目经验 82 | > 83 | >9.runtime / runloop 84 | > 85 | >10.c/c++ 86 | > 87 | >11.界面开发能力 88 | 89 | ### 2、技术加分项: 90 | 91 | >1.网络直播课堂研发经验[IM,直播,音视频研发经验] 92 | > 93 | >2.初创公司从业经历 94 | > 95 | >3.Swift项目经验 96 | > 97 | >4.音视频编解码, 98 | > 99 | >5.视频直播,短视频开发经验 100 | > 101 | >6.AVFoundation 102 | > 103 | >7.OpenGL/ARKit/GPUlmage图像处理 104 | > 105 | >8.直播产品经验 106 | > 107 | >9.安卓端开发经验 108 | > 109 | >10.5年以上iOS开发.大型APP项目 110 | > 111 | >11.有多种编程语言经验 112 | > 113 | >12.GitHub.上有原创开源框架/项目 114 | > 115 | >13.负责过成熟项目架构设计 116 | > 117 | >14.函数式编程(block灵活运用] 118 | > 119 | >15.英语能力[CET-6] 120 | > 121 | >16.逆向实战项目经验 122 | > 123 | >17.项目管理经验 124 | > 125 | >18.跨平台开发经验(Weex/Flutter/RN/Hybird) 126 | > 127 | >19.博客 128 | > 129 | >20.出书 130 | 131 | ### 3、简历要求注意 132 | 133 | * 1.切记生搬硬套. 134 | 135 | * 2.简历必须符合自身技术能力. 136 | 137 | * 3.最好的简历必须要有技术作为支撑. 138 | 139 | ## 三:个人简历信息模板分析 140 | 141 | ### 1、简历版块构成 142 | 143 | >1.个人信息 144 | > 145 | >2.自我简介 146 | > 147 | >3.技术列表 148 | > 149 | >4.项目经历 150 | > 151 | >5.教育背景 152 | > 153 | >6.工作背景 154 | > 155 | >7.兴趣爱好 156 | 157 | *** 158 | #### ①.个人信息,模块需要包含如下信息: 159 | >* 姓名 160 | >* 性别 161 | >* 年龄(`年龄在30-35岁左右,建议不用直接写年龄`) 162 | >* 电话 163 | >* 常用邮箱 164 | >* 常住地 165 | >* 学历+专业(`985/211学历优势,靠前写;计算机专业靠前写;`) 166 | >* 英语能力 167 | >* 工作年限 168 | >* 籍贯 169 | >* 个人博客 170 | 171 | **仅供参考:** 172 | ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMzI3NzIzNS0wMjYzYmQzYjBjNjYxZDcwLnBuZw?x-oss-process=image/format,png) 173 | 174 | *** 175 | 176 | #### ②.自我简介版块: 177 | 178 | 自我简介:是通过一段简短的语言,快速让面试官知道自己的技术优点,技术特点;描述的是自己的能力,而不是自己的个性! 179 | 180 | **例子:个人介绍(仅供参考)** 181 | ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMzI3NzIzNS1iZGUzNTMyNTA1ZWQ0NDY1LnBuZw?x-oss-process=image/format,png) 182 | 183 | #### 【重点】:个人信息模块需要包含如下信息:[切记必须符合自身真实情况] 184 | >* 个人突出经验(开发经验,知名项目经验,知名企业经历等) 185 | >* 个人技术优势(逆向,音视频,跨平台开发经验,Swift完整上线项目,其他平台开发经验) 186 | >* 个人学习成果(gitHub开源项目,开源框架,个人技术博客,公众号,社群以及博客粉丝等. 187 | >* 个人学习成果(个人技术书籍出版,国外技术文献翻译书籍出版,国外技术文献翻译文档) 188 | >* 个人管理经验(某项目架构设计以及项目管理等) 189 | >* **自我技术优势:可以从技能列表中筛选,例如组件化/响应式编程等** 190 | >* **自我简介宗旨:突出自我优势!** 191 | 192 | **模板:自我简介(仅供参考)** 193 | 194 | ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMzI3NzIzNS0zOGIzN2I2MmQ4NTM3YzNmLnBuZw?x-oss-process=image/format,png) 195 | 196 | *** 197 | 198 | #### ③.个人技术列表解析 199 | 200 | **网上案例:(仅供参考)** 201 | ![](https://imgconvert.csdnimg.cn/aHR0cHM6Ly91cGxvYWQtaW1hZ2VzLmppYW5zaHUuaW8vdXBsb2FkX2ltYWdlcy8xMzI3NzIzNS00MjkyY2RjN2YxM2YwNTYwLnBuZw?x-oss-process=image/format,png) 202 | 203 | `注意点:个人技术优势放前面` 204 | 205 | #### 【重点】:技能列表模块注意细节:[切记必须符合自身真实情况] 206 | 207 | >* 所有技术点必须符合目前自身实际能力 208 | >* 建议面试前针对技术点准备3-5个值得探讨的技术点(`注意点`) 209 | >* 注意技术点书写正确,以及表述必须能完整表述其技术的名称+功能+亮点 210 | >* 简历尽量以PDF格式形式(开发者简历尽量简约即可) 211 | >* 技术切换以方向为技能例如:建议不要写精通逆向(而是细数对于逆向你具备实际能力) 212 | >* 技术列表中排序根据开发年限: iOS核心开发技术->技术亮点->使用/了解的技术 213 | 214 | #### iOS技术列表简介,各方向都有简单列出(仅供参考) 215 | 216 | **底层基础:** 217 | 218 | >* 熟练掌握Runtime , Runloop底层原理以及底层源码分析 219 | >* 熟练掌握KVC , KVO使用及其底层原理 220 | >* 熟练掌握多线程原理以及NThread, NSOperation使用 221 | >* 熟练掌握GCG高级使用以及GCD源码分析 222 | >* 基于GCD自定义NSOperation 223 | >* 熟练网络(OC/JS交换/NSURLProtocol/Socket ) 224 | >* 具备封装网络框架构建能力 225 | >* 了解项目单元测试(逻辑测试/异步测试/性能测试/UI测试/OCMock依赖注入) 226 | >* 项目持续集成/自动化打包 227 | >* 掌握项目性能优化(内存优化/界面优化/启动优化/网络优化) 228 | >* 了解常用架构模式(创建型模式/结构型模式/行为型模式). 229 | >* 了解直播项目架构设计 230 | >* 熟练掌握组件化开发 231 | 232 | *** 233 | 234 | **基本框架:** 235 | 236 | >* 熟悉AFNetworking网络框架高级使用并了解底层原理 237 | >* 熟悉Alamofire网络框架高级使用并了解底层原理 238 | >* 熟悉响应式编程RAC框架高级使用并了解底层原理 239 | >* 熟悉响应式编程RXSwift框架高级使用并熟悉底层源码 240 | >* 熟悉微信开源框架WCDB使用并了解底层源码实现 241 | >* 熟悉FMDB 数据库使用并了解底层实现原理 242 | >* 熟练掌握项目缓存策略,熟悉YYCache使用以及底层缓存策略. 243 | >* 熟悉图片加载框架SDWebImage , YYWebImage , YYImage使用以及底层图片加载/解码原理. 244 | >* 熟悉YYAsyncLayer异步绘制框架以及底层异步绘制原理 245 | >* 熟悉美团开源框架Graver框架的使用以及底层原理 246 | 247 | *** 248 | 249 | **图形视觉** 250 | 251 | >* 熟悉Mac OS平台下OpenGL图形图像开发 252 | >* 熟悉OpenGL ES渲染技巧(背面剔除/深度测试/多边形偏移/颜色混合) 253 | >* 熟练掌握OpenGL ES着色语言GLSL.可以编写shader 254 | >* 熟悉iOS下OpenGL ES GLKit框架 255 | >* 熟悉OpenGL ES多重纹理混合/光照混合/颜色混合等。 256 | >* 熟悉OpenGL ES实现视频渲染以及加滤镜 257 | >* 熟悉OpenGL ES实现图片滤镜实现 258 | >* 熟悉OpenGL ES加载3D模型 259 | >* 熟悉Metal框架以及渲染流程. 260 | >* 熟悉Metal shadeing Language能实现图形图像处理 261 | >* 了解SpriteKit框架 262 | >* 熟练使用GPUImage上层框架并了解GPUImage底层源码. 263 | 264 | *** 265 | 266 | **音视频** 267 | 268 | >* 熟悉AVFoundation音视频采集/视频播放/视频帧获取/切换前后摄像头/静态图片捕捉 269 | >* 基于AVFoundation封装直播/小视频音视频数据采集工具类 270 | >* 熟悉视频投屏技术AirPlay 271 | >* 熟悉AVFoundation人脸识别/二维码识别 272 | >* 了解视频封装格式.视频/音频编码格式 273 | >* 了解直播/小视频客户端架构 274 | >* 了解CDN网络 275 | >* 熟悉视频编码原理( IBP帧/帧内预测压缩/帧间预测压缩) 276 | >* 熟悉H264视频编码原理以及H264数据结构 277 | >* 熟练掌握VideoToolBox视频硬编解码,并基于videoToolBox封装视频编码/解码工具类 278 | >* 熟练掌握AudioToolBox音频编解码,并基于AudioToolBox封装音频编码/解码工具类 279 | >* 熟悉音频裸流PCM播放/ AAC解码播放. 280 | >* 熟练基于OpenGL ES在iOS平台下渲染视频并添加滤镜. 281 | 282 | *** 283 | 284 | **逆向安防** 285 | 286 | >* 熟悉iOS加密手段(哈希算法/对称加密算法/非对称加密算法/Openssl) 287 | >* 熟悉APP签名(数字签名/代码签名/iOS双重签名机制) 288 | >* 了解Enitilements/CSR文件/Provisioning Profile 289 | >* 熟悉重签名技术( codesign重签名/xcode重签名/shell脚本自动重签名) 290 | >* 熟悉逆向项目进攻(、Framwork注入 / MachOview / LC_ LOAD_ DYLIB / DYLD / yololib / Dylib 注入) 291 | >* 熟悉Runtime运行时机制,通过SEL方法号寻获IMP函数实现 292 | >* 了解MachO文件,熟悉应用加载过程。 293 | >* 熟悉逆向项目进攻( HooK技术)以及防护反Hook 294 | >* 熟练逆向调试工具(LLDB / Cycript / MokeyDev / Logos ) 295 | >* 熟练掌握越狱开发(应用砸壳/Theos) 296 | >* 熟悉越狱攻防手段(修改RESTRICT段防护Tweak/二进制修改破坏防护/dy1d源码分析/检测RESTRICT段防护二进制修改) 297 | >* 熟练掌握汇编语言(还原高级代码/指针反汇编/Block反汇编/OC方法反汇编) 298 | >* 逆向开发项目(逆向微信抢红包,实现自动拆红包,抢红包.) 299 | >* 逆向开发项目(逆向钉钉打卡,实现异地wi-fi打卡) 300 | >* 熟悉项目安全防护基础反调试(ptrace反调试/ sysct1反调试/破坏ptrace , sysctl 防护/ Ptrace&sysctl 提前执行) 301 | >* 熟悉项目动态调试/静态调试。 302 | >* 熟悉项目安全防护检测(MethodSwizzie检测/签名检测/代码检测) 303 | >* 熟悉项目安全防护(定位防护代码/破解fishhook防护手段) 304 | >* 熟悉项目安全防护(字符串加密/隐藏核心函数调用/汇编防护) 305 | >* 熟练使用LLDB调试工具. 306 | 307 | *** 308 | #### ④:项目经历 309 | 310 | **项目经验:** 311 | > **误区:** 312 | > * 1.写的越详细越好 313 | > * 2.哕嗦,找不到重点 314 | > * 3.冗余信息过重,掩盖亮点 315 | > * 4.排版不清晰 316 | > * 5.认为独立开发才是好开发! 317 | > * 6.项目经验与工作经历混为一谈 318 | 319 | **项目案例简单分析(无参考)** 320 | 321 | >项目周期:1年/日期 322 | >项目名称:*** 323 | >项目人员:5名 324 | >项目描述:****(`项目分类,项目成绩`) 325 | >项目技术点:(`架构,框架,底层技术出发`) 326 | >1、****** 327 | >2、****** 328 | >3、****** 329 | 330 | *** 331 | 332 | ### 结语 333 | 334 | **本文仅供参考,每个人的经历都是不一样的,需要每个人自我补充,自我完成简历,才会呈现更好的!** 335 | 336 | 337 | * **最后附上一份精品整理的《大厂--iOS面试题答案合集.pdf 》** 338 | 339 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210511155353430.png#pic_center) 340 | 341 | * **需要的可加 iOS高级开发群:[937194184](https://jq.qq.com/?_wv=1027&k=5PARXCI),群文件直接获取** 342 | 343 | #### 参考目录: 344 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210506160832847.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzkyNDEz,size_16,color_FFFFFF,t_70) 345 | ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210506161039994.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNzkyNDEz,size_16,color_FFFFFF,t_70) 346 | --------------------------------------------------------------------------------