深圳航天工业技术研究院Java社招开发工程师(三面)
- 你们开发项目的应用场景使用到缓存的目的是什么?缓存会有哪些问题?如何预防?-----考察的缓存的优劣,优点肯定是在并发请求提高性能,遇到的问题就是“缓存穿透”和“缓存击穿”,“缓存雪崩”,双写不一致等。
- 如何解决上述遇到的问题?--------缓存穿透就是做无用功,从缓存再到数据库查询一个不存在的数据,导致性能的被浪费,所以解决方案就是预先校验用户的请求或者第一次查询时设置一个具有短时间过期时效的key来 存放值为null的value,避免再去找数据库。缓存击穿就是在缓存数据过期后,海量并发一下子涌入到数据库,解决方案就是注意热点数据的过期时间,或者使用互斥锁第一次访问key先锁住,写入缓存中,这样后面的请求就不用涌入数据库了。缓存雪崩就是缓存服务器宕机或者在某一时刻多个key时效,解决方案就是对每个key的过期时间设置一个随机值,而不是所有key相同,使用高可用分布式集群redis-cluster。双写不一致,就是缓存和数据库的数据不一致,缓存数据来源于数据库,所以更新数据库时先要把原来的缓存删除再更新数据库。
- 你们的项目为什么要进行系统拆分?-----业务模块的扩增,为了便于管理(简述下项目)。
- dubbo工作原理?注册中心?-----service层对外提供访问接口,config框架自身各种配置, proxy层***之间进行网络通信,registry层连接生产者和消费者的桥梁,cluster层生产者集群部署多台机器,monitor层属于监控调用,protocol层具体的生产者和消费者之间调用接口的网络通信,exchange层信息交换,serialize层序列化……。
- dubbo支持的通信协议和序列化协议?------
- dubbo负载均衡和集群容错策略有哪些?动态***策略?------
- dubbo的spi思想------
- dubbo进行的服务治理、服务降级、失败以及重试-------
- 分布式服务接口的幂等性如何设计,防止重复提交-----结合开发场景的问题
- 分布式服务接口请求的顺序性----------
- 分布式锁zookeeper的使用场景------
- 实现分布式锁的方式----------redis分布式锁和zookeeper分布式锁结合项目来说
- 以上两种方式的实现和异同------
- 你们项目中分布式的session如何实现------实际就是分布式系统中的session共享
- 关于分布式事务、以及分布式事务问题------
- 关于分库分表(为什么要分库分表,用过哪些分库分表中间件)----
- 分库分表的方法-----------结合项目,垂直和水平拆分
- 如何设计动态扩容缩容的分库---
- 分库分表全局ID如何生成----
后续的HR面试闲聊略……
总结技术面:多集中在分布式架构应用的一些产品MQ、Redis、数据库……问题。
#社招##Java工程师##面经##中国航天科技集团#