V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lmshl
V2EX  ›  求职

10 年资深全栈、架构求职 - 上海

  •  2
     
  •   lmshl · 2023-01-26 12:54:16 +08:00 · 6255 次点击
    这是一个创建于 665 天前的主题,其中的信息可能已经有所发展或是发生改变。

    联系方式

    • 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 版)

    我是 TypeORMrouting-controllers 的早期贡献者。

    团队成员:3

    项目业绩:承载早期 300 个租户

    技术背景:NodeJS 、TypeScript 、全注解 WebFramework

    技术亮点:

    • 从 TypeScriptCompiler 的 AST 中提取注解,自动生成 OpenAPI 文档,包含 SchemaValidation
    • 基于 async_hooks 重建"异步函数"的上下文:调用栈对开发者定位错误现场非常重要,而 NodeJS 运行时没有记录异步调用的栈,为开发者带来诸多不便。幸运的是 NodeJS 8.1 以后新增特性 async_hooks 有能力构建一个异步调用树,使得异步调用栈可以被恢复出来,为错误跟踪提供极大方便。
    • 奠定 Multi-Tenancy 系统数据隔离的架构基础

    River

    内部 Change Data Capture 中间件,设计为解析 PostgreSQL 的事务预写日志(WAL),写入 ElasticSearch / Kafka 供下游数据服务分析消费。

    团队成员:3

    技术背景:基于数据库日志原理,使用 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 月 )

    学习

    技能词

    以下均是我熟练使用的技能

    • 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
    第 1 条附言  ·  2023-01-26 13:33:29 +08:00

    我最擅长的应该是响应式(Reactive),以及并行系统编写。

    近几年主要做 JVM 上的开发,不挑语言,Java、Kotlin 等都可以写,同时也精通 NodeJS 和 React 前端。

    Rust 项目经验虽然不多,但也早已过了生存期,可以独立开发出自己需要的功能不需要他人帮助。

    60 条回复    2023-08-08 19:13:01 +08:00
    idragonet
        1
    idragonet  
       2023-01-26 13:52:55 +08:00
    “上海穰川信息技术有限公司(麦穗人工智能) ” 做了这么久 ,挺好奇为什么想离开?
    Hilong
        2
    Hilong  
       2023-01-26 15:00:42 +08:00
    大佬简历感觉写的挺好的. 有一点小小的建议.你这个期望职位让人感觉有点摸不准,你的意思是做一线开发也可以,带团队做架构师都 ok 的意思是嘛.感觉你这个需要猎头帮你找一找了,这种坑感觉比较少
    janus77
        3
    janus77  
       2023-01-26 15:07:37 +08:00 via iPhone
    关注一下大佬的职业规划路线
    xieren58
        4
    xieren58  
       2023-01-26 15:09:57 +08:00
    创业吧, 这环境, 找工作估计是比较难了.
    lmshl
        5
    lmshl  
    OP
       2023-01-26 15:57:29 +08:00
    @Hilong 十分不想带团队,就想写一辈子代码,然后不挑语言平台。
    我对自己的定位就是软件工程师,而不是特定语言的码农。
    ixcode
        6
    ixcode  
       2023-01-26 15:59:34 +08:00
    写 README 是个好习惯
    unregister
        7
    unregister  
       2023-01-26 16:25:28 +08:00
    大佬,之前你们公司加班情况怎么样?
    lmshl
        8
    lmshl  
    OP
       2023-01-26 17:01:19 +08:00
    @unregister 我是几乎不加班的,其他同事按需加班,做业务的同事可能加班挺多的。
    cgcs
        9
    cgcs  
       2023-01-26 17:46:01 +08:00
    这履历,在上海,啥薪资水平了~~~
    chaleaochexist
        10
    chaleaochexist  
       2023-01-26 17:46:49 +08:00
    简历写挺好 学习了.
    NathanInMac
        11
    NathanInMac  
       2023-01-26 20:14:46 +08:00
    @cgcs 楼主的公司比较不出名所以比较难直接的类比。我假设楼主所列技能都过硬,沟通良好,不带人但是能做代码审核,架构设计和输出文档的话,一百万没问题
    ebony0319
        12
    ebony0319  
       2023-01-26 21:26:24 +08:00 via iPhone
    简历写得很棒,学习了
    fyooo
        13
    fyooo  
       2023-01-26 22:35:55 +08:00 via iPhone
    楼主好棒👍帮顶一下

    上海外企机会算是比较多的,看看 v 友有没有内推
    cgcs
        14
    cgcs  
       2023-01-26 23:34:25 +08:00
    @NathanInMac 嗯,了解了。谢谢
    lmshl
        15
    lmshl  
    OP
       2023-01-26 23:38:32 +08:00
    @NathanInMac 过奖了,最近几年的这份工作离着年薪百万,达成率只有 50%多一点。
    lmshl
        16
    lmshl  
    OP
       2023-01-26 23:39:44 +08:00
    @fyooo 目前也是主攻口语,在积极看外企机会,之前也拿过另一家外企 offer ,全程英文面试的,和老外尬聊俩小时
    lmshl
        17
    lmshl  
    OP
       2023-01-26 23:40:18 +08:00
    @chaleaochexist
    @ebony0319
    谢谢捧场
    lsiufD
        18
    lsiufD  
       2023-01-26 23:59:55 +08:00
    楼主厉害
    wdwwtzy
        19
    wdwwtzy  
       2023-01-27 11:04:00 +08:00
    大佬还需要求职吗 不是应该很多内推之类的
    lmshl
        20
    lmshl  
    OP
       2023-01-27 11:08:42 +08:00
    @wdwwtzy 不存在的,该八股文+lc 伺候一项也不会落下
    wdwwtzy
        21
    wdwwtzy  
       2023-01-27 11:16:38 +08:00
    @lmshl 我觉大佬的圈子肯定很高端了,圈子里找一找比在这广撒网要好一些吧?
    lmshl
        22
    lmshl  
    OP
       2023-01-27 11:46:59 +08:00
    @wdwwtzy
    朋友推荐面过腾讯,薪资没谈拢,加面后定级薪资还是比现在低就没去。
    另一个朋友推过字节,一轮游,lc medium 写不出来 + 默写字典树有瑕疵最后挂了。
    自己面过几家初创外企全栈,这个倒是薪资有涨。

    总之,圈子过于小众也不好,大佬们都在国外,要么我润出去,要么留在国内接受现状。
    ximigou007
        23
    ximigou007  
       2023-01-28 14:14:37 +08:00
    大佬看着履历挺强的佩服,scala 国内做后端开发的企业挺少的吧
    lmshl
        24
    lmshl  
    OP
       2023-01-28 16:59:12 +08:00
    @ximigou007 谢谢捧场。
    全球范围内有不少,国内确实很少,Hulu 、TubiTV 有在国内招人,摩根也有不少 Scala 代码,北京也有位清华教授在用纯函数式做一些大数据医疗方面的项目。但总体看下来国内 fp 生存环境挺差的。
    house600
        25
    house600  
       2023-01-29 10:21:58 +08:00
    求问大佬,reactive 的使用场景有哪些?该怎么深入?一直停留在入门阶段,实际项目不知道怎么切入,望指点
    lmshl
        26
    lmshl  
    OP
       2023-01-29 10:44:33 +08:00
    @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 库以后,迁移到其他语言、生态都不会花太大功夫,因为基本语义上大家都是一样的。
    lmshl
        27
    lmshl  
    OP
       2023-01-29 11:33:51 +08:00
    @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 。
    ximigou007
        28
    ximigou007  
       2023-01-29 18:32:27 +08:00
    @lmshl 纯 FP 对团队要求太高了,感觉很难形成气候
    lmshl
        29
    lmshl  
    OP
       2023-01-29 18:48:57 +08:00
    @ximigou007 其实要求不高,如果让我自己招人的话,给我一年时间,我就能带出一只纯 FP 熟练工的团队来。
    不需要任何前提条件,不需要清北复交藤校还是 985/211 ,我可以从大专里选拔。
    也不需要什么大公司工作履历和手撕 leetcode hard ,有这些背景可能更难带。
    就让我自己出题面试,应届生一年熟练 FP 搬砖毫无压力。
    lmshl
        30
    lmshl  
    OP
       2023-01-29 18:51:56 +08:00
    @ximigou007 因为写 FP 代码依然是写代码,不是造火箭。
    需要的是在正反馈指导下的反复练习。
    写够一万行生存期就过去了,写够十万行妥妥的熟练工。
    ximigou007
        31
    ximigou007  
       2023-01-31 10:19:03 +08:00
    @lmshl 佩服 不过大专的同学反复练习是能写一些,理论只是要补的挺多的,在我的工作经验中 能聊上 FP 的候选人和开发都挺少的 就很小一个圈子写 FP 当然我自己的 FP 的水平也比较有限 只是大致了解一些东西 实践中也主要是
    lmshl
        32
    lmshl  
    OP
       2023-01-31 13:30:53 +08:00
    @ximigou007 不会太多,只要具备基本素养。(比如我给他一个 wiki 链接,他能在 24-48 小时内对着伪代码实现出来,期间随意查阅任何资料,请教任何朋友,但最终面试阶段我会问他每一行代码的具体作用)
    然后两本书《 SICP 》+《 Scala 函数式编程》边看边写,基本上两本书看个 50% 内容就入门函数式了,剩下的能力在项目中锻炼即可。

    我常用的一个离线面试问题是在 JS 中实现基于 Promise 的 Semaphore 。
    lmshl
        33
    lmshl  
    OP
       2023-01-31 13:36:31 +08:00
    @ximigou007 能把这问题离线解决并在时限内解释出每一行代码,不管是否有场外援助。我都认为他具备基本素养,这可比现场手撕 lc hard 太多了。
    ximigou007
        34
    ximigou007  
       2023-01-31 13:52:08 +08:00
    @lmshl 想问下你考虑米哈游的后端 或者前端的岗位吗~
    ximigou007
        35
    ximigou007  
       2023-01-31 13:56:45 +08:00
    @lmshl 挺惭愧的我算法水平比较一般,能把 lc 刷的溜溜的 也是不太容易的 当然解决实际问题是综合能力的体现
    lmshl
        36
    lmshl  
    OP
       2023-01-31 15:38:09 +08:00
    @ximigou007 如果有机会的话请推荐,十分感谢💕
    ximigou007
        38
    ximigou007  
       2023-01-31 18:09:13 +08:00
    @lmshl [email protected] 这个是我的邮箱 方便的话 发我一下简历 我把相关的岗位发你 你看下合适我再推荐
    lmshl
        39
    lmshl  
    OP
       2023-01-31 19:15:13 +08:00
    @ximigou007 发到这个邮箱了,谢谢推荐

    @ChevalierLxc 在这个链接上直接投递了,谢谢推荐
    ximigou007
        40
    ximigou007  
       2023-02-01 10:02:33 +08:00
    @lmshl 我看了下邮箱没有收到你的简历 能麻烦再看下是否正常发送了吗。
    chenxiaoxi322
        41
    chenxiaoxi322  
       2023-02-01 11:47:30 +08:00
    找工作可以联系一下我
    house600
        42
    house600  
       2023-02-01 14:06:06 +08:00
    @lmshl 这个场景倒是能理解,但是 source 的加载,看起来还是命令式的。
    lmshl
        43
    lmshl  
    OP
       2023-02-01 14:29:51 +08:00
    @ximigou007
    昨晚确实发送成功了,刚刚我又重新发送了一次,请再查收一下
    ChevalierLxc
        44
    ChevalierLxc  
       2023-02-01 15:45:19 +08:00
    @lmshl 好的,这是我一个部门隔壁组的职位,内推人可能不是我。
    ximigou007
        45
    ximigou007  
       2023-02-02 11:07:16 +08:00
    @lmshl 好的 我收到了 ~
    ximingren
        46
    ximingren  
       2023-02-07 15:14:44 +08:00 via Android
    牛逼的
    roundgis
        47
    roundgis  
       2023-02-28 00:27:17 +08:00 via Android
    u of east london

    當年去過一次 有個同學在那裡上學

    恰好那天罷工 我倒了幾次公車才到

    現在好像和其他大學合併了?
    lmshl
        48
    lmshl  
    OP
       2023-03-02 00:05:38 +08:00 via iPhone
    @roundgis 没有合并
    ymmud
        49
    ymmud  
       2023-03-02 08:32:51 +08:00
    @lmshl 大佬啥进展了
    grace666
        50
    grace666  
       2023-04-16 21:55:29 +08:00 via iPhone
    你好 请问您现在还 open 吗?我这边要寻找 lead 可以看下吗? 如果感兴趣的的话 请邮箱我 我们细聊 globaleur 点 com 斜杠 china-office
    yudoo
        51
    yudoo  
       2023-07-11 10:09:51 +08:00
    找到了吗?还是润了
    lmshl
        52
    lmshl  
    OP
       2023-08-06 20:57:02 +08:00
    @yudoo 谢谢,已经找到了,现在写 Rust
    yudoo
        53
    yudoo  
       2023-08-07 14:12:49 +08:00
    @lmshl #52 厉害,是远程的吗, 我看你 github 连续很多年提交代码, 这个是找的开源做的还是自己学习练手的呀
    yudoo
        54
    yudoo  
       2023-08-07 14:16:40 +08:00
    @lmshl 另外可以问下博主的 bg 吗,学历什么的
    yudoo
        55
    yudoo  
       2023-08-07 14:20:45 +08:00
    额看到了 伦敦大学的本科生😲
    lmshl
        56
    lmshl  
    OP
       2023-08-07 23:16:41 +08:00
    @yudoo 专升本,2012 年大专毕业,这个是后来升本的学校
    yudoo
        57
    yudoo  
       2023-08-08 10:18:12 +08:00
    @lmshl #56 啊太厉害了。 我是双非土木,然后转行做这个有四五年了, 最近想着提升下准备考个非全计算机或者留学跨考 cs ,楼主可以给些意见吗
    yudoo
        58
    yudoo  
       2023-08-08 10:18:43 +08:00
    考研也要考 408 ,感觉难度还是不小的
    lmshl
        59
    lmshl  
    OP
       2023-08-08 14:35:45 +08:00
    @yudoo 这就触及到我的知识盲区了,我从来没规划过考研什么的,专升本还是我老婆逼我去读的。
    而且我考试能力完全不行,患有学渣病( ADHD )
    yudoo
        60
    yudoo  
       2023-08-08 19:13:01 +08:00 via iPhone
    哈哈,好的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   960 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 21:22 · PVG 05:22 · LAX 13:22 · JFK 16:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.