日期:2014-05-17  浏览次数:20720 次

遇到几道面试题,请各位解答!
【1】介绍下常用的数据结构及内部实现原理
【2】学号(ID),姓名(name),成绩(result),班级(classID),请用SQL语句完成如下查询:
1.求出各班的及格率(成绩>=60)    2.求出各班的优秀率(成绩>=80)
【3】jsp中,session对象存放在哪个地方,如何进行存取,存在服务器哪个地方,如何存的?如何防止用户打开两个浏览器窗口操作导致的session混乱?
------解决方案--------------------
【1】百度、谷歌。。。
【2】
select classID, count(case when result>=60 then 1 else null end)/count(ID) as '合格率',count(case when result>=80 then 1 else null end)/count(ID) as '优秀率' from 学生成绩表 group by classID;  
【3】jsp中session的获取request.getSession();
存:session.setAttribute("key",VALUE);
取:session.getAttribute("key");
session存放在服务端的内存中。
session中存放登录用户的id,进入系统前进行判断,如果存在则提示不能登入系统。

------解决方案--------------------
1和2楼上说的很清楚。补充一下最后一个问。如何防止用户打开两个窗口所造成的session混乱。每一个浏览器访问服务器十,服务器都会为其创建一个线程。因为只有在不同的线程中取到的对象才不同。那么只要浏览器不变,服务器就不会新创建线程。意思就是不管你打开多少个窗口始终只有一个线程。而且一个线程也只有一个session对象,就防止了session混乱。这叫线程单例!