程序员如何写一份更好的简历
本文章由:ResumeJob贡献,作者: Windson Yang
面试前要准备的第一件事就是写简历,从零开始写简历是一件痛苦的事,因为它既重要又耗时。现在就有很多求职者在电脑前急躁不安地搜索简历模版和参考例句,却不知道如何下笔。写得太短的话 HR 一定觉得没诚意,写得太长的话又无从下手。有的求职者写完连自己都不忍心看,错别字连篇,排版混乱就投出去,所以海投简历也没有回应。而且程序员工资相对较高,有大量人才从其他专业转来,竞争非常激烈,所以如何从众多简历中脱颖而出,赢得面试的机会就非常重要了。这篇文章会从两个方面介绍简历的常见问题
- 简历中的常见错误
- 简历应该怎么写
看完之后,读者就能从中学习到如何写一份能吸引住 HR 眼光的更好的简历。
简历中的常见错误
1. 信息过多,缺乏重点
常见表现是一开始十几行的技能列表
血淋淋的真实例子熟悉使用Python,Go,熟悉C++,HTML,CSS, Vue, jQuery。
熟悉基本数据结构,算法设计能力。
熟悉 TCP/IP,UDP,HTTP,DNS,WebSocket 等网络协议。…
没错,这就是我收到的一份简历的开头,20行 的熟悉掌握。这位求职者开始就把自己了解的所有工具都列出来,希望通过长长的技能列表突显自己的经验和学习能力。但是却适得其反。因为 HR 只有在通过简介或者技能列表觉得求职者初步符合资格了,才会认真把简历看下去,其余情况都是快速搜索关键字。例如要招前端工程师,HR会先搜索 Vue,React,jQuery 等前端框架的关键字,如果看了5秒都没找到的话,就会看下一份。
其实不单单是 HR,大部分人遇到大段文字都会选择跳读,不信你回头看看,第3行 和 14行 其实是一样的。所以,越简洁清晰的简历,HR 反而越有可能认真看。还有另外一个问题,当扫到里面有几行是一些基础的技能的时候,HR 就会开始质疑求职者的能力。想象下,终于到周末休息了,你想找部轻松的电影看看,上网搜索到一个 20大 最佳喜剧电影榜单。当你快速浏览的时候,如果发现好几项都是烂片,一点都不好笑,完全浪费时间,这个情况下,你就会开始怀疑这个喜剧电影排行榜有问题,不会继续看下去,HR 看简历也是一样的。 那么技能列表应该这么写呢,因为 HR 可能是工程师,也可能是非技术员工,所以技能列表也应该简短而排版清晰,让外行人也能快速定位技能。我建议参考这种方式(因为熟练度见仁见智,所以不写也没什么关系):
后端框架:Django, Flask, Scrapy
前端框架:Vue, React, jQuery
数据库:Redis, MySQL
工具:Docker, Jenkins, Git
其他:HTTP, TCP/IP, WebSocket
外语:大学英语四级,能流畅阅读英文文档
就是如此简短,让 HR 能快速定位到求职者的技能,做出是否看下去的判断。另外这个技能列表应该放在简介之后,我们之后会介绍。
2. 无意义描述
第二个常见错误就是叙述项目经验的时候进行无意义的描述
XXX平台
根据项目任务要求完成规划工作和按时完成软件开发。
完成爬虫模块,展示模块。
开发后台管理系统,实现自定义分页,第三方登录。
完成数据整理与入库功能。
HR无法从这样的描述中得到有效的信息,也无法判断求职者的技术能力。需要根据
- 什么事情: 构建 IP 代理池,优化爬虫策略和防屏蔽规则
- 使用什么工具: 使用 Scrapy 开发异步爬虫系统
- 结果怎么样: 提升 200% 网页抓取速度
三个点来修改,最好加上数据来证明。
XXX平台
构建IP代理池,使用 Scrapy 开发异步爬虫系统,优化爬虫策略和防屏蔽规 则,提升 200% 网页抓取速度。
使用 Vue 框架完成后台管理系统,实现自定义分页,第三方登录等 6个 主要功能。
负责数据的清洗与存储到 MySQL 数据库,使用数据库索引减少 50% 数据查询时间。
我理解大部分求职者并没有面试官的经验,没看过多少人的简历,连回忆项目就已经很难了,还要想怎么表达出来。所以我们准备了一些简历上能用到的,关于简介/工作经历/项目经验的[例句在文章最下面],大家可以根据自己的实际情况来修改。
- 有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读多个开源项目,学习改善代码的健壮性与扩展性。
- 有良好的代码编写习惯,具有良好的沟通、协作能力能力,有良好的职业道德和较强的工作责任感。
- 理解操作系统中进程、线程、死锁、虚拟化、文件系统等原理和简单实现。
- 有大型互联网分布式系统的架构设计和开发经验,拥抱新技术,有很强的学习能力。
- 有扎实的计算机理论基础,良好的算法与数据结构基础,了解计算机基本原理与常见机制。 …
3. 排版杂乱,错别字多
错别字绝对是零容忍,连自己的简历都不重视,HR更不会重视。
熟悉iOS发布上架流程,真机调戏。
熟悉 mysql 数据库,了解 MySQL 基本原理(术语前后不符)
还有的简历字体极小(因为内容太多,又要塞在两页中),行距小,难以阅读。中英文之间空格混用,还有模块之间没有明显的分隔,让 HR 找不到想要的信息。有些招聘网站并不能完全正确渲染 PDF 文件。(例如拉勾网,遇到 PDF 文件翻页就会有大片空白出现。),我找了两个真实的例子放在下面,你问为什么海投没有回应,HR 问你这样的简历怎么看。
如何写一份更好的简历
一份简历总体可以分为 6个 模块:基本信息,个人简介,技能列表,工作经历,项目经验,教育情况,其他。这个顺序能让HR从浅到深快速了解求职者的优势与技能。学校信息如果是重点学校或者萌新工程师,可以提前,放在基本信息之后。
基本信息 | 工作经历 | 项目经验 | 教育情况 | 其他 |
---|---|---|---|---|
姓名 | 公司名称 | 项目名称 | 学校名称 | 兴趣爱好 |
邮箱 | 岗位 | 项目介绍 | 专业 | 志愿者工作 |
电话 | 主要职责 | 主要职责 | 就读年份 | |
Github/博客 | 在职时间 | 项目时间 | 获奖情况 | |
个人简介 | 项目经验 | |||
技能列表 |
基本信息
姓名/电话
如实填写即可,要注意的是,投简历之前,可以先查询该公司是否注册了。有些猎头会随便起一个公司名字,专门接受简历然后再联系求职者,不小心投递了就出卖隐私了。
邮箱
写常用邮箱即可,论坛上,偶尔会讨论使用什么尾缀的邮箱看起来比较厉害,有的建议用 gmail,觉得能突显英语能力。有的建议使用 Outlook 或者 163,在国内能比较稳定地接受邮件。也有鄙视 qq 邮箱的,觉得太私人而显得不专业。我无法代表所有 HR 给出意见,某些HR可能会因为邮箱尾缀而对求职者的初步印象产生影响。不过,只有在求职者的简历没有亮眼点,结构混乱的前提下,HR 才会因为这些小细节而筛掉他们。只要求职者在简历中展现出自己的优点,什么邮箱尾缀都不重要。
Github/博客
放上 Github 或者博客链接的前提是它能突显求职者的编程能力,HR 满怀期待点进去但是发现 Github 既没贡献过开源项目,一年就 commit 了几次的话很难会有好印象。技术博客写得好的话可以放上去,有些职位要求里面也会提到这些加分项。
求职意向
这个细节很多求职者会忽略,一名 HR 可能会接受不同职位的简历,如果简历上没有注明应聘的职位,HR也就不知道怎么去判断求职者合不合适了,最简单的方法,直接看下一份简历。所以求职意向必须说清楚自己的目标职位,例如前端工程师,爬虫工程师。
其他信息
其他信息包括政治面貌,性别,年龄,照片等。如果要投国企或者事业单位,党员的政治面貌可能有帮助,至于其他加不加都没什么关系。合起来,基本信息部分可以像这样写:
陈国豪
邮箱: xxx@163.com/ 电话: 133-5555-6666
Github: github.com/abc / 求职意向: java工程师
简介
有些工程师会有一些误区,他们觉得如果循规蹈矩地写简历,只会吸引到传统的,无聊的公司。我遇过不少简介写热爱自由,热爱生活,我想大多数人都喜欢自由,单纯写热爱自由并不能展现出真正的热爱,在计算机领域最好证明的方法就是使用自由软件与贡献开源项目。简介非常重要,也是HR开始了解求职者的第一步。一开始不知道从何下笔的时候,可以根据目标职位的职位要求来参考,而且当看到目标职位都要求熟悉多线程编程而自己不太理解的时候,就是非常好的补习机会了,面试绝对考啊。这里我们假设求职者喜欢的一家公司的岗位描述与要求如下:
Python爬虫工程师
岗位描述:
- 负责爬虫系统架构设计和开发;
- 参与设计系统技术方案,核心代码开发和系统调优;
- 参与各专项技术调研,新技术引入等;
岗位要求:
- 2年或以上 Python 开发经验,本科及以上学历,计算机相关专业;
- 热爱计算机科学和互联网技术,精通 Python 语言,熟悉正则表达式,熟悉 MySQL 数据库;
- 熟悉 Python 网络编程,能够设计和维护基于 TCP/IP 协议的高性能事件驱动框架程序;
- 有强烈的求知欲,优秀的学习和沟通能力;
先分析下这个岗位的要求,需要开发爬虫系统,有Python开发能力,对网络协议有了解。抓住这几点之后,我们就可以针对这个岗位写简介:
两年 Python 后端开发经验,熟悉** Scrapy 框架,作为主力工程师参与设计与开发过多个项目,负责系统核心模块的开发,自动化测试与部署。熟悉 HTTP 协议、TCP/IP 协议,了解正则表达式,XPATH 的用法,了解 Redis,MySQL 数据库**与 Linux 系统的常见机制与原理。有优秀的学习能力和团队沟通能力,经常与团队进行技术分享,能与团队共同成长。
简介/工作经历/项目经验中的关键字应该加粗。这里的第一条首先突出个人的开发经验,简单介绍之前主要工作职责(有爬虫开发,自动化测试与部署经验)。第二条展现自己的符合岗位要求的专业知识与技能列表,第三条列出软技能,以与团队进行技术分享为例子,突显出团队合作的能力。
如果是非科班或者萌新工程师的话可以尽量从个人项目,学习能力以及软技能突显自己。
两年独立开发 Web 项目经验,了解项目开发流程及自动化部署,设计以及开发了 Todo-list,博客等项目,实现了浏览,评论,点赞等功能。熟悉 HTTP 协议、TCP/IP 协议,了解 Redis,MySQL 数据库与 Linux 系统的常见机制与原理。热衷学习计算机技术,自学了计算机系统,数据结构等多个计算机课程。
非科班工程师要与科班工程师竞争,最好自己有做过岗位类似的项目。优质的个人项目也是加分项。博客,爬虫,Todo-list 这些实在太常见了,我不是说它缺少技术含量(可以看看 Python 作者 Guido van Rossum 写的爬虫),只是太多求职者都只完成非常简单的功能,没有深究原理。如果能完成一些与众不同的项目的话,那么就能吸引到HR的眼球了,500lines 里面就有很多有趣的项目。如果觉得跟不上,可以跟着几个 MOOC 课程学习,里面也有实现一些有趣的项目,例如浏览器,搜索引擎和社交网络,看起来难,但是它都会有一步步的说明与示例代码。我相信大部分开发者都能从中学习到很多。试想下,简介如果写为这样:
两年 Python 后端开发经验,了解** Scrapy 爬虫框架,设计开发了简单的浏览器,实现语法解析,编译功能。开发了一个搜索引擎和社交网络,实现了搜索,关注功能。熟悉 HTTP 协议、TCP/IP 协议,正则表达式,XPATH **的用法,了解 MySQL数据库 与 Linux 系统的常见机制与原理。热衷学习计算机技术,自学了计算机系统,数据结构等多个计算机课程。
是不是非常不一样了,HR也会愿意给机会这样特别的求职者。写简历的过程其实也是自我反省的过程,从中你能知道自己哪里不足,及时地弥补与学习,才能得到好的 offer。
恭喜你,第一步的简介完成了。你抓住了 HR 的眼球,接下来的话就是要展现自己的能力。
技能列表
像我在常见错误说的,HR会直接在简历中搜索关键字,如果没有的话就直接筛掉。所以技能列表可以按照类型把自己最擅长的工具列上去,熟悉度因为见仁见智,所以不用写,或者用进度条表示就好:
后端框架:Django, Flask, Scrapy
前端框架:Vue, React, jQuery
数据库:Redis, MySQL
工具:Docker, Jenkins, Git
其他:TCP/IP, HTTP, Websocket
外语:大学英语六级,能流畅阅读英文文档
工作经历
如果这份简历就是用来找实习的话,这个模块可以跳过。一个要注意的点是工作经历的完整性,我有一次去一家大厂面试的时候,他们问我为什么没有把完整的工作经历写上去,因为他们要求从毕业到现在的时间不能出现空白期。我回答说一方面是保持简历的简短,另外一方面是最近的工作经历与这个岗位比较有关。不过这也是我仅有的一次被要求填写完整的工作经历,所以我的建议是简历上最好写上小于等于3间公司的工作经历,而且面试问到之前的工作的话要能正确地回答,并且连接所有时间点,不要让面试官觉得你在隐瞒什么。工作经历应按照最近的工作倒序列出,可以分为四点:
公司名称
写上公司全称即可,如果产品比较出名的话,可以把产品名写上:
独角科技有限公司(旗下产品 EngineGo, Thankyou-opensource)
岗位/在职时间
岗位 title 要注意,如果投的岗位是数据分析工程师,那么爬虫工程师与数据挖掘工程师对 HR 来说就不一样了,高级工程师的话也要加上去。在职时间要根据社保缴纳的时间写,有些厂会做背景调查的。
独角科技有限公司(旗下产品 EngineGo, Thankyou-opensource)
2014年6月-2016年6月 | 高级 Python 开发工程师
主要职责
主要职责突显的是在职的职责以及给公司带来什么效益,与接下来的项目经验不同,不需要详细写技术栈和项目细节,只需要大致阐述即可,这里举一个我们例句中的一个例子:
- 作为组长负责设计和开发分布式网络爬虫系统,优化爬虫策略和防屏蔽规则,提升网页抓取的效率和质量。
- 根据行业需求分析设计方案可行性,对项目代码进行测试优化,协助持续集成与自动化部署,提高系统可用性。
- 负责公司技术文档的编写以及维护,定期 review 团队的代码,与团队共同学习以及成长。
项目经验
项目经验可以放在对应的工作经历里,每间公司选 1-2个 项目重点介绍即可。需要详细描述主要开发或者维护的模块,使用了什么工具,以及达成的效果如何,这里以 EngineGo 爬虫系统为例,注意简洁和突出数据,不要进行无意义描述,同时关键字应该加粗。
- 与产品经理保持沟通,使用** Scrapy 框架对爬虫模块进行重构,提高 200% 爬虫速度并减少服务器 20%CPU 负载。改进爬虫策略,降低 40% **被屏蔽的请求数。
- 作为主要工程师设计以及开发物业模块,活动模块,实现报名,即时通知等 10个 功能。
- 使用Redis数据库实现分布式爬虫与数据缓存,减少** 50% **数据查询时间。
- 与其他工程师合作,使用** Docker 对项目进行拆分重新架构, 减少业务模块之间的资源耦合, 实现持续集成与自动化部署。**
还有,大部分情况下,不建议简历中出现项目的图片,可以附上项目链接。
教育情况
学校大家都会写,要注意的有几点,如果就读比较出名的学校可以把学校放在前面,简介之后。另外,我碰到不少转专业的求职者直接不写原本的专业了,我觉得这毫无必要。HR 也不是傻的,看没写专业就知道是非科班的,还不如老老实实写下来,如果是理科的话还有点帮助。
兴趣爱好
计算机相关或突显动手能力的兴趣可以列上去,如果是唱歌,旅游这些的话就不用放上去了。
总结
只要认真去修改简历,HR 是能感受到的,也能从众多求职者中脱颖而出,得到更多机会。有时候机会往往就在于用不用心争取上面。我希望各位看了这篇文章后能写出更好的简历,获取更多的机会。
个人简介例句
通用:
- 有良好的代码风格,通过添加注释提高代码可读性,注重代码质量,研读多个开源项目,学习改善代码的健壮性与扩展性。
- 具备良好的代码编程习惯及文档编写能力,参与多个高性能网站架构设计与系统核心部分代码编写、重构,能进行技术攻关,突破关键技术瓶颈。
- 负责根据公司业务及目标引进人才、培养新人、规划团队人员、并建立完善的绩效考核制度有效留住人才,提高工作效率。
- 熟悉常用开发版的 Linux 服务器安装、配置和调优,熟悉常用开发环境如 Apache、MySQL、Nginx 等工具的部署、设置及调优,有集群经验优先。
- 有良好的代码编写习惯,具有良好的沟通、协作能力能力,有良好的职业道德和较强的工作责任感。
- 理解操作系统中进程、线程、死锁、虚拟化、文件系统等原理和简单实现。
- 熟悉Web编程,能够使用主流框架进行网络页面的开发。
- 有大型互联网分布式系统的架构设计和开发经验,拥抱新技术,有很强的学习能力。
- 喜欢钻研语言底层与框架原理,熟悉多种算法、函数式开发等编程技术,能流畅阅读英文文档。
- 思路清晰严谨,具有良好的代码编写习惯,善于倾听和团队合作。
- 有扎实的计算机理论基础,良好的算法与数据结构基础,了解计算机基本原理与常见机制。
- 善于与人沟通,良好的团队合作精神和高度的责任感,能够承受压力,有较强的吃苦耐劳和创新精神。
移动端:
- 了解 Http,TCP/IP,Websocket 协议,熟悉处理网络请求,XML和JSON 数据解析以及本地缓存。
- 熟悉 Socket 网络编程,了解 TCP、UDP、HTTP、FTP 等常用网络协议。
- 熟悉移动网络通信机制,对 HTTP、TCP/IP 协议有较深刻的理解,熟悉网络性能优化且有成功实施经验。
- 熟练掌握 Android UI 开发,包括各种控件、布局方式、动画和自定义控件的使用方法。
- 熟悉Android的中间件开发流程和 Android Framework 开发技术,能独立进行 Android 应用程序开发。
- 熟练移动端项目搭建与架构,灵活使用 XIB 和 Storyboard,掌握 iOS 各版本的适配及 Auto Layout、Content Hugging 等布局。
- 熟悉掌握 iOS 内存管理机制,解决系统崩溃,内存溢出,iPhone 版本兼容性等问题。
- 参与移动端项目设计,框架选型,技术点攻克和功能开发实现,修复代码 Bug 并交付测试。提高产品稳定性。
- 熟悉掌握系统常用框架开发,了解屏幕适配、核心动画、多线程、版本兼容等功能。
- 熟悉iOS系统运行机制及内核;深入理解 iOS runtime 运行机制,有 Method Swizzling 方面的实战经验。
- 有扎实的 Java 基础,掌握 Android 架构下网络通信机制,对 Socket 通信、TCP/IP 和 HTTP 有较深刻的理解。
- 熟悉 Android Studio 开发工具和相关测试工具的使用,具有Android版本兼容的开发经验。
- 熟练运用UIKit等进行界面开发;了解 Cocoa/UIKit Framework,熟悉 iPhone/iPad 各个版本之间的差异,并且能够提供出色的解决方案。
- 熟悉移动端生命周期,推送机制,熟练掌握第三方即时通讯 SDK 的集成和使用。
- 熟练使用 MVC 模式进行项目设计,熟悉单例,工厂模式等常见的设计模式和通知机制。
- 了解多线程编程,内存管理机制。熟练掌握 delegate ,block 等回调机制。
- 熟练掌握集成第三方授权登录,第三方分享,第三方支付等技能。
- 熟练掌握 JSON 解析,内存管理和性能优化以及多线程,熟悉使用 CocaTouch 框架等开源框架与 iOS 底层 SDK 的调用。
- 对软件架构进行搭建,规划,优化应用架构逻辑,提升通信传输效率与安全性。
- 熟悉 Objective-C 与 Swift 语言,掌握 iOS 开发中用代码与故事板实现 UI,网络通信,数据库等的基础知识,掌握 XCode 常用的调试技巧与测试方法,懂得 iOS 性能优化的常见思路。
- 熟悉 JS 与 WebView 交互,熟悉第三方登录,分享,字符功能,熟悉 APP 上线发布,版本迭代的全部流程,有多个项目上线经验。
后端:
- 熟悉使用 Tomcat 应用服务器的应用部署和配置,熟悉 jenkins 自动化部署、测试。
- 了解数据分析库 Numpy 和 Pandas、matplotlib 的原理,有数据处理、分析和建模的经验。
- 掌握 Django,Flask 等开源框架设计原理及运行机制,熟悉 LAMP/LNMP 系统架构设计,有高并发 WEB 应用架构经验。
- 熟悉 Java 语言,掌握 Spring、Springboot 等主流框架,了解 Memcache、Redis 等缓存组件与 RabbitMQ 异步处理机制。
- 了解高可用、高并发,高负载的架构,具有分布式架构的系统开发能力。
- 熟悉 Spring、MyBatis、Hibernate 框架,并参与设计多个高可用性项目。
- 熟练使用 Oracle/MySQL 数据库,对于 Mongodb 等 NOSQL 数据库具有一定的了解,拥有一定的数据库设计能力和优化能力。
- 熟悉 TCP/IP、DNS 等底层协议,精通 HTTP 协议,熟练掌握各种工具进行网络问题诊断。
- 精通 golang 协程,channal 和锁等机制,对高并发、高可用架构系统有正确、深刻的理解,有分布式服务器开发经验。
- 了解 Django,Flask 框架的设计和实现原理,熟悉分布式系统的设计和开发,对系统高可用有一定经验。
- 熟悉 Redis、MySQL 等数据库,熟悉 Shell脚本 编写、Linux 系统及常用命令。
- 两年以上 Go 项目开发经验,熟悉主流 Go 语言下常用的 RPC 框架,深入了解 Go 语言内部运行机制,对 Go 源码有一定的了解。
- JAVA 基础扎实,对 JVM 有一定了解,能对 JVM 做性能分析及调优。
- 熟练掌握 PHP 语言 Laravel 框架,yii 框架与常用工具,有丰富的 LAMP 开发与良好的 Web 网络编程经验。
- 熟悉 Docker 微服务架构,Redis, Memcached 缓存技术,Nginx 负载均衡,RabbitMQ 消息队列等领域。
- 熟悉 Python 爬虫系统的设计,能编写高质量网络爬虫,识别常见验证码(爬取过知乎,淘宝等网站数据)了解 Celery 分布式爬虫机制。
- 深熟练掌握全栈开发,对后端到前端的技术原理有全面的认识,熟悉网站开发流程,能够独立搭建完整的网站。
- 深入理解数据结构与算法,并能够实现哈希表、链表、队列、栈、二叉树等数据结构。
- 扎实的 Python 基础,熟悉文件 I/O、多线程、装饰器、基础数据结构及模块化。
- 熟练基于 Scrapy 框架进行分布式爬虫,利用 Xpath,BeautifulSoup,Re 进行数据清洗,并解决验证码,登录,Javascript混淆,等各种反爬措施。
- 熟悉 Socket 网络编程、了解多线程、多进程、异步I/O、I/O多路复用如 select、poll、epoll的原理及使用。
- 熟练使用 Selenium, Puppeteer 进行页面测试,构建单元测试,自动化测试
- 熟悉 Django web 开发框架,熟悉 MVC 模型,熟悉中间件、Admin 站点管理、图片上传、分页,邮件传输。
- 掌握 MySQL 数据库的基本原理与常用语法,了解 MongoDB、Redis 等 NoSQL 数据库;
- 使用 Scrapy 框架对采集目标进行数据收集,跟踪网页链接构建分类信息字段分析目标网址,使用** Xpath, re **提取信息。通过抓包工具获取 Ajax 链接并解析 json 数据。
项目经验例句
通用
- 独自负责客户端从无到有的产品设计,研发,流程图及开发文档,用两个月的时间独立开发了初版的 APP,集成了支付模块、文件下载,数据本地缓存功能。
- 负责项目管理,产品研发部门的工作任务分配,工作细化划分,保证项目按时上线。
- 与设计、运营等合作部门沟通协作,推动产品的实现与最终效果的评估,制定产品的测试标准,上线标准,并进行数据跟踪分析.
前端
- 对 ListView,ConvertView 进行优化,并通过 ViewHolder 缓存 Item 条目,减少重复代码的冗余,减少 30% 页面加载时间。
- 使用多个类实现不同功能,如 Loading 类负责加载数据和布局文件,Adapter 类负责 ListView 控件与展示数据。实现项目模块化开发,降低组件耦合度。
- 使用 AsyncSocket 进行完成即时通讯功能,并协助组长完成客户端与嵌入式网的 Socket 对接与通信,实现通过 iOS 设备控制插座的开关、定时开关、温度检测及报警等 8个 功能。
- 利用CTFramesetterRef绘制内容实现在线阅读功能,利用UITableViewCell高度自适应和ZXPAutoLayout布局实现消息发布功能。
- 利用 UI PLayer 实现二维码/条形码的扫描与识别,自定义UITextField实现实时输入实时搜索功能。
- 使用 AVPlayer 实现音频的在线播放、暂停、、快退快进等6个功能。
- 利用 CLLocationManager 进行地理定位,规划步行、驾车等不同出行方式的线路,并通过不同时间段的地理位置,在地图上绘制轨迹信息,并附带详细的时间地址数据。
- 使用多线程定时器实现图片轮播器效果,使用 CoreData 对首页数据进行数据储存以及实现搜索界面的模糊搜索功能。
- 封装 FMDatabaseQueue 类防止多线程访问数据库死锁,修改后比起系统原生框架拥有较高的效率和更为方便的调用方式。
- 使用** JavaScript 与原生 Objective-C **网页交互,实现点击网页按钮跳转功能。
- 使用FTP服务器实现CDN分级推送,实现用户上传文件预加热流程,提高50%缓存命中率。
本文转自 Windson Yang