综合面试题

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);




猜你喜欢

转载自www.cnblogs.com/yh2two/p/11782427.html