如何聊项目及自我介绍
如何聊项目及自我介绍
- 自我介绍
- 自我介绍一
- 自我介绍二
- 面对hr的自我介绍
- 项目
- 支付
- 项目是做什么的
- 开发人员组成
- 入职后的时间线
- 用的技术的版本信息
- 项目中负责的模块
- 收获了什么
- 最有挑战的项目、难点
- 元器件同步
- 取消订单逻辑优化
- 策略模式
- 一、流程附件通用配置
- 二、策略模式
- 补充的点
- 如果面试过程中没问到,自己还学习了的点
- 怎么去主导项目开发
自我介绍
自我介绍一
面试官好我叫刘兴目前有将近三年的开发经验/两年多的开发经验,前后做过三四个项目,最近在做的是一个安信的聚信e托的项目。
这个项目主要是对基金产品的生命周期的管理。我在里面主要负责TA运营,托管划款,机构管理等模块的开发。
在这个项目上,我利用Spring的AOP,redis,rabbitMQ这些技术对我们项目的功能点上做过一些优化,
利用分布式锁解决过一些分布式的问题,
还有我为我们团队开发过一些通用的功能,对团队的开发效率有一定提升。
我对集合源码,多线程、分布式都有一定理解。
业余时间我也喜欢学习一些新技术。最近在看周志明的深入理解JVM,对JVM
也有一定了解。
自我介绍二
- 面试官好,我叫刘兴,来自江西赣州,毕业于九江学院信息管理与信息系统专业。毕业到现在大大小小做了四五个项目。
- 最近做过是我们公司自研的外贸的私有库平台和3D打印平台。
- 项目上我主导过私有库海外代购功能的开发,包括技术方案输出,表结构设计,核心模块开发。
- 技术栈上我们主要是用的springCloud微服务,中间件有用到redis和RocketMq等。
- 在技术理论上我对集合、多线程这块有一定了解,并阅读过常见集合的一些核心源码,并且我对JVM这块也有一定了解。
- 在技术应用上,我也能里利用相关技术解决项目中遇到的一些实际问题。例如利用设计模式做一些代码的解耦,利用sql优化相关知识优化慢sql,利用redis提升系统性能,利用redis分布式锁解决分布式环境下遇到的一些问题等。
- 结合面试的岗位做一些阐述:技术的匹配度,业务上的匹配度啊,对公司的了解等。期待有机会加入我们公司(很感谢公司给我这次面试机会,期待能够加入你们)
面对hr的自我介绍
项目
支付
结算系统调支付系统,支付系统调第三方。
前段防抖,后端也要校验redis根据订单号设置一个过期时间
订单进来之后支付状态改为支付中。
订单状态,调接口后变为支付中。判断表中订单状态是否为支付中这么一个中间状态。
支付异常,地方回调没有或者我们没接收到。通过补偿机制去查支付中状态的订单。
是你做的?包括第三方接口对接?支付系统?有部分是我做的,有部分是调公共服务,但是我清楚其中可能存在的一些问题和解决办法。
如何防止重复支付。
项目是做什么的
开发人员组成
测试:6个 1个组长
后端:14 组长架构师
产品:4个(pbc,钢网,smt,3D,私有库)
前端:4个
外贸IT团队30个人。
入职后的时间线
8月到三月,做版本,需求产于优惠券的开发,pcb和钢网业务线的迭代,当时还没有拆分业务线
3月到-7月,做3D打印 3个后端,两个前端。主要负责后太审单改单逻辑处理,以及和国内mq交互逻辑处理
8月-12:月做私有库 负责元器件同步逻辑处理,元器件搜索,下单加入购物车逻辑处理。
2月到4月:做海外代购 出技术方案通过策略+数据库设计+时序图,三个后端一个前段。简单功能
用的技术的版本信息
mysql 5.6
redis 5.0
springboot 2.1.X
springcloud:版本是A-Z命名我们用的是F开头
rabbitMQ 3.6.2
dubbo 2.5.2
zookeeper 1.9.6
spring 5.0
rocketMq 1.5.2
项目中负责的模块
收获了什么
最有挑战的项目、难点
元器件同步
业务背景
我们外贸私有库元器件信息有一部分来自国内有一部分来自商城共100多万的元器件信息需要从国内和商城同步到我们外贸
技术上要解决的问题
- 如何全量同步
1、难点
数据量太大一次同步不过来,
原因:涉及五张表的信息同步(基本信息表,拓展信息表,库存表等)
2、解决:保证数据最终一致即可,分六个接口,每个接口都单表查,六个接口里提供一个只查询id的接口。触发入口我们页面会有一个全量同步按钮,这个接口只查全量的ID信息。把结果集查询出来然后对集合分批,发送给mq,通过mq来进行异步和削峰。这个时候会同步 - 如何增量同步
国内提供根据元器件更新时间查询元器件的接口,我这边定时任务增量同步的时候每次都把上次定时任务跑的时间放到redis里面 - 全量同步和增量同步完如果存在元器件两边不一致的情况如何去做补偿
解决问题所用到的技术:
- redis缓存提高性能,分布式锁解决分布式下的问题
- mq进行异步和流量削峰
- 线程池管理线程资源
难点:
一次性同步过来肯定不行,数据量太大,涉及五张表100多万条数据。
系统资源(cpu资源,内存资源,数据库的IO压力)
需求:
先说难点存在于哪里:
百万元器件同步的方案?
需求:
元器件信息涉及五六张表。五六张表的同步。
传统方式同步:数据量太,同步时间长,可能导致cup飙升。
方案:拆分成四五个不同的定时任务去执行。
1、先单次分批2000条同步少量信息,只同步id信息。
2、获取到id然后发送MQ消息异步消息对流量进行削峰的
3、通过id来获取元器件的基本信息。
4、基本信息同步过来之后把id存入redis。
5、通过定时任务去同步拓展信息,库存信息等。
6、同步完就把通过过的元器件id从redis移出去。
为什么写接口不通过存储过程或者脚本来处理:需要做一些业务逻辑的转换,人民币转美元,警戒库存的转换。
全量的数据通过手动拉取,并做按钮权限的控制。
技术点:redis分布式锁,线程池,redis缓id信息,定时任务、RocketMq削峰。时间要多久???
一百多万元器件,
取消订单逻辑优化
答题思路:说出自己对比了解了不同方案的优缺点,最终选择这种方案。并且还要进一步讲不仅是用用完之后也去了解了它底层的原理
通过RocketMq的延迟队列来实现。
原来是通过XXJOB定时任务去扫订单表的方式实现,但是随着订单数据量不断增加这种扫库的方式对数据库的压力很大,并且也做不到实时。
当时也了解大概七八种方案。
最后结合我们已有的中间件。选择筛出来了几种分布式环境下可行的方案。
- 一种是redis的zset数据结构,在并发条件下可能会存在多个线程消费同一个资源的情况
- redis的键空间机制:就是redis的key失效之后会给客户端发送一个消息。但是redis的发布订阅是那种即发即弃的模式,如果是客户端断开重连的话,在断开期间的所有事件都会丢失掉,可靠性不是很高。
- 还有一种就是rocketMq的一次队列。虽然它不支持自定义延时时间但是支持的18种level满足我们的业务要求。并且消息支持持久化也增加了可靠性
实现代码:https://www.cnblogs.com/wsw-tcsygrwfqd/p/15057846.html
原理分析:
策略模式
改造代码,让代码结构清晰,提升系统的可维护性。
一、流程附件通用配置
之前方式:流程的每个节点需要上传什么附件是否必填,是否下载模板,在什么情况下必填,例如有些我选A条件展示这几个附件,B条件展示这几个附件,还包括这些节点附件上传的类型,附件是否可删除,可修改,可重传这些逻辑都在前端写死。
这带来哪些问题呢:
1、直接写死不灵活一旦需求变更都得前端改代码
2、前端每个流程都需要些代码,存在一个重复编码的问题
后面我就设计了一张表,写了一个通用的附件配置接口。规则只需要通过脚本维护进去就行,提升了整体的性能
二、策略模式
IStrategyExecAPIService
补充的点
如果面试过程中没问到,自己还学习了的点
对自己平时开发常用到的东西的性能会去实践。
- 不同的插入模式:普通for,sqlSession的batch模式,mapper里面的forearch,版本一定,不同数据量,插入多此取平均值对比
- 常用map集合的使用上:比较不同遍历方式的性能差异
怎么去主导项目开发
除了开发额外做一些协调的工作:外部的对接、几个开发人员内部的协调、和组长汇报进度
1、需求评审(目的就是保证自己对需求的理解是没有问题的,减少需求变动)
说出自己对需求的理解和产品校对思路、以及提出自己的观点和疑问包括对业务的理解的点、需求上不明确的点、业务上不合理的点的质疑
2、技术方案输出(画时序图写出服务间的交互流程、根据需求拆分功能点、工时的评估)给出总工时,根据投入人力投入人力的情况,
大概给出每个阶段需要交付的东西(我来定)
3、测试团队和开发并行,他们也会对需求提出自己的问题,同时输出测试用例
4、单元测试,前端联调,过一下测试用例,提测。
5、上线前的snar代码扫描codeReview
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
