有点乱七八糟,放一起,不再备份了。
各式各样的问题,头疼,搞的老子跟菜鸟似的。
这辈子再也不找工作了~
1.设计模式
创建型、结构型、行为型
责任链:拦截器
代理:静态代理、动态代理
建造者:Builder模式、工厂
观察者:事件响应,MQ
策略模式:退款(时常,全款)
模版方法:定时任务,抽象类
装饰模式:io
责任链:过滤器、拦截器
单例 (需要多准备几种,优劣好坏)
2、日常问题-挑战-成就感
自己准备了几个,说的不够清晰,做过的项目不够高大上,感觉也没啥好说的。
性能
1个get查询,超过1秒。
fullgc, mysql、服务器(cpu、磁盘、网络)
上线,RPC序列化,调整了字段顺序
重复插入,数据库唯一索引,分布式锁,insert ignore,replace into
价格,限时折扣(全员),定向促销(几个人,缓存)
分页bigint
vue用了key限制,2个id相同的只会展示1个。
后端bigint的long,在js由于精读丢失,2个id一样,10条数据,只展示了7条。
差1分钱
用户投标回款的钱,项目还款的钱,差1分钱。
rid 659,repay_amount和return_amount差1分钱?精确度?
loan_repay需要还的金额,100元,以100总数计算。
投标(50,35,15)分3个值分别计算利息,3次利息之和 不等于100一次性的利息之和。
定时任务执行
数据库锁
配置ip
多台执行,乐观锁
分布式任务调度+RPC
Spring初始化卡住了,javax.inject.Inject’ annotation found and supported for autowiring
3.mq
最常见的问题
4.自我介绍
大致如下,现场灵活发挥。履历不够牛逼,说这些人家根本没兴趣。(面试真没意思)
工作6年多,一直从事java研发。以前比较年轻,4家创业公司经历,其中1次自主创业经历,能独自搞定小型项目web/mobile/服务端3端系统开发。总结分享,工作中遇到过好几百个问题,在我的博客都有记录。最近2年多,在京东修炼,中等规模的互联网系统开发有了一定的积累,分布式soa之类的,技术使用场景期望加入,继续做好研发,在3到5年里,进一步提升自己,在千万级亿级。在技术的底层原理,业务的优雅实现方面,有所欠缺。
金融,p2p网贷,票据理财,股权众筹店铺。比较匹配的。
5.最近的工作相关技术
17年底接手的项目。
18年
为什么要SOA化:代码复用、开发维护-分工协作、对外提供接口、抽象(不要知道细节)
商品模块(类目、商品-列表-详情、首页楼层广告)的优化(缓存)、SOA化改造、
对外接口(web、mobile、客户端、内部部门RPC)
性能优化(多表联合查询、redis-es缓存)、稳定性、Bug修复、业务下线(产品、运营)、代码重构(代码减半、单一职责、可读性(命名、流程)、重写-新需求)
618和双11备战:
19年,专注做业务
高并发(图片合并、js压缩、缩略图、压缩CDN
负载均衡、无状态-多台机器、多级缓存-浏览器客户端-Nginx、Redis/Es缓存、数据库1主7从,静态页,索引,
分库分表/业务拆分,异步,多线程,队列,分流熔断
)
高性能(CDN、缓存、索引)
高可用(负载均衡和虚拟IP、Nginx、1主多从、存活检测和失效转移.无状态,有状态-passport,cookie+redis,多机器)
keepalived的作用是检测后端TCP服务的状态,如果有一台提供TCP服务的后端节点死机,或者工作出现故障,keepalived会及时检测到,并将有故障的节点从系统中剔除,当提供TCP服务的节点恢复并且正常提供服务后keepalived会自动将TCP服务的节点加入到集群中。这些工作都是keepalived自动完成,不需要人工干涉,需要人工做的只是修复发生故障的服务器
黄金流程:
发布商品ISV/Man端审核:商品缓存、MQ(更新Redis、Es)
类目:Redis缓存
商品列表:ES
详情:商品SOA(基本信息、SKU列表、评价列表、订单记录、商品主图)
结算页:订单信息-redis中转
下单:订单信息、扣库存(按数量卖的)、生成订单
支付:跳转支付url,京东金融(收银台)
状态确认:支付确认。如果没有怎么办?定时任务-反查。(客户投诉)
退款:ISV发起(填写金额)、man审核、推送(
退款发1个MQ。推送3笔-扣ISV、给商家、还ISV佣金,只要1次失败,就返回false。。调用结算接口之前,想判断A、B、C有没有推送成功,只推送失败的)
订单编号生成:序列号-1个表,每次取5个(Step),累加。
并发取,谁乐观锁修改成功,谁就成功。
订单生成和扣库存,本地事务
数据库1主7从(binlog日志,master到slave)
Redis,业务隔离, 商品、订单、ISV。1主2从
(slave向master发布sync同步指令,全量rdb备份,增量日志)
为啥 redis 单线程模型也能效率这么高?
- 纯内存操作
- 核心是基于非阻塞的 IO 多路复用机制
- 单线程反而避免了多线程的频繁上下文切换问题
Redis应用场景:分布式Session、排行榜、字符串缓存、自增序列
京东MQ特点:主题订阅、可重复消费、可用性(非常高)、持久化(JFS、HBase、MySQL)、业务ID顺序消费、延迟低(1秒内)、消息丢失极低
适用场景
- 系统解耦
- 非实时系统通信
- 异步流程处理
MySQL中有六种日志文件,分别是:重做日志(redo log)、回滚日志(undo log)、二进制日志(binlog)、错误日志(errorlog)、慢查询日志(slow query log)、一般查询日志(general log),中继日志(relay log)。
数据库优化:单表、索引、多表联合查询、垂直拆分、水平拆分-分库分表、优化sql(查询需要的字段)
explain sql,慢日志,读写分离, 缓存
6. 2018年简历的一点小想法
(针对用人单位的要求写,但是个个要求都那么高,都他妈的复制粘贴,无耻之极)
任职要求:
1、有扎实的Java基础JVM、Java多线程、并发以及网络通信有深厚的经验;
2、熟悉HTML5、JavaScript、Ajax、CSS、JQuery、node.js等Web前端技术;
3、熟悉主流开源应用框架,如Spring、struts、MyBatis、velocity、XML、JSON、Maven等开发技术;
4、熟悉webservice、Dubbo、ZooKeeper等;
5、熟悉关系型数据库MySQL Oracle等,以及相应数据库调优、SQL优化;
6、熟悉Memcached、MongoDB、Redis、HBase等;
7、熟悉分布式系统的设计和应用,熟悉分布式、缓存、消息、负载均衡等机制和实现;
8、热爱技术,对技术有不懈的追求,喜欢研究开源代码;
9、良好的学习能力、团队协作能力和沟通能力;善于思考,能独立分析和解决问题;
招采难点
x万供应商,y万合同
初始化
合同匹配,多对多
JDK1.6 JDK1.7 CSV
P2P网贷
投标,分布式锁,Redis、Zookeeper
模块化:账户中心、登录,分布式事务
7、最近读了什么书
没咋准备,哎,败笔。
简历内容那么多,被人找出bug太容易了。
8、spring小问题
spring ioc默认的都是原生对象 只有通过aop增强的对象才是代理对象.
Spring中怎样区分採用JDK动态代理和CGlib动态代理:
假设目标对象的实现类实现了接口。Spring AOP 将会採用 JDK 动态代理来生成 AOP 代理类;
假设目标对象的实现类没有实现接口,Spring AOP 将会採用 CGLIB 来生成 AOP 代理类
9、技术要点准备
高并发
50台机器
主从,类目 单独从库,j-one配置,Spring多数据源
RPC分组,不同业务隔离
MQ异步,订单通知、结算
Redis缓存,主动缓存+被动缓存
数据库索引,单表(联表),ES缓存
商品,统一完整数据,每个业务需求 根据统一数据 裁剪需要的字段
重构要点
清理代码、工具类整合、简化依赖关系、多做静态方法、调整包结构
setnx get getset
价格,价格,现实折扣,定向促销(首页)。 列表页(千人千面,也可以看到。
但如果业务要求 以 价格排序呢?) 单独1个页面可以排序,但是 2个页面之间的价格 不行?
10、最近项目准备
x市场
类目,商品列表-搜索-详情(service,charge,charge_amount,charge_cycle)
订单/订单明细(没有购物车),订购-履约
发票
支付-订单确认
退款
结算
评价/回复/评分
活动(限时折扣,定向促销),activity,virtual_service,virtual_sku
图片广告/服务推荐
下线:奖励贝、促销活动、排行榜
运营支持:各种疑难杂症
主导:首页改版
参与优化:订单、商品、支付
caigou项目
供应商管理(资料维护,公司资质,生命周期报表,联系人,审核拉黑冻结,合同),绩效考核,前台门户,专家库,选择策略,招投标/询比价,企务通H5,分单
流程:采购公告、前台报名(仅仅是报名),发起流程-邀请供应商-(询比价,比价格/招投标-专家打分,综合比较)-中标名单-中标公告/消息通知
移动端OA审批-对接消息-JMQ-修改状态
专家库-打分。
智能健身房
刷卡、扫码、人工、人脸
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net