Java常见题目

Java常见题目

Springmvc请求处理流程

浏览器发送请求,DispatcherServlet接收请求,根据请求路径调用handlerMapping(记录请求路径与控制器的对应关系),handlerMapping返回控制器,dispatcher找到对应controller
接收请求并给与响应,把modelandview返回给dispatcher,dispatcher根据视图名,找到视图组件,响应浏览器.

Spring IOC、AOP的实现原理

IOC:Inversion of control,表示控制反转
传统的创建并获取的方式是new构造方法,在使用Spring以后,是类似于getBean()的作法,所以,就由掌握创建并管理对象的主动权,变成了放弃创建并管理对象的主动权,而是只关心如何获取对象,这样的做法就叫做控制反转。
AOP是将安全,事务等程序逻辑相对独立的功能抽取出来,利用spring的配置文件将这些功能插入进去,实现了按照方面编程,提高复用性.

静态代理,动态代理的区别

静态代理:是由程序员创建或由特定工具自动生成源代码,再对其编译,在程序运行前,代理类的.class文件就已经存在.
动态代理:在程序运行时,运用反射机制动态创建而成.

post请求和get请求的区别

get请求:在地址栏输入地址,表单默认的提交方式,会将请求参数显示在地址栏中,不安全.会将请求参数添加到请求行中,只能发送少量数据(大约是2k)
post请求:将表单的提交方式改为post,请求的数据不会显示在地址栏中,相对安全,数据会在实体内容中发送,能够发送大量数据.

sql注入,跨脚本攻击的处理方式

处理sql注入:可以将执行sql对象的statement改成prepareStatement预加载sql执行对象
处理跨脚本攻击:输入过滤,对每个用户的输入或者请求首部都要进行过滤,且需要覆盖到所有的输入源.输出过滤,安装防护墙,可以拦截css攻击.

mybatis参数使用#和$的区别

在mybatis原理中,可以看做参数都在一个map中,使用参数是把它从map中取出用?表示.

  *#{}可以参考ONGL表达式,${}是sql语句中用来替代某个组成部分,由于sql语法的限制,
  无法进行预编译,存在sql注入的风险.需要预编译且替换某个值时用#{},
  若是占位某个语法的组成部分,则使用${}.*

springmvc过滤器

拦截器是SpringMVC框架中的组件,而过滤器是JavaEE中的组件。
拦截器的配置在Spring的配置文件中,更加灵活,可以有多个黑名单,也可以有多个白名单,而过滤器的配置在web.xml中,只有1项黑名单。
拦截器是执行在各控制器之前与之后的,而过滤器是执行在所有Servlet之前的

url、uri的区别

uri统一资源标识符,用来唯一的标识一个资源,web上可用的每种资源如html文档,图片,视频等都是uri来定位的。uri一般由三部组成,访问资源的命名机制、存放资源的主机名、资源自身的名称,由路径表示,着重强调资源。
url统一资源定位符,是Internet上用来描述资源的字符串,主要用在各种www客户端和服务器程序上。采用url可以用一种统一的格式来描述各种信息资源,包括文件、服务器的地址和目录。
uri是url更高层次的抽象,uri属于父类,而url属于uri的子类。

servlet、jsp的区别

servlet是一种扩展web服务器功能的组件规范,因web服务器只能处理静态资源的请求,即需要事先将html文档准备好,放到web服务器上,不能处理动态资源请求,所以需要servlet的扩展。
jsp是sun公司制定的一种动态页面技术规范,是以.jsp为后缀的文件,主要由html标签和少量java代码组成,容器会将jsp转成servlet运行,jsp可以包含html(js,css),java代码片段,隐含对象,指令

转发和重定向的区别

转发:forward是服务器请求资源,服务器之间访问目标地址的url,把url的响应内容读取过来,然后这些内容再发送给浏览器,浏览器根本不知道服务器发送的内容从哪来,地址栏地址不变.
重定向:服务器通知浏览器向某个地址发请求.服务器可以向浏览器发送302状态码和location消息头,该消息头存着重定向的地址,浏览器收到后会向重定向地址发送请求.

线程创建的方式,多线程的使用,线程池,mysql索引类型,组合索引,索引失效

线程的创建方式有两种:一.继承extends thread 二.实现runnable接口

多线程的使用:线程是进程的子集,一个进程可以有一个或多个线程,同类的多个线程共享一块内存空间.通常用于一个程序中需要完成多个任务,虽然可以单一线程完成,但多线程速度会更快,如下载.多线程是并发运行的.

线程池:线程池主要由两个作用,控制线程数量和重用线程,即需要创建多个线程或线程频繁使用和销毁时创建线程池.

mysql索引类型
聚集索引:通过主键创建的索引为聚集索引,一个表只能有一个聚集索引,添加主键约束的表会自动创建聚集索引,它的树状结构保存了数据.
非聚集索引:非主键创建的索引,一个表可以有多个,树状结构保存了指针.

组合索引:通过多个字段创建的索引,频繁使用某几个字段作为查询条件的时候,可以为这几个字段创建组合索引.

索引失效:索引无法存储null值 不适合键值较少的列 前导模糊查询不能利用索引

in、exsits的区别,左连接、右连接,重载和重写的区别

in和exsits的区别:in可以和子查询一起使用,也可以直接使用,in与子查询一起使用时是针对主查询使用索引,in是把外表和内表作hash连接.exsits一般是与子查询一起使用,会针对子查询的表使用索引,exsits是对外表作loop循环.

左连接和右连接
左连接是以jion左边的表为主表,查询所有数据,右边的表只显示有关系的数据,jion前面加left
右连接是以jion右边的表为主表,查询所有数据,左边的表只显示有关系的数据,jion前面加right

重载和重写
重载:发生在同一个类中,方法名相同,参数列表不同,方法体不同,重载看参数,发生在编译期
重写:发生在父子类中,方法名相同,参数列表相同,方法体不同,重写看对象,发生在运行期

×

纯属好玩

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. Java常见题目
    1. 1.0.1. Springmvc请求处理流程
    2. 1.0.2. Spring IOC、AOP的实现原理
    3. 1.0.3. 静态代理,动态代理的区别
    4. 1.0.4. post请求和get请求的区别
    5. 1.0.5. sql注入,跨脚本攻击的处理方式
    6. 1.0.6. mybatis参数使用#和$的区别
    7. 1.0.7. springmvc过滤器
    8. 1.0.8. url、uri的区别
    9. 1.0.9. servlet、jsp的区别
    10. 1.0.10. 转发和重定向的区别
    11. 1.0.11. 线程创建的方式,多线程的使用,线程池,mysql索引类型,组合索引,索引失效
    12. 1.0.12. in、exsits的区别,左连接、右连接,重载和重写的区别
本站总访问量: , 本页阅读量: