开源软件名称:initially0/iOS
开源软件地址:https://github.com/initially0/iOS
开源编程语言:
开源软件介绍:-iOS高级面试简历指导
总结一下iOS程序员的简历应该怎么写,有哪些注意事项,如何拿下大厂offer的必备技术点
花点时间,耐心看完,一定会对你有所帮助!
目录
一:iOS开发者定位分析
二:iOS开发基本要求和技术加分项
三:个人简历信息模板分析
四:面试大厂iOS交流群:711315161 ;微信:ios_dx
(加群:获取最新面试题+内推岗位+面试简历交流+iOS资料文档)
一:iOS开发者定位分析
1、简历注意点(了解自己)
- 1、不要夸张自身的简历;面试一问便知!
- 2、简历制作尽量不要用"招聘网站"的自动生成简历模板
- 3、根据自身的特点,自身优势,制作属于自己的简历 (1)优势:学历,技术背景等,哪一块突出,哪一块就是优势!
2、iOS开发者定位分析(仅个人看法)
1:开发者定位--初级iOS开发者
- 1.能完成基本的UI界面搭建
- 2.了解网络,能利用网络框架上传
- 3.熟悉iOS常用内置的API
- 4.能使用常用的第三方框架
- 5.能根据业务逻辑,完成数据与uI联系
2:开发者定位--中级iOS开发者
- 1.能够快速完成界面搭建
- 2.能够根据项目业务逻辑以及项目需求封装出常用的工具类
- 3.熟练常用iOS内置API
- 4.能根据业务需要快速选择合适的第三方,并快速完成第三方学习.
- 5.了解常用第三方框架底层并能做二次封装
- 6.具备基本的架构能力.能够根据项目以及业务方向设计健壮的项目架构
- 7.较好的编程习惯
- 8.具备一定的产品意识 ......
3.开发者定位一高级i0S开发者
- 1.第三方库安全性评估
- 2.架构风险评估,项目风险评估
- 3.具备创新并开发出新框架的能力
- 4.有自身技术专项领域.在这个领域有积累有造诣, 解决公司核心业务.比如项目安全.图形图像处理,音视频.能够帮助公司攻克技术难度,做技术研发. ...... (其他能力不一一概括了)
3、开发者定位小总结
总之我们要足够了解自己,才能在简历上有一个清晰的定位,以及在求职过程中,有一个明确的位置选择; 例如:有一家公司招的高级开发者,但个人能力目前达不到高级开发,这样去面试结果可想而知,而且还会浪费一次机会! 当面试中认知到自己的不足,那么就要朝着更高的层次去学习提升!
二:iOS开发基本要求和技术加分项
1、基本需求:
1.多线程
2.网络
3.主流第三方框架实现原理
4.OC本质
5.数据结构/算法
6.数据库
7.设计模式
8.项目经验
9.runtime / runloop
10.c/c++
11.界面开发能力
2、技术加分项:
1.网络直播课堂研发经验[IM,直播,音视频研发经验]
2.初创公司从业经历
3.Swift项目经验
4.音视频编解码,
5.视频直播,短视频开发经验
6.AVFoundation
7.OpenGL/ARKit/GPUlmage图像处理
8.直播产品经验
9.安卓端开发经验
10.5年以上iOS开发.大型APP项目
11.有多种编程语言经验
12.GitHub.上有原创开源框架/项目
13.负责过成熟项目架构设计
14.函数式编程(block灵活运用]
15.英语能力[CET-6]
16.逆向实战项目经验
17.项目管理经验
18.跨平台开发经验(Weex/Flutter/RN/Hybird)
19.博客
20.出书
3、简历要求注意
-
1.切记生搬硬套.
-
2.简历必须符合自身技术能力.
-
3.最好的简历必须要有技术作为支撑.
三:个人简历信息模板分析
1、简历版块构成
1.个人信息
2.自我简介
3.技术列表
4.项目经历
5.教育背景
6.工作背景
7.兴趣爱好
①.个人信息,模块需要包含如下信息:
- 姓名
- 性别
- 年龄(
年龄在30-35岁左右,建议不用直接写年龄 )
- 电话
- 常用邮箱
- 常住地
- 学历+专业(
985/211学历优势,靠前写;计算机专业靠前写; )
- 英语能力
- 工作年限
- 籍贯
- 个人博客
仅供参考:
②.自我简介版块:
自我简介:是通过一段简短的语言,快速让面试官知道自己的技术优点,技术特点;描述的是自己的能力,而不是自己的个性!
例子:个人介绍(仅供参考)
【重点】:个人信息模块需要包含如下信息:[切记必须符合自身真实情况]
- 个人突出经验(开发经验,知名项目经验,知名企业经历等)
- 个人技术优势(逆向,音视频,跨平台开发经验,Swift完整上线项目,其他平台开发经验)
- 个人学习成果(gitHub开源项目,开源框架,个人技术博客,公众号,社群以及博客粉丝等.
- 个人学习成果(个人技术书籍出版,国外技术文献翻译书籍出版,国外技术文献翻译文档)
- 个人管理经验(某项目架构设计以及项目管理等)
- 自我技术优势:可以从技能列表中筛选,例如组件化/响应式编程等
- 自我简介宗旨:突出自我优势!
模板:自我简介(仅供参考)
③.个人技术列表解析
网上案例:(仅供参考)
注意点:个人技术优势放前面
【重点】:技能列表模块注意细节:[切记必须符合自身真实情况]
- 所有技术点必须符合目前自身实际能力
- 建议面试前针对技术点准备3-5个值得探讨的技术点(
注意点 )
- 注意技术点书写正确,以及表述必须能完整表述其技术的名称+功能+亮点
- 简历尽量以PDF格式形式(开发者简历尽量简约即可)
- 技术切换以方向为技能例如:建议不要写精通逆向(而是细数对于逆向你具备实际能力)
- 技术列表中排序根据开发年限: iOS核心开发技术->技术亮点->使用/了解的技术
iOS技术列表简介,各方向都有简单列出(仅供参考)
底层基础:
- 熟练掌握Runtime , Runloop底层原理以及底层源码分析
- 熟练掌握KVC , KVO使用及其底层原理
- 熟练掌握多线程原理以及NThread, NSOperation使用
- 熟练掌握GCG高级使用以及GCD源码分析
- 基于GCD自定义NSOperation
- 熟练网络(OC/JS交换/NSURLProtocol/Socket )
- 具备封装网络框架构建能力
- 了解项目单元测试(逻辑测试/异步测试/性能测试/UI测试/OCMock依赖注入)
- 项目持续集成/自动化打包
- 掌握项目性能优化(内存优化/界面优化/启动优化/网络优化)
- 了解常用架构模式(创建型模式/结构型模式/行为型模式).
- 了解直播项目架构设计
- 熟练掌握组件化开发
基本框架:
- 熟悉AFNetworking网络框架高级使用并了解底层原理
- 熟悉Alamofire网络框架高级使用并了解底层原理
- 熟悉响应式编程RAC框架高级使用并了解底层原理
- 熟悉响应式编程RXSwift框架高级使用并熟悉底层源码
- 熟悉微信开源框架WCDB使用并了解底层源码实现
- 熟悉FMDB 数据库使用并了解底层实现原理
- 熟练掌握项目缓存策略,熟悉YYCache使用以及底层缓存策略.
- 熟悉图片加载框架SDWebImage , YYWebImage , YYImage使用以及底层图片加载/解码原理.
- 熟悉YYAsyncLayer异步绘制框架以及底层异步绘制原理
- 熟悉美团开源框架Graver框架的使用以及底层原理
图形视觉
- 熟悉Mac OS平台下OpenGL图形图像开发
- 熟悉OpenGL ES渲染技巧(背面剔除/深度测试/多边形偏移/颜色混合)
- 熟练掌握OpenGL ES着色语言GLSL.可以编写shader
- 熟悉iOS下OpenGL ES GLKit框架
- 熟悉OpenGL ES多重纹理混合/光照混合/颜色混合等。
- 熟悉OpenGL ES实现视频渲染以及加滤镜
- 熟悉OpenGL ES实现图片滤镜实现
- 熟悉OpenGL ES加载3D模型
- 熟悉Metal框架以及渲染流程.
- 熟悉Metal shadeing Language能实现图形图像处理
- 了解SpriteKit框架
- 熟练使用GPUImage上层框架并了解GPUImage底层源码.
音视频
- 熟悉AVFoundation音视频采集/视频播放/视频帧获取/切换前后摄像头/静态图片捕捉
- 基于AVFoundation封装直播/小视频音视频数据采集工具类
- 熟悉视频投屏技术AirPlay
- 熟悉AVFoundation人脸识别/二维码识别
- 了解视频封装格式.视频/音频编码格式
- 了解直播/小视频客户端架构
- 了解CDN网络
- 熟悉视频编码原理( IBP帧/帧内预测压缩/帧间预测压缩)
- 熟悉H264视频编码原理以及H264数据结构
- 熟练掌握VideoToolBox视频硬编解码,并基于videoToolBox封装视频编码/解码工具类
- 熟练掌握AudioToolBox音频编解码,并基于AudioToolBox封装音频编码/解码工具类
- 熟悉音频裸流PCM播放/ AAC解码播放.
- 熟练基于OpenGL ES在iOS平台下渲染视频并添加滤镜.
逆向安防
- 熟悉iOS加密手段(哈希算法/对称加密算法/非对称加密算法/Openssl)
- 熟悉APP签名(数字签名/代码签名/iOS双重签名机制)
- 了解Enitilements/CSR文件/Provisioning Profile
- 熟悉重签名技术( codesign重签名/xcode重签名/shell脚本自动重签名)
- 熟悉逆向项目进攻(、Framwork注入 / MachOview / LC_ LOAD_ DYLIB / DYLD / yololib / Dylib 注入)
- 熟悉Runtime运行时机制,通过SEL方法号寻获IMP函数实现
- 了解MachO文件,熟悉应用加载过程。
- 熟悉逆向项目进攻( HooK技术)以及防护反Hook
- 熟练逆向调试工具(LLDB / Cycript / MokeyDev / Logos )
- 熟练掌握越狱开发(应用砸壳/Theos)
- 熟悉越狱攻防手段(修改RESTRICT段防护Tweak/二进制修改破坏防护/dy1d源码分析/检测RESTRICT段防护二进制修改)
- 熟练掌握汇编语言(还原高级代码/指针反汇编/Block反汇编/OC方法反汇编)
- 逆向开发项目(逆向微信抢红包,实现自动拆红包,抢红包.)
- 逆向开发项目(逆向钉钉打卡,实现异地wi-fi打卡)
- 熟悉项目安全防护基础反调试(ptrace反调试/ sysct1反调试/破坏ptrace , sysctl 防护/ Ptrace&sysctl 提前执行)
- 熟悉项目动态调试/静态调试。
- 熟悉项目安全防护检测(MethodSwizzie检测/签名检测/代码检测)
- 熟悉项目安全防护(定位防护代码/破解fishhook防护手段)
- 熟悉项目安全防护(字符串加密/隐藏核心函数调用/汇编防护)
- 熟练使用LLDB调试工具.
④:项目经历
项目经验:
误区:
- 1.写的越详细越好
- 2.哕嗦,找不到重点
- 3.冗余信息过重,掩盖亮点
- 4.排版不清晰
- 5.认为独立开发才是好开发!
- 6.项目经验与工作经历混为一谈
项目案例简单分析(无参考)
项目周期:1年/日期 项目名称:*** 项目人员:5名 项目描述:(项目分类,项目成绩 ) 项目技术点:(架构,框架,底层技术出发 ) 1、** 2、****** 3、******
##结语
本文仅供参考,每个人的经历都是不一样的,需要每个人自我补充,自我完成简历,才会呈现更好的!
- 最后附上一份精品整理的《大厂--iOS面试题答案合集.pdf 》
- 需要的可加 iOS高级开发群:711315161,群文件直接获取
|
请发表评论