朱琳



电话:17602299297 · 邮箱:frankzhu233@gmail.com · 博客:julindada.github.io

个人信息

  • 性别:男

  • 出生日期:1997.07

  • 求职意向:后端开发工程师(包括但不限于Java)

教育经历

  • 学士,天津科技大学,计算机科学与信息工程学院,计算机科学与技术专业,2015.9~2019.6

个人能力及特长

  • 大学主修基础课程:数据结构、算法、计算机网络、操作系统。(熟悉TCP头的数据,以及各个字段的意义,包括seq计算方式、RST攻击原理、SYN flood,拜读过《TCP/IP详解》的TCP章节,但因本人技术有限还未完全理解)
  • 开发语言基础:熟练掌握Java、JVM、Java多线程、设计模式,阅读过部分JDK源码,了解Python(Flask框架)、Shell脚本
  • 分布式:了解Paxos、Raft一致性算法,分布式思想和解决问题的方法
  • Web开发:掌握Spring/SpringMVC/ Mybatis/Spring boot开发使用。了解tomcat、nginx、RPC框架、ElasticSearch的使用,Kafka的使用和持久化原理。
  • 前端(包括移动端):掌握Bootstrap、jQuery、Vue等前端框架的使用,了解kotlin以及Anko库开发Android
  • 数据库相关:掌握MySQL的InnoDB存储引擎、了解Redis底层原理、分布式数据库TiDB及其技术内幕
  • 版本管理和自动构建工具:有Svn/Git基础,会使用maven、gradle
  • 操作系统:Ubuntu/Debian/CentOS。熟悉常用Linux命令和Linux思想
  • Geek精神:非常喜欢学习新技能/钻研技术/探究技术的原理/有Web安全基础/喜欢玩Linux(比如vim、tmux等终端神器)/虽然暂时技能树广度不足,但学习加速度很大
  • 经济学、金融学:对用经济学原理解释社会现象、经济现象感兴趣。了解金融基础知识、信贷基本流程和部分信贷形式

工作经历

  • 网易,有道精品课产品部-研发组,Java开发工程师,2019.02~至今

    ​ 负责精品课相关业务的研发。主要涉及:精品课 App 首页数据推送;提高拉新、曝光成单率等需求开发;课程伴学数据服务开发;以及日常需求中会伴随着代码或服务重构以提升代码可读性、服务扩展;To C 业务还需要保证接口响应效率,即通过压测和 arthas 查看方法响应时间,然后优化代码。

  • 京东数科/京东金融,信贷与对公研发组,Java开发工程师,2018.09~2019.01

    ​ 负责部门核心项目-企业融资项目开发,熟悉了主要的信用贷流程,包括授信/提款/还款流程开发。

    ​ 还了解了分布式相关知识,包括分布式调度、分布式存储、技术选型等,并且现在还在持续学习分布式。

项目经历

  • 精品课电商服务-首页数据投放代码重构 / Java后端开发 / 2019.11

    ​ 精品课 App 首页数据投放有20多种投放类型,缓存从数据库拉取数据的代码长达50多行,为了方便后续投放类型的扩展、以及提升代码可读性,我单独拿出时间将该模块重构。

    ​ 将每个模块从数据库拉取数据的代码拆分,使用策略模式和工厂模式,传入不同类型的参数,返回不同类型的 service bean 。

  • 精品课电商服务-学呗商城 / Java后端开发 / 2019.09~2019.10

    ​ 用户通过添加课程评论、老师评价的方法赚取虚拟币(即精品课App内虚拟币,简称学呗),建立一套可扩展的学呗商城,其中物品名称、价格、出售状态都考虑到后续接入其他商品,如:优惠券、实物等。

    ​ 首次迭代过程中一个用户只能用一个有使用期限的商品,又考虑到后续实物等一个用户可以有多个商品,用户权限列表内 productId 和 userId 不能使用联合唯一索引,便使用 Redis 自制简易分布式锁解决。由于目前学呗商城的用户量并不大,所以分布式锁、数据一致性等可能在高并发下出现的问题都还未解决,但在代码上已经预留,方便快速切入解决该问题的代码。

  • 精品课电商服务-课程评论 / Java后端开发 / 2019.07~2019.08

    ​ 升级迭代售前课程详情页的评价模块,更多地外化出用户学习效果。其形式类似于淘宝的商品评价页。

    ​ 由于是迭代的旧功能代码耦合度较大,并且改动比较大,所以将不同评论模块分开封装,尽量减小每个操作的粒度,方法实行单一职责,虽然代码量多了,但可读性有明显提升。

    ​ 开发通过评论标签(即评论时可选多个已准备好的短语标签)筛选评论时,由于使用 MySQL-InnoDB 的倒排索引对中文支持并不好,当时选择了 Elasticsearch ,还涉及到分页问题,采用了通过设置 commentId = the last commentId 的 search-after 方法。

  • 企业融资系统 / Java后端开发 / 2018.10~2019.01

    ​ 该系统是我在京东参与的一个企业融资项目,从立项到第三期需求上线,我全程参与,该系统是对B端信贷中台的第一个模型(包括数据模型)。将来在这个系统的基础上会建立一个业务中台。

    ​ 该项目使用了Spring、Spring MVC、Mybatis等框架,MySQL使用的是InnoDB存储引擎,其中通RPC框架解除系统耦合、分发系统压力(个人理解)。

    ​ 在该项目中我学到的技能:RPC框架的使用(即消费者/生产者)、Redis数据结构和使用、InnoDB存储引擎使用的一次实战、分布式系统思维(例如,系统低耦合、高可用等)。

    ​ 开发过程中的思考:数据库索引、唯一索引的设计方式。RPC调用通过JSON传参降低项目模块之间耦合性,提高可扩展性。通过负载均衡、定时任务设计、代码的时间空间复杂度分析等提高效率。包括提款、还款业务的原子性设计问题。

个人总结

​ 从不认为哪种技术很重要,重要的是思想,或者是解决问题的方法,这些方法的修改/组合可能以后会解决一个或多个问题。一个很简单的例子,TCP的可靠性使其繁重,那么基于UDP的这种可靠性为什么不能在应用层,根据业务定制呢?这里除了应用到TCP实现可靠性的方法,还有一种分层的思想,这种思想的应用我大概也能说一堆。那么如何做到修改/组合这些思想?需要的是软实力/学习力,正好我具备,且在不断学习,而你也需要这样的人。