面试题总结1

面试一:

问题一:HttpSession的创建过程以及服务器端如何管理session?

将数据保存在session中

从get方式的参数或form中获取需要保存的数据

---创建session

---将该数据保存在session中  session.setAttribute("prod", prod);

--创建cookie

--将该session的id保存在session中

--将cookie通过response返回给浏览器

服务器获取session保存的数据:

创建session

--从session中获取之前保存的数据  (String) session.getAttribute("prod")

问题二:如果用户的浏览器禁用cookie,如果继续使用session?

https://blog.csdn.net/xiaodanjava/article/details/8652172

当客户端浏览器中禁止 Cookie,Servlet 容器无法从客户端浏览器中取得作为 Cookie 的 Session ID,也就无法跟踪客户状态。 

Java Servlet API 中提出了跟踪 Session 的另一种机制,如果客户端浏览器不支持 Cookie,Servlet 容器可以重写客户请求的 URL,把 Session ID 添加到 URL 信息中

HttpServletResponse 接口提供了重写 URL 的方法:public java.lang.String encodeURL(java.lang.String url) 

该方法的实现机制为: 
● 先判断当前的 Web 组件是否启用 Session,如果没有启用 Session,直接返回参数 url。 
● 再判断客户端浏览器是否支持 Cookie,如果支持 Cookie,直接返回参数 url;如果不支持 Cookie,就在参数 url 中加入 Session ID 信息,然后返回修改后的 url。

举例:

当使用浏览器访问某个servlet或JSP文件时,例如<a href=“maillogin.jsp“> 

如果浏览器未关闭cookie时,cookie中携带了session的id ;

当浏览器关闭cookie时,cookie无法携带session的id,那使用什么方式来携带session的id呢??

使用重写URL--使用response.encodeUrl()   , 例如 <a href=<%=response.encodeURL(“maillogin.jsp“)%>> ,

这样当使用session然后浏览器关闭cookie时,访问该jsp时,会在后面自动添加session的id

问题三:hibernate中对象的三种状态分别是什么?详细说明

//TODO

问题四:spring框架ioc的底层原理(不是指怎么实现的,而是利用什么原理实现的)

注解和反射

问题五: jQuery 里的 each()方法如何continue(跳过本次循环),如何break(结束循环)?

在js的for循环或者while循环中,都是采用break,continue来进行退出循环以及跳出循环。但是在jquery中的each循环时,退出循环是需要使用return false,跳出循环时需要使用return true;

$.each(Object, function(name, value) {

     this;      //this指向当前属性的值

     name;      //name表示Object当前属性的名称

     value;     //value表示Object当前属性的值

     return false;//退出循环

     return true;//跳出循环

});

each() 方法规定为每个匹配元素规定运行的函数

输出每个 li 元素的文本:

$("button").click(function(){
  $("li").each(function(){
    alert($(this).text())
  });
});

问题六:jquery如何阻止事件冒泡?

问题七:html5自定义属性是什么?

面试二:

1、面向对象

2、前端和后端交互

1、servlet--jsp   : 

2、前后端分离 : 前端html页面通过ajax调用后端的restuful api接口并使用json数据进行交互

使用了前后端分离

eg1:

login.html  

      var url="doLogin.do";
      $.post(url,params,function(result){
          debugger;
          if(result.state==1){
            //跳转到indexUI对应的页面
            location.href="indexUI.do?t="+Math.random();
          }else{
            $(".login-box-msg").html(result.message); 
          }
          return false;
      });

eg2:

      var url="menu/doFindZtreeMenuNodes.do";
      //异步加载数据,并初始化数据
      $.getJSON(url,function(result){//访问该url后,将结果存放在result中
          if(result.state==1){
              //使用init函数需要先引入ztree对应的js文件
              zTree=$.fn.zTree.init(
                      $("#menuTree"),
                      setting,
                      result.data);
          }else{
              alert(result.message);
          }
      })

eg3:

      $.post(url,params,function(result){
          if(result.state==1){
              alert(result.message);
              doCancel();
          }else{
              alert(result.message);
          }
      });

      @RequestMapping("doSaveObject")
      @ResponseBody
      public JsonResult doSaveObject( SysRole entity){
          sysRoleService.saveObject(entity);
          return new JsonResult("save ok");
      }

3、ajax

$.post(url,param,function(result){

   .......

}){}

$.getJSON(url,function(result){

  ......

});

$("body").load("role/listUI.do",fuction(){   //在某个位置异步加载某也url页面

   .....

});

$.ajax(

    url...

    type..

    data ....

);

4、jquery选择器(注意:只看HTML,jsp和jquery,其他向js、dhtml、css 可以不看,没那么多精力)

$("div").css();

$("#b2").css();

5、数据库事务特性,脏读、幻读、不可重复读,事务隔离性

事务特性:ACID

A automic   :

C consistent  :

I isolate: 一个事务在执行时,事务内部正在操作的数据必须封锁起来,不会被其他事务修改,类似于Java中多线程的同步锁

D duration: 对数据库中数据的操作具有永久性,就算系统出现了故障,也可以使用数据库的备份恢复来保证数据的修改

脏读(没用的数据):事务A-新增后未提交 ,事务B读取了

不可重复读:修改或删除 ; 

幻读:新增 ;事务A--读取某个条件或某一行的数据;事务B--插入复合该条件的数据;事务A--再读取该条件的数据,

事务隔离级别:

读未提交:允许脏读,不允许同时修改

读提交:允许不可重复读,不允许脏读

可重复的:允许幻读,不允许不可重复读和脏读

事务序列化:一个事务完成,另一个事务才能开始执行

6、线程池

Excecutor类的下述静态方法,可以返回ExcecutorService对象,其表示线程池

newSingleThreadPool() 

newFixedThreadPool()

newScheduleThreadPool()

newCachedThreadPool()

ExcecutorService对象执行excecute()或submit()会创建一个线程来执行指定任务

    |--submit()会返回一个future对象,用于判断线程是否执行成功

ExececutorService对象执行shutdown()会关闭线程池

见见线程池博客

7、string转integer,double转integer

integer转string:  

1、String str = Integer.toString(a);

2、String str = String.valueOf(a);

string转integer:

1、Integer i = Integer.valuesOf(str);

string  <----> integer  , 需要进行非空判断

8、sql语句

select * from user;

insert into user values(null,"tang",24);

delete from user where id = 1;

update user set name="peng" where id = 2;

9、springmvc注解

@RequestBody

通过@requestBody可以将请求体中(post)JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。

    $.ajax({
        url:"/login",
        type:"POST",
        data:'{"userName":"admin","pwd","admin123"}',
        content-type:"application/json charset=utf-8",
        success:function(data){
          alert("request success ! ");
        }
    });
    @requestMapping("/login")
    public void login(@requestBody String userName,@requestBody String pwd){
      System.out.println(userName+" :"+pwd);
    }

猜你喜欢

转载自blog.csdn.net/qq_24271537/article/details/81668170