超时空大决战

1.spring springboot springcloud的区别

spring框架为开发java应用程序提供基础架构支持,如:springJDBC,springMVC,springAOP

springboot:消除了设置spring应用程序所需的xml配置,快速开发框架,通过maven依赖的继承方式,内置http服务器

springcloud:是微服务框架的有序集合,springcloud依赖springboot框架实现微服务开发,rpc远程调用技术,springboot的web组件默认集成了springmvc,可以实现http+json的轻量级传输

2.springboot实现了什么减少配置

3.springboot中有几种事务

4.索引的类型,非主键索引细分

主键索引:数据库主键列使用的就是主键索引,一张表只有一个主键,且主键不能为null,部重复,在innodb表中,当没有显示指定表的主键时,innodb会自动检测表中是否有唯一索引的字段,有则设置默认主键,否则会自动创建自增主键

二级索引(辅助索引),二级索引有唯一索引,普通索引,前缀索引

唯一索引:允许数据为null,一张表允许多个唯一索引

普通索引:允许数据重复和null

前缀索引:适用于字符串的索引

全文索引:检索大文本数据中的关键字信息

聚集索引与非聚集索引

聚集索引即索引结构与数据存放一起的索引,主键索引属于聚集索引,优点:查询速度快,缺点:依赖有序数据,更新代价大

非聚集索引:索引结构和数据分开存放的索引,二级索引 优点:更新代价比聚集索引要小,缺点:依赖有序数据,可能会二次查询(回表)

覆盖索引,若需要查询的字段正好是索引的字段,就直接根据索引查到数据,无需回表查询

5.索引的数据结构

6.运行时数据区分为那几块

程序计数器,虚拟机栈,本地方法栈,堆,方法区

7.方法私有变量存在哪

8.年轻代垃圾回收算法

9.对java中数据流的理解,作用分类,适用场合

10.web开发基础,servlet,jsp

servlet的生命周期:web容器加载servlet,声明周期开始,调用servlet的init()方法进行servlet的初始化,通过调用service方法()实现根据请求的不同调用do方法,结束服务,web调用servlet的destory()方法

11.web发送请求后,请求和整个响应流程

域名解析-与服务器建立连接(3次握手)-发起http请求-服务器响应http请求,浏览器获得html代码-浏览器解析html代码,并请求html代码中的资源(js,css,图片)-浏览器对页面进行渲染

12.常用请求方式,get和post区别

get、post是http协议发送请求的两种方法,都是tcp连接,但由于http协议的规定和浏览器的限定,在应用中产生区别,

get产生一个数据包,post产生两个tcp数据包,

get请求只能进行url编码,而post支持多种编码

get请求参数会完整保留在浏览器历史记录里,而post中参数不会保留

get在url传输的参数是由长度限制,而post没有

get只接受ascii字符,post没有限制

get将参数暴露在url中,更不安全

get通过url传递,post放在request body中

get回退是浏览器会从之前缓存拿结果,post每次调用创建新的资源

13.请求那几部分组成,响应由那几部分组成

http请求报文由请求行,请求头,空行,请求数据组成

请求行:请求方法(get,post,head,put),url,http协议版本

请求头:产生请求的浏览器类型,客户端可识别的内容类型列表,主机地址

空行:发送回车符和换行符,通知服务器下不再有请求头

请求数据:用户提交的查询信息,在post方法中数据以keyvalue形式发送请求

http响应由响应消息行,响应消息头,响应正文

响应消息行:包含协议、版本,响应状态码,对响应状态码的描述

响应消息头:服务器与客户端通信的暗码,告诉客户端执行某些操作

响应消息正文

14.maven的理解

maven是java的自动化构建工具,1.约定的目录结构,2.pom,构建过程一切设置都在这个文件中进行配置,3,坐标(groupid,artfactid,version)确定一个maven工程4.仓库:本地仓库,远程仓库,5依赖,maven解析依赖信息从本地仓库查找被依赖的jar包,6.声明周期:清理,编译,测试,打包,安装,部署,生成项目报告,发布站点,7.继承,聚合

15.cookie和session

存储位置,cookie数据信息存放在客户端浏览器上,session存放在服务器上

存储容量,单个cookie保存<=4kb,站点最多保存20个cookie,session没有上限,但保证服务器端性能,设置session删除机制

存储方法:cookie只保存ascii字符串,通过编码方式存储unicode字符或二进制数据,session能存储任何类型数据

隐私:cookie对服务端可见,可以进行cookie欺骗,不安全,session在服务器上

有效期:cookie设置属性,达到长期有效,session不能长期有效

服务器压力,每个用户都会产生一个session,若并发访问十分多,会耗费大量内存

跨域支持,cookie支持跨域名访问,session不支持

16.转发和重定向

17.json数据格式和数据传递

json有两种格式:①对象格式:{"key1":obj,"key2":obj,"key3":obj...}、②数组/集合格式:[obj,obj,obj...]。

 在服务器端对象的转换过程可以使用官方提供的API,JSONObject和JSONArray分别为对象和数组的转换类型

当JSON经传输到达客户端时,需要完成JSON到JavaScript对象的转换,

如果使用JS原生的方法进行转换的话,可以使用eval()方法,但需要在JSON的前后连接上左右圆括号

18.程序的同步和异步

同步:
  主机A发送数据的时候,主机B必须等待接收,处于阻塞状态。

异步:
  主机A发送数据的时候,主机B无须等待接收,主机B要获得数据就从缓存里取,就好比别人给你发邮件一样。

19.ajax

20.动态代理

21.红黑树为什么查找快

22.object有哪些方法

23.数据库处理字符串的方法

concat(str1,str2)连接字符串函数

convert(str,signed)将str转化为数字类型

convert(datatype,getdate(),1)将数据类型datetime转为字符串

substring_index(str,分隔符,n)n代表第几个分隔符,n为正截取左边,n为负,截取右

substring(str,起始下标,长度)截取字符串

24.linux常用的命令

25.mapper文件怎么对应到dao层

26.mybatis标签类型,怎么使用,结果集怎么用,$和#的用法

resulttype返回类型

1.返回一般数据类型,像string,hashmap

2.返回javabean类型

3.返回list类型 注意这里的 resultType 返回值类型是集合内存储数据的类型,不是 'list'

4.返回map类型,reslutype填map

Mybatis 的Mapper.xml语句中parameterType向SQL语句传参有两种方式:#{}和${}

我们经常使用的是#{},一般解说是因为这种方式可以防止SQL注入,简单的说#{}这种方式SQL语句是经过预编译的,

它是把#{}中间的参数转义成字符串,举个例子:

select * from student where student_name = #{name} 

预编译后,会动态解析成一个参数标记符?:

select * from student where student_name = ?

而使用${}在动态解析时候,会传入参数字符串

select * from student where student_name = 'lyrics'

总结:

#{} 这种取值是编译好SQL语句再取值
${} 这种是取值以后再去编译SQL语句

#{}方式能够很大程度防止sql注入。
$方式无法防止Sql注入。
$方式一般用于传入数据库对象,例如传入表名.
一般能用#的就别用$.

27.select from where groupby orderby执行顺序

(7)  SELECT 
(8)  DISTINCT <select_list>
(1)  FROM <left_table>
(3)  <join_type> JOIN <right_table>
(2)  ON <join_condition>
(4)  WHERE <where_condition>
(5)  GROUP BY <group_by_list>
(6)  HAVING <having_condition>
(9)  ORDER BY <order_by_condition>
(10) LIMIT <limit_number>
首先执行from,from对两个表进行笛卡尔积,得到虚拟表
执行on进行条件过滤
添加外部和,只有当outer join才会发生,left outer join把左表作为保留吧,左表数据全部查询,若右表无对应数据,用null填充
执行where执行条件过滤
执行groupby对where的字句进行分组操作
执行having
执行select
执行distinct
执行orderby
执行limit分页
https://blog.csdn.net/weixin_43907800/article/details/105374147

28.线程的interrupt方法

中断线程,会设置该线程中断状态位,即设置为true,线程会不时检查这个中断标志位,以判断线程是否应该被中断

判断线程释放被中断,使用thread.currentThread().isinterrupted()方法(不会立刻清除中断标示位,不会中断标设置为false),而不要使用thread.interrupt(会将中断标示位清除,重新设置false)

如何中断线程

若线程处于阻塞状态,则在线程组检查中断表示如果发现中断表示为true,则会在调用出抛出interruptedException异常,抛出异常后立即将线程中断位标识清除,重新设置为false,抛出异常是为了线程从阻塞状态醒过来,并在结束线程前让程序员有足够的时间来处理中断请求

29.mysql中分页怎么做

a.limit关键字

select * from table  limit m,n

m代表记录开始的index,从0开始,n指从m+1条开始,取n条

b.主键索引或唯一索引加limit实现

假设每页10条,SELECT * FROM 表名称 WHERE id_pk > (pageNum*10) LIMIT M

c.基于索引再排序

SELECT * FROM 表名称 WHERE id_pk > (pageNum*10) ORDER BY id_pk ASC LIMIT M

30.aop和ioc

32.头插法和尾插法

33.脏读幻读

34.try和catch中有return时,finally里面的语句会被执行吗

如果程序是从try代码块或者catch代码块中返回时,finally中的代码总会执行。而且finally语句在return语句执行之后return返回之前执行的。当finally有返回值时,会直接返回。不会再去返回try或者catch中的返回值。

原文地址:https://www.cnblogs.com/ashin1997/p/14609235.html