综合面试题
Posted yh2two
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了综合面试题相关的知识,希望对你有一定的参考价值。
post ,get 请求的区别?
get:url参数可见,不安全,长度受限,url可传播
post:url参数不可见,安全,长度不受限,url不可传播
solr和es的区别
solr(与zeekper配合才能分布式,建索引慢,检索快),电商数据稳定,不需要快速更新索引,查询多;
Es(更适合分布式,建索引块,查询稍微慢),社交网站,构建索引块,发帖后别人可以最快时间搜索到
前后端交互的形式,单点登录怎么实现的?
前后端交互方式:ajax
什么是单点登录?
单点登录(Single Sign On),简称为 SSO,
是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
单点登录实现:
登录成功后保存token到redis并返回给前端,前端会附加在下次请求的http头(header)中以供服务器验证
访问每个请求时,先从header中获取token,再根据token获取User信息,如果User不为null,则证明token没有失效,可继续访问
当token即将过期时,进行token置换,在新token存入redis之前,为老token续
outMemeryError是什么异常,产生异常的原因
内存不足、内存溢出错误
原因:
检查代码中是否有死循环或递归调用。
检查是否有大循环重复产生新对象实体。
检查对数据库查询中,是否有一次获得全部数据的查询。一般来说,如果一次取十万条记录到内存,就可能引起内存溢出。这个问题比较隐蔽,在上线前,数据库中数据较少,不容易出问题,上线后,数据库中数据多了,一次查询就有可能引起内存溢出。因此对于数据库查询尽量采用分页的方式查询。
检查List、MAP等集合对象是否有使用完后,未清除的问题。List、MAP等集合对象会始终存有对对象的引用,使得这些对象不能被GC回收。
启动参数内存值设定的过小,对tomcat容器,可以在启动时对jvm设置内存限度。对tomcat,可以在catalina.bat中添加:
set CATALINA_OPTS=-Xms128M -Xmx256M
set JAVA_OPTS=-Xms128M -Xmx256M
什么是跨域?怎么解决跨域问题? https://www.cnblogs.com/zhaosq/p/10511633.html
跨域,指的是浏览器不能执行其他网站的脚本。
它是由浏览器的同源策略造成的,
是浏览器对javascript施加的安全限制。
所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:
http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)
http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)
http://abc.123.com/index.html 调用 http://def.123.com/server.php (子域名不同:abc/def,跨域)
http://www.123.com:8080/index.html 调用 http://www.123.com:8081/server.php (端口不同:8080/8081,跨域)
http://www.123.com/index.html 调用 https://www.123.com/server.php (协议不同:http/https,跨域)
请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。
解决跨域(由前端人员来解决):
比如:jsonp跨域
JSONP(JSON with Padding:填充式JSON),应用JSON的一种新方法,
JSON、JSONP的区别:
1、JSON返回的是一串数据、JSONP返回的是脚本代码(包含一个函数调用)
2、JSONP 只支持get请求、不支持post请求
(类似往页面添加一个script标签,通过src属性去触发对指定地址的请求,故只能是Get请求)
jquery实现:
<script type="text/javascript">
$.ajax({
type: "get",
async: false,
url: "http://localhost:8546/Service.ashx",
dataType: "jsonp",
success: function (data) {
alert(data);
},
error: function () {
alert(‘fail‘);
}
});
</script>
jdk1.8新特性
1、接口中可以写方法体,使用default关键字
public interface NewCharacter {
public void test1();
public default void test2(){
System.out.println("我是新特性1");
}
}
2、Lambda 表达式
interface MathOperation{ int operate(int a,int b) }
调用:
MathOperation plus=(a,b)->a+b
sout(plus.operate(1,2))
3、函数式接口:“函数式接口”是指仅仅只包含一个抽象方法的接口
@FunctionalInterface
public interface MyLamda {
public void test1(String y);
//这里如果继续加一个抽象方法便会报错
//public void test1();
}
看一下这个接口的调用,符合lambda表达式的调用方法
MyLamda m = y -> System.out.println("ss"+y);
以上是关于综合面试题的主要内容,如果未能解决你的问题,请参考以下文章