-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathresume-2026
More file actions
111 lines (95 loc) · 8.65 KB
/
resume-2026
File metadata and controls
111 lines (95 loc) · 8.65 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
工作内容总结:
- 负责商家端相关服务业务开发、平台迭代、与线上问题Action治理
- 业务相关,申诉、会员、舆情、动态、批发分销,接入了大模型审批
- 对接过算法NER关键词竞品识别的功能。相关grpc调用,规则工程,整个流程
- 技术问题解决
- 舆情模型Redis大key治理
- 用责任链模式重构了申诉审核流程节点,并且可以配置
- 用多线程查询降低接口最大RT和平均RT
- 构建了一套策略模式,发送卡片通用构建上下文,重试和发送
- 构建了一套管道查询模式,能够处理查询过程中的各种内容
- 用AOP解决了复杂项目中对特定dubbo接口的拦截处理,比如特定bizType要补充对应的参数。可以直接拦截dubbo接口bean,可以通过dubbo filter实现,也可以通过涉及模式包装类解决
- 实现了一个故障注入工具,通过AOP、动态代理、dubbo filter对特定接口进行故障注入
- 开发流程
- 灰度、监控、巡检、异常
- Dubbo调用,gRPC调用,RPC调用,以及Dubbo接口调用的时候打包方式,用Gradle打包
- 开发规范,外部接口需要弱依赖,开发提供接口中稳定性的评估,比如提供给外部接口的QPS控制,权限控制
- 稳定性治理的指标,比如QPS、RT、内存指标
- 互联网行业客诉的重要性
- 客户端版本控制流程 https://www.woshipm.com/pd/6215103.html
- 互联网公司离线表的应用。很多场景可以用到离线表,不单单只是一个存储。比如要清理一批数据,或者统计一批数据,都可以借助离线表+消息的形式去处理。
- 业务知识
- 风控的体现和实现,比如登陆的滑块弹窗就是一种风控,账号被列入了风控名单,并且分类高中低三个等级和验证码名单
- 了解了分销和分帐的业务,以及演进,比如设置专供价,微信支付上也有这样的操作 https://pay.weixin.qq.com/doc/v3/merchant/4012067989
- 了解了动态流feeds流的设计和代码架构,设计理念,具体是店铺关注的动态流。了解了ugc相关的内容,比如动态这种类型就是UGC,店铺关注只做了H5的场景,没做客户端,客户端是UGC另外做的 https://www.cnblogs.com/Finley/p/16857008.html
- 了解了会员的业务,比如会员是一种优惠券
- 了解了埋点的设计,比如埋点是通过定义统一的元素和PageSn,并且结合AB实验和客户端版本控制来记录埋点信息;埋点确实是有后端埋点和前端埋点的概念,后端埋点是叫tracker,通过消息队列实现
- 了解了AB实验的基本概念
- 深刻认识到了反爬虫的重要性,下单的业务会有爬虫流量绕过前端接口进行操作,比如爬商品信息,爬下单获取二维码接口。所以后端需要做好校验
- 项目架构
- 知道了为什么要拆微服务,有一个业务服务400个实例,一天只能发2次版本,每次发版本都需要4个小时,所有人都在同一个项目里的同时,需要发版的次数还特别多。最后也采用了拆分服务的方式,增加开发效率
做了哪些事?
- 治理Redis大Key,场景是调用大模型分析接口,统计频次,把分析得到的关键字放到了Redis Set里面。改成了本地缓存
- 对接算法工程,进行模型灰度切换
- 处理排查特定上线之后的客诉
收获是什么
- 之前一直做增删改查CRUD样板项目,偶尔会引用一些新的组件用一下,然后有一些活动会有点QPS,比如慈善义卖,有一些方案可以自己设计,比如运营中心统计访问,图片压缩方案,竞拍出价,这些都能自己设计实现
现在能直面大量数据下存在的问题,比如灰度,之前从来没做过灰度,虽然灰度也是代码实现;还有一些新的项目框架模式,比如这种-api,熟悉了一些互联网组件,比如Dubbo,之前面试也问过聊不了解RPC框架。
- 针对这个公司,单独学了Gradle的使用
- 学了Dove接口文档使用流程
- 学了多线程的实际使用
- Executor的定义方式
- RejectedExecutionHandler的实际案例。普通情况设置抛弃策略,特殊情况线程池直接被关了就能触发抛弃策略。比如,定时任务线程池关了,要用serveless定时任务执行,不能用普通的java定时任务
- 动态线程池的作用和实现 https://dynamictp.cn/guide/introduction/background.html
- 线程池的使用场景,CPU密集还是计算密集,对响应时间和线程损耗的考虑不一样
- 线程池的基本参数有什么用,含义是什么
- 线程的状态,出现大量TIMED_WAITING、WATING是怎么回事,线程池销毁的时候对这种状态线程是怎么处理的
- 线程池参数调整原则,怎么理解和设置队列长度,CPU计算密集型,IO调用密集型的参数设置,以及调整参数的原则
- 线程池是使用LinkedBlockingQueue还是ArrayBlockingQueue,内部有技术文档,Linked阻塞队列容易造成假拒绝,因为来不及消费
- 学习了Processor策略模式的使用,以及结合在SpringBoot中@Autowired自动注入Bean的使用
- 深入了解了stream,并大量使用
- 解析stream构成,peek是中间操作,collect是终端操作,count是短路操作
- 并行流的实现
- 学了下Stream的peek操作
- 学习了rabbitmq和kafaka的区别
- 公司内部使用的是kafka改造的一个消息队列,可以用来回答用过哪几种消息队列
- 学习了流量染色
- tiger怎么把流量传到预发环境,请求头是怎么透传的
- 深入了解了Dubbo
- dubbo 基本用法,xml配置,一些参数使用比如timeout、check
- dubbo 相关SPI,dubbo是SPI的一种应用,还有其他SPI应用
- dubbo和dubbox、dubbo2.X和dubbo3.x区别
- dubbo、feign、RPC相关区别
- dubbo version 的应用,比如风控就通过设定 version,来实现同一个接口不同的功能,cr_version反爬 ,dp_version特定人群 ,g2核心基础业务
- dubbo 分组的应用,接入SPI的时候会用到分组,比如cargod/xxxxService,还有查询离线数据的时候会有分组dw_low/ForceCoreQueryService.queryLeastData、goodsth_low/ForceCoreQueryService.queryLeastData
- 深入了解了Java启动参数
- 使用 JFR 来排查容量压测导致集群性能恶化问题,其中优化了BeanInfo的缓存,涉及到反射和Java Bean内省
- 学习了做互联网项目监控的重要性
- 和大马的开发,碰到接口慢排查的时候,对方用SQLServer,排查接口RT一开始连概念都没有,然后也缺乏很多观测的系统
- 在pdd有各种维度的观测,基础的接口监测,服务监控,到数据库监控
- 看到了jdk8 -> jdk17升级的流程
- 需要同步升级 tomcat 8.x -> 9.x ,要修改启动参数,兼容HTTP部分特殊字符 defaultProperties.put("server.tomcat.relaxed-query-chars", "|,{,},[,],:,',`,^");
- 为什么需要升级。可能是因为需要使用Spring Boot,比如2.x版本开始需要最低JDK17 Spring Boot 2.x 使用 WebServerFactoryCustomizer 替代 EmbeddedServletContainerCustomizer;
- 只有当你升级到Spring Boot 3.x时才需要JDK 17
- 深入了解了Zebra中间件,这个是美团点评开源的一个数据库中间件
- 分析了PropertiesUtils的问题,项目启动的时候会找不到一个配置文件,导致blocked异常
- 做了一个go服务改造,把GO的接口换成了Java
- 杂技
- 通过命令行打开网页搜索工具 Flow Launcher
梳理技术栈
之前
- 必有图片和Excel导入导出,还有数据库操作、高级一点会有redis和rabbitmq,以及即时通讯的websocket技术、还有分布式事务Seata、Nginx一些简单的配置
- 涉及数据库的时候事务操作
- 技术比较多比较杂
现在
- 只有获取数据和线程池,现在必有dubbo远程调用和多线程
- 技术范围限定在一块
怎么重新架构之前的项目
- 总裁办信息平台应该是一整个对外的服务,中间通过dubbo接口调用获取礼宾的数据,或者迪问卷的数据
- 这样和之前用HTTP接口,或者feign调用有什么区别
- Spring Cloud服务就是用的Feign HTTP调用接口,RPC调用的一些基本协议也是HTTP2.0
- 中间要配Nginx,HTTP接口可以用Nginx来转发
关于埋点的设计深入思考
- 之前每次都会问埋点是怎么设计的,分前端埋点和后端埋点
- 了解了互联网大厂埋点相关的设计,现在是定义元素和操作,然后前端上报这些埋点
- 埋点用的是 pageId 来监控,前端看这个,方便做监控