java面试题——常见项目真实面试题(实际面试被问到)
Posted 码云铁粉
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java面试题——常见项目真实面试题(实际面试被问到)相关的知识,希望对你有一定的参考价值。
1、项目包含哪些微服务?你负责哪些?
登录微服务,注册微服务,搜索微服务,购物车微服务,订单微服务等10来个微服务
2、调用第三方接口异常,你是怎么处理的?
- 看下有没超过设置的超时时间,检查网络
- 如果网络都正常,去看下返回的错误码是什么
3、你们是对服务进行常见的容错处理的?
熔断、限流、降级
4、请求流量最大设置1W,突然来2W请求,多出来的1w怎么处理的?
- 线程池里面的workque排队,,可以让一万个请求都在排队
- 线程池的拒绝策略,直接拒绝
- 排队一部分,拒绝一部分
5、购物车同步redis,异步mysql场景中,mysql数据一直写入不进去怎么办?
- 用的rabbitmq的延时队列,还有一些死信队列
- 也有可能数据库并发量太高,处理不过来
6、项目上线前你是怎么进行测试的?
我们在公司内网搭了一个内部环境,我们这些微服务呢,一共用了两三台机器,然后把环境和微服务都搭好,一台机器上可以跑多个微服务。
7、自定义注解有用过吗?说个你在开发中使用时的场景?
鉴定权限,有的需要一个登录的,有的不需要登录的,和拦截器一起使用
8、分布式锁有使用过吗?
我在项目中确实没用过,但有过一些了解,像这种乐观锁、redis的锁、zookeeper锁,实现原理基于临时有序,让后一个节点监听前一个节点,前一个节点一删,后一个节点自动获取锁
9、说一下你们的微服务项目是怎么部署的?
环境搭好、项目打包放到各个服务器上去
10、如何在spring框架中解决多数据源的问题?(如何维护数据源)
在 spring 中配置
我们应当在 spring 中做如下配置:
xml 代码
< bean id = "dynamicLoadBean" class = "com.htxx.service.dao.DynamicLoadBean" > bean >
< bean id = "dataSource" class = "com.htxx.service.dao.MultiDataSource" >
< property name = "dataSource" >
< ref bean = "dataSource1" />
property >
bean >
< bean id = "sessionFactory" class = "org.springframework.orm.hibernate3.LocalSessionFactoryBean" >
< property name = "dataSource" >
< ref bean = "dataSource" />
property >
......
bean >
其中dataSource 属性实际上更准确地说应当是 defaultDataSource ,即 spring 启动时以及在客户没有指定数据源时应当指定的默认数据源。
该方案的优势
首 先,这个方案完全是在 spring 的框架下解决的,数据源依然配置在 spring 的配置文件中, sessionFactory依然去配置它 的 dataSource 属性,它甚至都不知道 dataSource 的改变。唯一不同的是在真正的 dataSource 与 sessionFactory 之间增加了一个 MultiDataSource 。
其 次,实现简单,易于维护。这个方案虽然我说了这么多东西,其实都是分析,真正需要我们写的代码就只有 MultiDataSource 、 SpObserver 两个类。 MultiDataSource 类真正要写的只 有 getDataSource() 和getDataSource(sp) 两个方法,而 SpObserver 类更简单了。实现越简单,出错的可能 就越小,维护性就越高。
最 后,这个方案可以使单数据源与多数据源兼容。这个方案完全不影响 BUS 和 DAO 的编写。如果我们的项目在开始之初是单数据源的情况下开发,随着项 目的进行,需要变更为多数据源,则只需要修改 spring 配置,并少量修改 MVC 层以便在请求中写入需要的数据源名,变更就完成了。如果我们的项 目希望改回单数据源,则只需要简单修改配置文件。这样,为我们的项目将增加更多的弹性。
以上是关于java面试题——常见项目真实面试题(实际面试被问到)的主要内容,如果未能解决你的问题,请参考以下文章