【面试题解析】--20200115Java软件开发工程师面试题解析

1. 微服务架构与传统架构之间的区别是什么?

传统的架构模式就是将所有的功能模块都打包在一个war包中,而微服务则是以业务域为模型将单体架构拆分成多个小型自治服务集合。
单体架构:

  • 优点
    1. 易于开发测试,项目易于管理。
    2. 没有远程调用的消耗。
  • 缺点
    1. 因为都是在一个项目中修改代码所以耗时会比较长,一个功能的完成可能需要等待其他人员的完成。
    2. 代码可能会存在冲突,代码的耦合度比较高。
    3. 不稳定,一个微小的bug都可能导致整个应用程序崩溃。
    4. 无法满足高并发场景下的业务需求。

微服务:

  • 优点
    1. 代码耦合度低。
    2. 比较灵活,能够根据业务需求达到平滑伸缩的效果。
    3. 每个服务都有自己独立的资源如数据库、消息队列、缓存等。
  • 缺点
    1. 部署起来相对比较麻烦。
    2. 因为不可控因素存在,所以会有远程调用问题。
    3. 服务与服务之间存在联系所以一个服务不可用可能导致整个程序崩溃(雪崩效应)。

2. 说说你所知道的微服务技术有哪些?

服务开发:Spring、SpringMVC、SpringBoot
服务负载均衡:Ribbon、Nginx
服务注册中心:Eureka、Zookeep
服务熔断器:Hystrx
服务配置中心:SpringCloudConfiging
服务调用:REST、RPC、gRPC
服务网关:zuul
事件消息总线:SpringCloudBUS

3. Java中抽象类与接口的区别是什么?

被abstract修饰的类被称为抽象类,它可包含普通方法也可包含抽象方法,它可以有一个或多个抽象方法。
接口是一个特殊的抽象类,在接口中只能有抽象方法不能存在普通方法。

4. 线程池是什么?

线程池是在初始化一个多线程应用程序的时候创建的一个线程集合,其中线程对象的多少取决于程序需求以及服务器的性能,在线程池中的每一个线程对象都有可能被分配任务,当任务完成后它又将回到线程池中等待下一次任务的分配。

线程池的使用场景:

  1. 程序存在复杂运算任务时需要。
  2. 服务器性能比较低的时候。
  3. 程序设计硬性要求时需要使用。

5. 在javaScript中如何实现异步调用?

  1. 创建XMLHttpRequest异步调用对象。
  2. 通过异步调用对象的open()方法创建一个新的请求,并设置请求方法以及请求地址等。
  3. 通过异步调用对象的send()方法发送请求。
  4. 接受响应内容,并解析返回结果。
发布了56 篇原创文章 · 获赞 17 · 访问量 6179

猜你喜欢

转载自blog.csdn.net/qq_43199016/article/details/104012404
今日推荐