杜文杰

iOS开发工程师

基本信息


  • 杜文杰
  • 30
  • 上海
  • 杭州电子科技大学
  • 2016

联系方式


  • +8618968160607
  • duwj@foxmail.com
  • duwenjie.site
  • https://github.com/MoonSoilWJ

技能点


  • • 精通objective-c,熟悉swift、js、css、
      python、ruby、shell等。
  • • 熟悉runtime、runloop原理,多线程操作、
      内存管理。
  • • 熟悉常用算法和数据结构。
  • • 熟悉网络编程HTTPS/TCP/UDP通信协议
  • • 熟悉常见混合开发模式web(ReactJS)、
      RN。
  • • 熟悉Objective-C面向对象设计方法和常用设
      计模式。
  • • 熟悉项目性能优化(内存、界面、启动、网
      络)、crash防护。
  • • 熟悉持续集成、自动打包、代码混淆。

技术栈


  • MJRefresh、JSPatch、MJExtension、SDWebimage等
  • 微信、支付宝、腾讯云、融云、阿里云、网易七鱼、椰云支付、51提现、高德地图等
  • 上架多款app,熟悉appStore、testflight上下架流程,超级签。了解Android开发。

个人微信


教育经历


  • 杭州电子科技大学(统招一本)      电子信息工程专业      2012.9-2016.6

    1,CET-6,较好的英文文档阅读能力
    2,单片机三级证书、嵌入式三级证书。
    3,半个月时间自学Android完成毕业设计。

工作经历


  • 上海乐蜀网络科技有限公司  -  软件中心

    2023.5 - 至今    iOS开发工程师

    1,独立负责《录音转换大师》、《加密电话》两款APP的开发迭代上架工作,涉及音频的录制、播放、编辑,录音转文字、文字转录音、音频格式转换、数据持久化、内购、埋点等功能。
    2,项目的基建搭建:CI/CD的实现,代码push的时候上传ipa到testflight,并发送钉钉通知。
    3,负责新项目立项的调研工作,分析市场现有app,以及技术方案及成本的调研,输出文档。

  • 微盟集团  -  销氪研发中心

    2021.10 - 2022.10    资深软件开发工程师

    1,负责销氪APP中的客资模块的开发迭代。
    2,负责基建项目日志回捞,使定位线上随机问题的难度大大降低,让随机问题变得有迹可循。
    3,负责基建项目防崩溃SDK,通过拦截整体降低了APP的崩溃率。
    4,团队内、外部的有效协调沟通,深度参与产品需求讨论,功能定义,优化产品体验。

  • 浙江大搜车软件技术有限公司  -  数据中心

    2020.10 - 2021.8    资深无线开发工程师

    1,负责”鲁班全埋点SDK“项目,通过调研竞品神策和GIO的产品,理出我们自己的产品实现方式,同前后端同事探讨实现思路,优化前后端交互流程,为产品提供多种解决方案。开发完成后输出内部接入文档(车易拍、大风车等)和商用接入文档(哪吒汽车)提供给业务部门。
    2,SDK开发期间的其他时间,配合基础架构部门的同学对组件进行了改造以适配跨平台调用工具Morty,通过协议包裹满足各媒介(h5\rn\flutter)调用逻辑。
    3,协助业务部门解决一些devops的ci\cd相关的bug;协助大搜车家选、弹个车等部门完成部分业务需求。

  • 杭州明霖信息技术有限公司 (竞彩之家)  -  研发部

    2015.11 - 2020.09    iOS开发主管(1年)

    1,熟悉苹果app签名机制,使用开源项目fastlane根据个性化分包需求用ruby实现了app的超级签名,解决游戏分包签名的问题。
    2,解决团队痛点,如编写shell脚本自动化打包和CI的部署等。
    3,带领9人iOS团队,协调团队成员资源,协调部门之间的工作。
    4,相关技术探索,如ios组件化、动态化、跨平台。
    5,参与需求讨论,提供技术解决方案,如埋点方案的实现。
    6,参与开发并上架多款app,涉及直播、电商、体育比赛、im、礼物、内购、充值等模块。
    7,多次作为项目负责人,负责项目的架构、搭建等。
    8,解决项目开发过程中团队遇到的疑难问题,并对app进行性能优化、UI界面的优化等。
    9,参与公司一底层库的封装与改进,比如网络库、UI库等。

项目经验


  • 录音转换大师App

    主要职责:

    1,负责iOS端APP从0开发到上架的工作。
    2,配合投放部门集成ads相关库,上报设备信息、广告组关键词等。

    3,埋点库的开发。
  • 销氪App

    销氪app是专为销售人员打造的手机CRM服务软件,通过大数据去获取客户,让企业可以获得最精准的客户,还可以对客户信息进行管理,提高企业工作效率。

    主要职责:

    1,app使用模块化开发设计,我负责APP中客资和报表模块的日常开发、迭代、维护工作。
    2,h5和原生混合开发,h5使用React框架。

    3,使用reactiveObjc框架,MVVM设计模式。
  • 日志回捞SDK

    主要职责:

    1,从0到1的项目搭建,技术调研后结合内部情况产出技术方案文档。
    2,初始化SDK后,后台开常驻线程,在子线程中使用FMDB日志保存到沙盒,日志每隔一天write到文件中,以日期命名。
    3,每隔60秒重新请求策略,若是当前设备击中实时上传策略,则每次log进来都要上传,同时修改数据库标记。
    4,若是当前设备击中回捞策略,选择对应日期本地文件压缩zip传到后台。

  • 防崩溃SDK

    主要职责:

    1,针对高频发生的崩溃进行拦截,像容器类、KV、NSTimer、unrecognized selector,主要通过class_replaceMethod交换相关方法。
    2,针对野指针:根据xcode提供的Zombie Object的实现原理,当对象调用dealloc时用生成的僵尸对象替换原有对象,为不影响性能,设置30s有效时长,30s内僵尸对象收到消息,就拦截掉崩溃。

  • 鲁班全埋点SDK

    鲁班SDK旨在提供方便快捷的数据采集方案,通过“无埋点SDK”无需开发接入即可获取行为数据,通过“可视化圈选”打通行为与业务数据,提供更加丰富的分析场景。

    主要职责:

    1,原生全埋点:使用runtime交换UIcontrol、UITableView、UIGestureRecognizer等类的原生方法实现全埋点采集;使用插件化设计思想供业务方选择采集事件类型;实现集团二方库SCCModule的协议达到可模块化调用;使用FMDB存储采集数据;
    2,SDK支持RN:实现RCTBridgeModdule协议,导出采集方法给rn调用。采集方法里面使用原生全埋点SDK进行数据同步。
    3,可视化圈选:原生圈选时,通过用户点击时拿到点击的point,再通过keywindow的hitTest:withEvent:方法可以获取到响应的view,从而获取到view的相关属性;h5圈选时通过KVO监听webview的URL发生改变,再同步到前端。
    4,生成framwork,发布podspec到企业repo并输出接入文档,与客户联调问题。

  • 超级签名

    超级签名是基于苹果个人开发者账号提供的签名服务,用户通过Itms-service的方式就可以安装ipa。由于公司的游戏包有分包的需求,市面的上的超级签无法满足我们的需求,于是研究相关资料自己实现了一套,全部代码使用ruby语言编写。

    主要职责:

    1,编写配置文件.mobileconfig用来获取用户设备的UDID。
    2,熟悉spaceship封装的AppStore Connect API和Developer Portal API,生成描述文件,注册UDID等。
    3,使用fastlane工具中的cert类,创建私钥并生成证书。
    4,使用sign类对ipa进行签名。
    5,使用rubyzip进行分包,并上传ipa到阿里云oss,供用户下载。

  • KK体育App(竞彩之家)

    主要职责:

    1,框架搭建及后续版本维护。
    2,红包模块的开发、使用svg动画。
    3,采用无痕埋点和代码埋点结合,优化之前的埋点解决方案。
    4,赛事详情采用webview和原生结合的开发模式,熟悉js与OC交互,解决oc和h5同步传递数据的问题,cookie保存注入。
    5,接入bugly,并在迭代版本中不断降低崩溃率。
    6,使用JSPatch作为热更新解决方案,指导小伙伴使用和编写js代码,通过下发js代码做到动态修改bug。
    7,使用Apple Configurator2生成描述文件,作为用户找回app下载地址的方式,防止用户流失。

  • 嗨吃宝宝App

    嗨吃宝宝是社交新零售模式下的电商平台。该项目采用MVC的设计模式,主要MJExtension、Masonry等三方库,使用基于NSURLSession封装的网络库。

    主要职责:

    1,首页界面的搭建:首页采用自定义装修模块,运营在工作台可以选择更换首页风格,后台返回对应的模块信息。主体是采用collectionView嵌套collectionView的方案,通过自定义继承自UICollectionViewFlowLayout的子类并重写prepareLayout方法来布局。
    2,订单详情页面采用masonry自动布局显示SKU信息。
    3,对微信sdk二次封装,暴露出登录和分享小程序的接口,更快速接入。
    4,CI部署。

  • 美美颜选App

    美美颜选是基于医美行业的短视频社交平台。

    主要职责:

    1,对视频播放、音视频采集、美颜特效等所使用的SDK进行选型,对比市面上的短视频SDK厂商,七牛云、阿里云、腾讯云、相芯科技等,通过查看接口文档、demo做出解决方案。

  • KK电竞App

    电竞是一个供玩家一起游戏一起开黑的平台,可以在语音房实时音频交流。

    主要职责:

    1,负责聊天室群消息的展示,集成融云实时音视频SDK ,对聊天室群消息封装,通过delegate将消息转发到其他类。
    2,负责礼物模块的开发,礼物动效的呈现。
    3,负责直播间玩法的开发,如大转盘,拼手速等。
    4,app内购的开发。
    5,独立对app的所有模块进行维护,线上问题的处理,腾讯云的客服对接等