欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java常见的面试问题(技术总结)

程序员文章站 2022-06-05 14:06:26
...

什么是SOA 分布式

集群:就是很多的服务器来实现一种功能,例如mysql,很多的服务器都安装mysql

负载均衡:就是用来调节的,比方说有很多的用户都在访问读取数据,可是读取a服务器的mysql多,而读取别的服务器的mysql就少,负载均衡把访问a的用户转给b一部分,防止a由于访问量过大造成宕机什么的。

分布式:一个系统把不同的服务分开来部署,用户模块,bbs论坛模块,内容模块,支付模块。对服务的访问量很大的时候,单台服务器已经满足不了需求,就把服务分散到几台甚至几十台几百天电脑上

好处:每个模块只负责自己的事情和请求压力,开发人员只负责自己的东西

分布式应用开发简单的说,是指将用户界面、控制台服务、数据库管理三个层次部署在不同的位置上。其中用户界面是客户端实现的功能,控制台服务是一个专门的服务器,数据管理是在一个专门的数据库服务器上实现的。

自我理解:
对项目的客户(用户界面),数据存储(操作数据(服务)),对数据库的操作(数据层) 分离开来,并且可以进行高效的敏捷开发.
分布式,可以对各个模块进行加强(服务器添加(集群处理)),把调用次数比较多的服务,多加服务器,哪些很少使用的服务,可以对它进行一个降低.

hibernate和mybatis的区别

  • hibernate 是对SQL进行了高度的封装,它有自己的HQL语句
  • mybatis保留了对数据库灵活的操作,需要自己写sql语句
  • 他们都是ORM对象映射(数据查询出来以后都是存在pojo类中),使用方法都是大同小异.

hibernate的多个参数如何传递?怎么转换?

  • 自己理解 :
    • 数组传递,对HQL的语句进行拼接,in()里面的条件通过循环来判断.
  • 百度理解:
    • 集合(List),session.createSQLQuery(sql).setParameterList(“userIdList”, userIdList).list();
    • 创建一个查询对象,并且,直接吧集合传进去即可.(setParameterList)

SpringMVC和struts2 的区别

SpringMVC和struts2区别
    实现不同
        SpringMVC是通过Servlet来实现的
        Struts2是通过拦截器来实现的
    Json的转换方式不同
        Spring MVC是自动转为json
        Struts2是通过插件来转
    数据传输不同
        SpringMVC是通过参数来传递的
        Struts2是通过值栈来传递的,而值栈是个比较庞大的东西
    控制器实例不同
        SpringMVC是基于方法来实现的
        Struts2是基于对象来实现的
        SpringMVC从理论上来讲是比Struts2快的

四大域对象

  • ServletContext
    生命周期:当WEB应用被加载进容器创建代表整个WEB应用的ServletContext对象,当服务器关闭或WEB应用被移除时,ServletContext对象跟着被销毁。

    作用范围:整个WEB应用。

    在不同Servlet之间转发、读取资源文件

  • Request域
    1.生命周期:在Service方法调用前由服务器创建,传入service发那个发。整个请求结束,request生命结束。
    2.作用范围:整个请求链(请求转发也存在)
    3.作用:在整个请求链*享数据,经常用到:在servlet中处理好的数据交给JSP显示,此时参数就可以放在Request域中。
  • Session域
    1.生命周期:在第一次调用request.getSession()方法时,服务器会检查是否已经有对应的session,如果没有就在内存中创建一个session并返回。当一段时间内session没有被使用(默认为30分钟),则服务器会销毁该session。如果服务器非正常关闭,没有到期的session也会跟着销毁。如果调用session提供的invalidate(),可以立即销毁session。
    2.作用范围:一次会话。
  • PageContext域
    1.生命周期:当对JSP的请求开始,当相应结束时销毁。
    2.作用范围:整个JSP页面,是四大作用域中最小的一个。
    3.作用:获取其他八大隐式对象,可以认为是一个入口对象。
    获取所有域中的数据
    跳转到其他资源

Spring 参数如何传递

  • 直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。
  • 通过HttpServletRequest接收,post方式和get方式都可以。
  • 通过一个bean来接收,post方式和get方式都可以。(也叫模型驱动)
  • 通过@PathVariable获取路径中的参数
  • 使用@ModelAttribute注解获取POST请求的FORM表单数据
  • 用注解@RequestParam绑定请求参数到方法入参

Spring的特征

  • aop(面向切面编程):

    • 软件系统分为两个部分:核心关注点和横切关注点
    • 业务处理的主要流程是核心关注点
    • 与之关系不大的部分是横切关注点
    • AOP核心概念

    横切关注点
    切面(aspect)
    连接点(joinpoint)
    切入点(pointcut)
    通知(advice)
    目标对象
    织入(weave)
    引入(introduction)

  • ioc(控制反转):

    • IOC是一种思想,是一个重要的面向对象编程的体现之一

    • 它是把创建和查找依赖对象的控制器交给了容器,有容器进行注入组合对象,所以对象与对象之间是,低耦合的,便于测试,而且也使得整个体系架构变得更灵活

    • 就是对象找依赖并注入,而不是对象自己主动去找
  • IOC依赖注入

    • 在控制反转中获取资源的过程叫做依赖注入
      -注入有2种,一种是通过xml配置进行构造注入
      -还有一种是通过setter注入,就是通过对象的set方法进行注入.
    • 一般都是在Spring配置文件中,配置bean ,然后交给Spring自动注入,我们拿到对象就可以直接使用.

Spring AOP (动态代理的实现)

Spring MVC执行流程

  • 自己理解:
    • 客户请求–>前端控制器–>前端控制器找到HandlerAdapter–>HandlerAdapter(处理数据)—>返回视图–>然后渲染视图–>最后返回视图给客户

Struts2的执行流程

Hibernate的执行流程

mybatis的执行流程

ElasticSearch 搭建

ElasticSearch怎么建立索引

ElasticSearch 怎么使用

solr 搭建

solr 怎么建立索引

solr 怎么使用

ActiveMQ 使用

消费者:
生产者:

Dobbo

WebService

String && StringBuffer 的区别,在什么时候使用.

Nginx 负载均衡搭建

Redis的搭建(集群)

Redis 中的5种数据类型

String:key-value(做缓存)
Hash:key-fields-values(做缓存)
SortedSet(zset):有顺序,不能重复

© 著作权归作者所有 转载请保留原链接地址 交流QQ群:799362339