Java面试题(一)

一、前言

昨天去了一家公司面试,被一些基础知识给被虐了,于是之整理以记之。
再次强调:基础很重要,基础很重要,基础很重要。

二、题目

1、js的闭包是什么?

当时听到这个题目是懵逼的,其实之前是玩过闭包的,可能当时就不是太理解,当时忘记了,也没想到会问这个。
举个栗子吧。

var result=[];
function foo(){
    var i= 0;
    for (;i<3;i=i+1){
        result[i]=function(){
            alert(i)
        }
    }
};
foo();
result[0](); // 3
result[1](); // 3
result[2](); // 3

上面已经给出了答案。每个alert的都是3。
闭包是一个比较抽象的概念,尤其是对js新手来说.书上的解释实在是比较晦涩。我就用最简单粗俗的理解了:就是一个function里面返回另一个function。上面之所以每个alert都是3因为闭包中所记录的自由变量,只是对这个变量的一个引用,而非变量的值,当这个变量被改变了,闭包里获取到的变量值,也会被改变。

// 这是对上面方法的改造
function foo(){
    var i= 0;
    for (;i<3;i=i+1){
        result[i]=(function(j){
            return function(){
                alert(j);
            };
        })(i);
    }
};

2、session共享问题

session的生命周期
创建:Sessinon在用户访问第一次访问服务器时创建,需要注意只有访问JSP、Servlet等程序时才会创建Session,只访问HTML、IMAGE等静态资源并不会创建Session,可调用request.getSession(true)强制生成Session。
销毁: 
1. 服务器会把长时间没有活动的Session从服务器内存中清除,此时Session便失效。Tomcat中Session的默认失效时间为20分钟。
2. 调用Session的invalidate方法。

关于具体共享问题:查看此博客,讲的已经非常好了。

3、如果客户端禁止cookie了,怎么解决

使用URL重写

 HttpSession session  = req.getSession();  
 String path = resp.encodeRedirectURL( "/world" ); 
 System.out.println( "jsessionId是:" + req.getSession().getId() );  

4、Object o = new Object();int a = 1 ,o,a分别存放在哪里?

o存放在哪里比较简单,o是引用存放在栈里,new Object()实例存放在堆里。
关于a:首先在栈中创建一个a的引用,然后在栈中查找是否有1这个字面量,如果有,直接将a的引用指向1,如果没有则创建一个1。

5、什么是xss

xss:中文就是跨站脚本注入。
简单来说就是在一个页面的输入框让你填写用户名密码,你呢,搞一段js来侵入别人网站。
防止:我们可以写一个filter来过滤掉一些脚本。主要思路是包装:HttpServletRequest类。具体看以下博客:
http://blog.csdn.net/fywt98/article/details/54425364

三、总结

问了好多,记住的没几个,很尴尬,再次强调,对一个问题一定要理解透了,即使是很简单的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值