xtransfer 高级开发 一面 JAVA 社招两年
1.自我介绍
回答:个人感觉正常,个人优势在于 专研技术的同时 深耕业务,看了很多技术博客书籍 JAVA并发编程、深入浅出SSD
2.让我挑一个重点项目说
回答:我说的定时任务 介绍了重点1.数据分片(时间+桶二维)+冷热数据
3.为啥不用时间伦算法
回答:时间轮优势在于层级存储,问题是要实现数据分片,且分布式架构不好实现,我们自研框架优势在于 架构清楚,利于维护与定制化二次开发
4.为啥不用xxl-job
回答:xxl-job与业务代码耦合,上手需要时间,不利于组内维护,且不利于定制化开发
5.介绍业务流程
华为计算存储部门,主要负责服务器相关产品的硬件软件配套,由此我们需要清洗、测试大量的硬盘、内存数据。
6.问我如何使用 异步调度任务框架
需要别人接入我们的框架,创建好三张表(任务信息表、配置表、位置表),部署调度服务器,执行层服务器
异步任务框架(============================================)
7.问:我们架构,介绍下流程
分为三层:调度层、执行层、治理层。 业务访通过调度层创建任务表,然后我们的执行层会抢占分布式锁,调用调度层占据一批任务然后执行
追问:分布式锁锁的啥
答:任务类型
追问:一个任务类型一张表吗,不同的任务在不同的表
答:是的
8.追问:如何分表
答:阿里规范、b+树 3层io
9.如何做的慢sql优化
答:写查询接口的时候有一个order by 优先级,粗心了,导致filesort,加了索引,索引覆盖
10.如何做的优化
压测发现qps上不去,以及连接池报超时异常,最大链接数刚开始默认8,后面优化50
11.压测细节(感觉这里寄了)
用的wrk 50个线程 200个并发 持续30s 观测到 qps 几百
最大链接数刚开始默认8,后面优化50,使得qps 上升到2000+(语气感觉有点质疑)
12.治理层干嘛
清理执行超时任务+分表
13.如何分表
大小分表+滚表
14.为啥不用大表
mysql读写慢
15.框架部署在别人的服务器上面,分表属于mdl操作,业务方会同意吗(致命问题)????
当初遇到了这个问题,但是表太大 mysql读写造成影响,评审会和架构师一起让业务方妥协的,我们不删除表,只做新增
16.问:清洗数据怎么来的?
答:调用别人接口
问:为啥不一把拿过来
答:调用数据有限制。旧系统数据不准确,所以有了我们这个框架。
定时任务框架(============================================)
16.问我们架构
分为三层:迁移层、触发层、执行层
17.问我瓶颈在哪里
答:任务创建
18. 业务流程
业务方创建定时器,激活定时器,迁移模块会自动生成2h热数据。同时每小时生成新的数据。
18.假如有几百个业务方,如何定制化开发回调接口(记忆模糊,记不清指调度任务框架还是定时任务)?
我们不会同意这种要求,责任覆盖面积太大,架构师和leader不会同意。
推送系统:
18.部署在哪里
我们自己服务器
19.那你们属于底层基础设施,也部署自己的消息推送系统吗?(感觉像质疑)
是的(那必须)
20.高优先、低优先如何理解
高优先重大事故、低优一二级事故
21.是通过topic还是partion
partion
22.如何保证消息不丢失
消息多副本机制,通过设置ack为all,等所有的消息都同步了以后,才应答生产者
八股:
23.nacos 是cp还是ap
ap后被质疑(后面承认忘记了)
24.如何实现服务发现和注册
答:nacos注册中心会定期向实力发送心跳检测,超过一定时间,踢出。
追问:消息发现呢
答:忘记了
25.synchized 和 reentranlock 区别
reentranlock可以看作s锁的继承以及拓展,优势在于 公平锁、多条件、缺点:手动 try finally unlock
26.线程池参数及线程创建过程
1.最大连接数 2.核心链接数 3.排队队列 4.线程工厂 5.拒绝策略
创建过程:核心未满先创建,满了放队列,队列满了创建最大连接数,超过最大,拒绝
27.项目用的啥redis结构
zset zrangebyscore score=定时时间戳
28.追问 分布式锁原理啥
setnx + lua lua保证解锁原子性
29.redis哪些数据结构
string、set、zset、hash(list忘了 我傻逼了)
30.zset底层
少数据ziplist 多数据跳表+hashtable
31.redis culster了解吗
哨兵模式,分leader 和从节点,从节点监听leader,leader死掉,推选 同步进度最高的节点为leader。完成了故障转移
culster是如何实现分片的呢用的是 hash算法 crc16(数据)%16384
32.算法题 *****************************************************
简单的拿下 1.思路 找到断开的位置然后拼接两部分
用时:20-30min 网吧硬盘太垃圾了 不好敲
33.对面试官有啥问的
我问:了解了公司是做b2b业务的,业务的瓶颈在哪里
面试官:说在保证 国外接口调用不出问题
我:参照这个场景我们就可以用 长连接+websocket+消息队列 解决调用问题
我问:if进去了,核心挑战是啥
面试官:保证事务一致,安全性要求很高,涉及转账,对代码要求很高
34.aps原理是啥?(说到fifo的队列 面试官质疑了我一下)
aps是线程同步框架,reentranlock的底层原理,核心原理是voliet的statue和fifo的队列,目的是为了资源控制和线程管理。
面试总结
感觉
难度:难。细节追着杀。
感觉:这家大厂成员来自于阿里,细节追着杀,项目部分 架构/重难点还好
给了二面,谢谢面试官,祝您永远不死。
回答:个人感觉正常,个人优势在于 专研技术的同时 深耕业务,看了很多技术博客书籍 JAVA并发编程、深入浅出SSD
2.让我挑一个重点项目说
回答:我说的定时任务 介绍了重点1.数据分片(时间+桶二维)+冷热数据
3.为啥不用时间伦算法
回答:时间轮优势在于层级存储,问题是要实现数据分片,且分布式架构不好实现,我们自研框架优势在于 架构清楚,利于维护与定制化二次开发
4.为啥不用xxl-job
回答:xxl-job与业务代码耦合,上手需要时间,不利于组内维护,且不利于定制化开发
5.介绍业务流程
华为计算存储部门,主要负责服务器相关产品的硬件软件配套,由此我们需要清洗、测试大量的硬盘、内存数据。
6.问我如何使用 异步调度任务框架
需要别人接入我们的框架,创建好三张表(任务信息表、配置表、位置表),部署调度服务器,执行层服务器
异步任务框架(============================================)
7.问:我们架构,介绍下流程
分为三层:调度层、执行层、治理层。 业务访通过调度层创建任务表,然后我们的执行层会抢占分布式锁,调用调度层占据一批任务然后执行
追问:分布式锁锁的啥
答:任务类型
追问:一个任务类型一张表吗,不同的任务在不同的表
答:是的
8.追问:如何分表
答:阿里规范、b+树 3层io
9.如何做的慢sql优化
答:写查询接口的时候有一个order by 优先级,粗心了,导致filesort,加了索引,索引覆盖
10.如何做的优化
压测发现qps上不去,以及连接池报超时异常,最大链接数刚开始默认8,后面优化50
11.压测细节(感觉这里寄了)
用的wrk 50个线程 200个并发 持续30s 观测到 qps 几百
最大链接数刚开始默认8,后面优化50,使得qps 上升到2000+(语气感觉有点质疑)
12.治理层干嘛
清理执行超时任务+分表
13.如何分表
大小分表+滚表
14.为啥不用大表
mysql读写慢
15.框架部署在别人的服务器上面,分表属于mdl操作,业务方会同意吗(致命问题)????
当初遇到了这个问题,但是表太大 mysql读写造成影响,评审会和架构师一起让业务方妥协的,我们不删除表,只做新增
16.问:清洗数据怎么来的?
答:调用别人接口
问:为啥不一把拿过来
答:调用数据有限制。旧系统数据不准确,所以有了我们这个框架。
定时任务框架(============================================)
16.问我们架构
分为三层:迁移层、触发层、执行层
17.问我瓶颈在哪里
答:任务创建
18. 业务流程
业务方创建定时器,激活定时器,迁移模块会自动生成2h热数据。同时每小时生成新的数据。
18.假如有几百个业务方,如何定制化开发回调接口(记忆模糊,记不清指调度任务框架还是定时任务)?
我们不会同意这种要求,责任覆盖面积太大,架构师和leader不会同意。
推送系统:
18.部署在哪里
我们自己服务器
19.那你们属于底层基础设施,也部署自己的消息推送系统吗?(感觉像质疑)
是的(那必须)
20.高优先、低优先如何理解
高优先重大事故、低优一二级事故
21.是通过topic还是partion
partion
22.如何保证消息不丢失
消息多副本机制,通过设置ack为all,等所有的消息都同步了以后,才应答生产者
八股:
23.nacos 是cp还是ap
ap后被质疑(后面承认忘记了)
24.如何实现服务发现和注册
答:nacos注册中心会定期向实力发送心跳检测,超过一定时间,踢出。
追问:消息发现呢
答:忘记了
25.synchized 和 reentranlock 区别
reentranlock可以看作s锁的继承以及拓展,优势在于 公平锁、多条件、缺点:手动 try finally unlock
26.线程池参数及线程创建过程
1.最大连接数 2.核心链接数 3.排队队列 4.线程工厂 5.拒绝策略
创建过程:核心未满先创建,满了放队列,队列满了创建最大连接数,超过最大,拒绝
27.项目用的啥redis结构
zset zrangebyscore score=定时时间戳
28.追问 分布式锁原理啥
setnx + lua lua保证解锁原子性
29.redis哪些数据结构
string、set、zset、hash(list忘了 我傻逼了)
30.zset底层
少数据ziplist 多数据跳表+hashtable
31.redis culster了解吗
哨兵模式,分leader 和从节点,从节点监听leader,leader死掉,推选 同步进度最高的节点为leader。完成了故障转移
culster是如何实现分片的呢用的是 hash算法 crc16(数据)%16384
32.算法题 *****************************************************
简单的拿下 1.思路 找到断开的位置然后拼接两部分
用时:20-30min 网吧硬盘太垃圾了 不好敲
33.对面试官有啥问的
我问:了解了公司是做b2b业务的,业务的瓶颈在哪里
面试官:说在保证 国外接口调用不出问题
我:参照这个场景我们就可以用 长连接+websocket+消息队列 解决调用问题
我问:if进去了,核心挑战是啥
面试官:保证事务一致,安全性要求很高,涉及转账,对代码要求很高
34.aps原理是啥?(说到fifo的队列 面试官质疑了我一下)
aps是线程同步框架,reentranlock的底层原理,核心原理是voliet的statue和fifo的队列,目的是为了资源控制和线程管理。
面试总结
感觉
难度:难。细节追着杀。
感觉:这家大厂成员来自于阿里,细节追着杀,项目部分 架构/重难点还好
给了二面,谢谢面试官,祝您永远不死。
全部评论
同学,考虑一下多多吗,招实习生啦:https://careers.pddglobalhr.com/campus/intern?t=FFEgIPlwIe
后续是二面没过 准备不够充分 


相关推荐
点赞 评论 收藏
分享
查看10道真题和解析 点赞 评论 收藏
分享
查看15道真题和解析 点赞 评论 收藏
分享
查看9道真题和解析 点赞 评论 收藏
分享