联系方式
- Email:
node -e "console.log(atob('bWluZ3lhbmc5MUBxcS5jb20='))" - 微信:
node -e "console.log(atob('bWluZ3lhbmc5MQ=='))"
个人信息
- 工作年限:10 年
- Github:https://github.com/mingyang91
- 期望职位:资深程序员、架构师、Scala 开发、Rust 开发
- 期望城市:上海
- 学校:University of East London - BSc Computer Science
简介
- 精通 Scala 与 TypeScript ,同时熟练使用 Rust 与 Kotlin 。
- 精通 DevOps ,包括 Kubernetes 与 AWS 。
- 精通 Reactive Stream ,异步与并发编程。持续学习现代编程语言与特性,熟练在项目中使用多种语言开发。
- 精通构建云原生系统。
- 有多种项目经验,且近 11 年一直从事一线编码工作。
- 社区分享:2020 年 9 月 Scala Meetup Speaker 《 ZIO 入门分享》。
- 在数学 /计算机科学 /前端 /后端方面基础知识扎实。
- 兴趣:近几年对 PLT / 分布式 / 云原生 / 高性能原生软件 / 函数式编程 / 数学 感兴趣。
项目经历
1. 高校邀请学术项目
检测报告识别软件
受复旦大学放射医学研究所邀请开发基于机器学习的自动文档识别桌面软件,该项目界面使用 Kotlin 开发,可运行在 Windows 、MacOS 、Linux 三大平台; SVM 模型部分使用 Python 开发。可自动识别 PDF 文档页面类别并重新组织检测报告,使其符合国家标准《放射卫生技术服务机构管理办法》。
检测报告生成管理软件
受复旦大学放射医学研究所邀请开发文档管理系统 Web 软件。该项目使用 Scala3 + React 开发,内置公式,可根据录入指标自动完成结果计算和评估是否符合检测标准,并生成国家标准检验检测报告。
体素模型转换软件
受复旦大学放射医学研究所邀请开发模型转换软件。以国际放射防护委员会 (International Commission on Radiological Protection) 所发布的成人计算参考体模( 2009 )和儿科计算参考体模( 2020 )为标准,本软件将以上模型转换为 Monte Carlo 粒子模拟软件 Fluka 所支持的输入格式,以计算不同当量辐射水平下,高能粒子束穿透人体时所产生的粒子衍射范围。
2. 上海穰川信息技术有限公司(麦穗人工智能) ( 2016 年 4 月 ~ 至今 )
基础设施建设
为公司搭建一整套基础设施,包括云端与本地的软硬件平台等,其承载公司所有业务与机器学习的计算、存储、调度、监控任务;同时带领出一支精通 kubernetes 的开发团队。
人才智能平台核心中间件
人才智能平台是穰川的核心对外业务系统,提供人才招聘全流程管理,以及简历收录、解析、企业内人才盘点与流转、人选与职位的相互推荐与搜索等基于 AI 的智能功能。本项目在数据变更时生产事件以驱动下游机器学习流水线完成分析功能。我在项目中:
- 设计基于事件驱动的整套系统架构。
- 指导同事完成用户管理模块、注册、登录、集成第三方登录等功能。
- 技术预研与疑难问题调查,引入 Cassandra 、Knative 、Serverless 等现代技术并跟踪落地到项目中。
- 提供对资源管理的架构设计,防止部分恶意请求高频访问,干扰其他租户正常运行,降低系统成本。
- 带领资深同事完成核心中间件开发。
- 集成各大招聘网站以及北森、谷露等多种数据源渠道。
- 成功交付京东方定制系统项目。
项目业绩:
- 分布式高可用:本项目根据访问压力,可部署超过 100 节点,分布式存储数百亿 K/V 数据,无单点故障,无主节点不需要主从切换。
- 高吞吐低延迟:部署 3 个微型节点即可达到数千 QPS 的吞吐量,数据取回与数据失败变更的延迟极低,近似访问内存。数据变更会将事件持久化至 Cassandra 集群。
- 事件溯源:系统中的数据可回溯至系统建立以来的任意时间点,可永久留存审计日志。
- 关系查询便捷:拥有 GraphQL 的读取端。
技术亮点:
- 完全贯彻 CQRS/Event Sourcing 思想
- 编写解释器,可以根据数据的 Schema ( Open API) 生成 GraphQL 类型定义与关系定义,根据图的节点与关系进行多跳查询。
- 集成 Open Telemetry 分布式全链路追踪,横跨分布式节点通信、Kafka 、Knative 等众多中间件与内部其他服务。
- 开放众多指标供 Prometheus 采集,应用具有非常优秀的可观测性。
招乎招聘自动化系统( Scala 版)
招乎是穰川的上一代核心对外业务系统,实现人才招聘全流程管理与 AI 增强功能。
本项目从 NodeJS 迁移而来,基于 Scala Playframework,是函数式编程、纯异步、面向类型建模(代数数据类型)的落地实践,具有 CPU 占用率低、不依赖反射、业务状态的迁移过程清晰等优点,特别是不会在运行时发生 NullPointException。
团队成员:6
项目业绩:
- 目前这个系统承载三千多个租户。
- 在 100QPS 期间的 CPU 占用仅需 0.5 核心。
技术亮点:
- 从 Future 迁移至 ZIO,替换整个系统的底层异步对象。高峰期 CPU 从 10 核心降低至不到 1 核心,并以此在 Scala 社区做技术分享。
- 基于
[Circe]( http://circe.io/)、[Shapeless]( https://github.com/milessabin/shapeless)的数据结构编解码器。它是 ADT 、Generic 的生产环境应用,不依赖反射,将自动生成编解码器这一过程提前至编译期。与常见fastjson方案相比,大部分 Bug 与漏洞都会被编译器成功拦截。 - Multi-Tenancy:系统同时服务多个租户,且保证租户间数据是物理隔离的。
- Webhook 机制:系统内业务对象变更时,会将事件数据推送至由客户设定的 URL 。同时还记录客户服务器的响应结果,并在客户服务器发生错误时重试发送,避免客户服务器宕机或故障而导致事件数据无法送达。
- 资源上限与计费
- Stream:大量应用 Reactive-Stream 技术
招乎招聘自动化系统( NodeJS 版)
我是 TypeORM、routing-controllers 的早期贡献者。
团队成员:3
项目业绩:承载早期 300 个租户
技术背景:NodeJS 、TypeScript 、全注解 WebFramework
技术亮点:
- 从 TypeScriptCompiler 的 AST 中提取注解,自动生成 OpenAPI 文档,包含
Schema、Validation - 基于
async_hooks重建"异步函数"的上下文:调用栈对开发者定位错误现场非常重要,而 NodeJS 运行时没有记录异步调用的栈,为开发者带来诸多不便。幸运的是 NodeJS 8.1 以后新增特性 async_hooks 有能力构建一个异步调用树,使得异步调用栈可以被恢复出来,为错误跟踪提供极大方便。 - 奠定 Multi-Tenancy 系统数据隔离的架构基础
River
内部 Change Data Capture 中间件,设计为解析 PostgreSQL 的事务预写日志(WAL),写入 ElasticSearch / Kafka 供下游数据服务分析消费。
团队成员:3
技术背景:基于数据库日志原理,使用 Akka Stream 等响应式流技术构建的健壮中间件。
技术亮点:
- Parser: 组合子
[parser combinator]( https://github.com/scala/scala-parser-combinators)解析逻辑日志 - Reactive Stream: 基于 akka stream 流式日志处理,根据下游压力自动反馈上游降速。经过几代演进后,具备强大的错误自恢复能力。
招乎浏览器插件
项目目标为,设计一套客户端插件,在不提供密码的前提下,帮助用户自动从网站收录数据。 具体实现为在插件内实现代理协议,所有客户端组成代理池,达到不会被目标网站基于 IP 、账户的反爬策略误伤的目标。
团队成员:5
技术亮点:
- 使用 TypeScript 类型描述的协议
- RxJS + WebSocket 组成的代理,具有流式实时响应的能力。且代码量少,核心代码 + 注释仅 1k 行。
命令行工具软件
-
解压工具
这是个并行多格式解压工具,它能充分利用多核处理器与 NVMe 硬盘的读写性能。在面数十万压缩包,总体积 1.7TB 的数据时,仅使用 4 小时就解压缩了所有数据包。
以及应用 GraalVM Native Image 技术的二进制分发版,在云原生时代做到毫秒时间启动,缩小资源占用。
-
数据迁移工具
并行 ETL 数据迁移工具,使用 Rust 编写,可以将数据从 RDBMS 迁移至 Cassandra 。
-
事件连接器 Sidecar
使用 Rust 编写的 Kafka 消费者 CLI ,监听 Kafka topic 并转发数据到参数指定的 HTTP 端口。
3. 东软载波 ( 2014 年 9 月 ~ 2016 年 3 月 )
带领前端团队(3 人),实践 NodeJS 大前端
4. 青岛日谷信息技术服务有限公司与海尔软件 ( 2012 年 2 月 ~ 2014 年 8 月 )
学习
- 组合数学 证书
- Structure and Interpretation of Computer Programs ,"SICP"
- 操作系统 rCoreOS on RISC-V
技能词
以下均是我熟练使用的技能
- Backend:NodeJS / Akka / Next.JS / Scala / Prisma
- Language:Scala / Rust / Kotlin / TypeScript / Java
- Framework: Akka Stream / RxJS / React
- Tools: Cats / GraalVM / gRPC / ZIO
- Database:PostgreSQL / Cassandra / Redis / ElasticSearch
- DevOps:AWS / Kubernetes / Telemetry / Prometheus / Kafka / Serverless / Istio
我最擅长的应该是响应式(Reactive),以及并行系统编写。
近几年主要做 JVM 上的开发,不挑语言,Java、Kotlin 等都可以写,同时也精通 NodeJS 和 React 前端。
Rust 项目经验虽然不多,但也早已过了生存期,可以独立开发出自己需要的功能不需要他人帮助。
|
1
idragonet 2023 年 1 月 26 日
“上海穰川信息技术有限公司(麦穗人工智能) ” 做了这么久 ,挺好奇为什么想离开?
|
|
2
Hilong 2023 年 1 月 26 日
大佬简历感觉写的挺好的. 有一点小小的建议.你这个期望职位让人感觉有点摸不准,你的意思是做一线开发也可以,带团队做架构师都 ok 的意思是嘛.感觉你这个需要猎头帮你找一找了,这种坑感觉比较少
|
|
3
rb6221 2023 年 1 月 26 日 via iPhone
关注一下大佬的职业规划路线
|
|
4
xieren58 2023 年 1 月 26 日
创业吧, 这环境, 找工作估计是比较难了.
|
|
6
ixcode 2023 年 1 月 26 日
写 README 是个好习惯
|
|
7
unregister 2023 年 1 月 26 日
大佬,之前你们公司加班情况怎么样?
|
|
8
lmshl OP @unregister 我是几乎不加班的,其他同事按需加班,做业务的同事可能加班挺多的。
|
|
9
cgcs 2023 年 1 月 26 日
这履历,在上海,啥薪资水平了~~~
|
|
10
chaleaochexist 2023 年 1 月 26 日
简历写挺好 学习了.
|
|
11
NathanInMac 2023 年 1 月 26 日
@cgcs 楼主的公司比较不出名所以比较难直接的类比。我假设楼主所列技能都过硬,沟通良好,不带人但是能做代码审核,架构设计和输出文档的话,一百万没问题
|
|
12
ebony0319 2023 年 1 月 26 日 via iPhone
简历写得很棒,学习了
|
|
13
fyooo 2023 年 1 月 26 日 via iPhone
楼主好棒👍帮顶一下
上海外企机会算是比较多的,看看 v 友有没有内推 |
|
14
cgcs 2023 年 1 月 26 日
@NathanInMac 嗯,了解了。谢谢
|
|
15
lmshl OP @NathanInMac 过奖了,最近几年的这份工作离着年薪百万,达成率只有 50%多一点。
|
|
17
lmshl OP |
|
18
lsiufD 2023 年 1 月 26 日
楼主厉害
|
|
19
wdwwtzy 2023 年 1 月 27 日
大佬还需要求职吗 不是应该很多内推之类的
|
|
22
lmshl OP @wdwwtzy
朋友推荐面过腾讯,薪资没谈拢,加面后定级薪资还是比现在低就没去。 另一个朋友推过字节,一轮游,lc medium 写不出来 + 默写字典树有瑕疵最后挂了。 自己面过几家初创外企全栈,这个倒是薪资有涨。 总之,圈子过于小众也不好,大佬们都在国外,要么我润出去,要么留在国内接受现状。 |
|
23
ximigou007 2023 年 1 月 28 日
大佬看着履历挺强的佩服,scala 国内做后端开发的企业挺少的吧
|
|
24
lmshl OP @ximigou007 谢谢捧场。
全球范围内有不少,国内确实很少,Hulu 、TubiTV 有在国内招人,摩根也有不少 Scala 代码,北京也有位清华教授在用纯函数式做一些大数据医疗方面的项目。但总体看下来国内 fp 生存环境挺差的。 |
|
25
house600 2023 年 1 月 29 日
求问大佬,reactive 的使用场景有哪些?该怎么深入?一直停留在入门阶段,实际项目不知道怎么切入,望指点
|
|
26
lmshl OP @house600 随时随地都可以使用,任何可以流式处理的场景都可以用 reactive 来处理。
建议先把 map 、filter 、reduce 用熟练,然后根据你用的语言生态选 RxJS 、akka-stream 、kotlin flow api 、tokio stream 中的任意主流方案。 我在 kotlin compose 桌面项目中就在用 flow api 在 rust 写 cli 的时候就用 tokio stream 在写前端或者浏览器插件的时候就用 rxjs 但我主业是写 Scala 的,所以我对 Scala 生态的 Akka-stream 、fs2 、zio-stream 都比较熟悉,可以随意切换。 基本上你用熟了任何一个 stream 库以后,迁移到其他语言、生态都不会花太大功夫,因为基本语义上大家都是一样的。 |
|
27
lmshl OP @house600 举个例子,比如在编写大批量数据导出接口的时候
数据一次性加载到内存中再写入磁盘或者 HTTP Response 都是不合适的,因为数据量可能超过内存总量,这时候就必然要使用流式处理。 1. 这个场景中上游的 Source 是 JDBC connection ,设定 fetchSize 以后每次只会加载这个 batch 到内存中,也就是 Source(connection.selectWithFetchSize(用户列表)) 2. 根据业务决定是否需要 filter 或 transform ,是否还需要经过其他第三方微服务接口处理,也就是 Flow.filter(过滤隐藏用户).map(隐藏真实姓名).mapAsync(从其他服务获取用户额外信息) 3. 打包写入磁盘或通过 HTTP Response 发送,甚至还可以插入一些编解码与压缩算法,也就是 Sink.map(toJson).transducer(gzip).toFile(文件名) 整个过程编写下来是声明式编程,而不是传统命令式,同时也具备 Reactive 的基本优点,比如异步+背压,不会导致 OOM 。 |
|
28
ximigou007 2023 年 1 月 29 日
@lmshl 纯 FP 对团队要求太高了,感觉很难形成气候
|
|
29
lmshl OP @ximigou007 其实要求不高,如果让我自己招人的话,给我一年时间,我就能带出一只纯 FP 熟练工的团队来。
不需要任何前提条件,不需要清北复交藤校还是 985/211 ,我可以从大专里选拔。 也不需要什么大公司工作履历和手撕 leetcode hard ,有这些背景可能更难带。 就让我自己出题面试,应届生一年熟练 FP 搬砖毫无压力。 |
|
30
lmshl OP |
|
31
ximigou007 2023 年 1 月 31 日
@lmshl 佩服 不过大专的同学反复练习是能写一些,理论只是要补的挺多的,在我的工作经验中 能聊上 FP 的候选人和开发都挺少的 就很小一个圈子写 FP 当然我自己的 FP 的水平也比较有限 只是大致了解一些东西 实践中也主要是
|
|
32
lmshl OP @ximigou007 不会太多,只要具备基本素养。(比如我给他一个 wiki 链接,他能在 24-48 小时内对着伪代码实现出来,期间随意查阅任何资料,请教任何朋友,但最终面试阶段我会问他每一行代码的具体作用)
然后两本书《 SICP 》+《 Scala 函数式编程》边看边写,基本上两本书看个 50% 内容就入门函数式了,剩下的能力在项目中锻炼即可。 我常用的一个离线面试问题是在 JS 中实现基于 Promise 的 Semaphore 。 |
|
33
lmshl OP @ximigou007 能把这问题离线解决并在时限内解释出每一行代码,不管是否有场外援助。我都认为他具备基本素养,这可比现场手撕 lc hard 太多了。
|
|
34
ximigou007 2023 年 1 月 31 日
@lmshl 想问下你考虑米哈游的后端 或者前端的岗位吗~
|
|
35
ximigou007 2023 年 1 月 31 日
@lmshl 挺惭愧的我算法水平比较一般,能把 lc 刷的溜溜的 也是不太容易的 当然解决实际问题是综合能力的体现
|
|
36
lmshl OP @ximigou007 如果有机会的话请推荐,十分感谢💕
|
|
38
ximigou007 2023 年 1 月 31 日
@lmshl [email protected] 这个是我的邮箱 方便的话 发我一下简历 我把相关的岗位发你 你看下合适我再推荐
|
|
39
lmshl OP |
|
40
ximigou007 2023 年 2 月 1 日
@lmshl 我看了下邮箱没有收到你的简历 能麻烦再看下是否正常发送了吗。
|
|
41
chenxiaoxi322 2023 年 2 月 1 日
找工作可以联系一下我
|
|
43
lmshl OP |
|
44
ChevalierLxc 2023 年 2 月 1 日
@lmshl 好的,这是我一个部门隔壁组的职位,内推人可能不是我。
|
|
45
ximigou007 2023 年 2 月 2 日
@lmshl 好的 我收到了 ~
|
|
46
ximingren 2023 年 2 月 7 日 via Android
牛逼的
|
|
47
roundgis 2023 年 2 月 28 日 via Android
u of east london
當年去過一次 有個同學在那裡上學 恰好那天罷工 我倒了幾次公車才到 現在好像和其他大學合併了? |
|
50
grace666 2023 年 4 月 16 日 via iPhone
你好 请问您现在还 open 吗?我这边要寻找 lead 可以看下吗? 如果感兴趣的的话 请邮箱我 我们细聊 globaleur 点 com 斜杠 china-office
|
|
51
yudoo 2023 年 7 月 11 日
找到了吗?还是润了
|
|
55
yudoo 2023 年 8 月 7 日
额看到了 伦敦大学的本科生😲
|
|
58
yudoo 2023 年 8 月 8 日
考研也要考 408 ,感觉难度还是不小的
|
|
60
yudoo 2023 年 8 月 8 日 via iPhone
哈哈,好的
|
