今天的面试题集

1、setTimeout()和setInterval()的区别?
    计时器setTimeout()与setInterval()是原生JS很重要且用处很多的两个方法, 但很多人一直误以为是相同的功能: 间隔时间重复执行传入的句柄函数. 但实际上, 并非如此, 既然JS给出了两个不同的命名, 肯定有其迥异之处.
    先来看看两者JS手册及英文词典上的解释:
    JS手册»setTimeout() : 用于在指定的毫秒数后调用函数或计算表达式;
    英文释义»timeout() : 超时;暂时休息;工间休息;
    JS手册»setInterval() : 按照指定的周期(以毫秒计)来调用函数或计算表达式. 会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭;
    英文释义»interval() : 间隔;间距;幕间休息;
    不难看出, 只要我们仔细体会JS手册及命名释义, 就能很容易的区分开两者的区别. 简单的说, 两才的区别在于,setTimeout()方法是在等待指定时间后执行函数, 且只执行一次传入的句柄函数. setInterval()方法是每指定间隔时间后执行一次传入的句柄函数,循环执行直至关闭窗口或clearInterval().
 
 
<html>
    <head>
<meta charset="gbk">
<title>setTimeout()与setInterval()方法的区别</title>
<style>
    #demo p{
                    font-weight:bolder
              }
    #demo input{
                    margin:10px 0 10px 20px;padding:3px 8px;
                    font-size:14px;font-weight:bolder;
                }
    #demo h5{
                    margin-top:30px;
                    padding:3px 10px;
                    background:#D2D9DF;
                    letter-spacing:1px
              }
    #demo pre{
                    margin-bottom:20px;
                    padding:10px;
                    background:#eee;
                    border:1px solid #ccc;
line-height:18px;
                    line-height:24px;
                    font-size:16px;
               }
</style>
    </head>
    <body>
<!--DEMO start-->
<div id="demo">
    <p>点击按钮查看效果(2s后弹出): 
                    <input type="button" value="setTimeout" />
                    <input type="button" value="clearTimeout" />
              </p>
    <p>点击按钮查看效果(每2s弹出):
                    <input type="button" value="setInterval" /> 
                    <input type="button" value="clearInterval" /></p>
</div>
<!--DEMO end-->
<script>
    var timeout=function(){
alert('等待2s后弹出,仅此一次!在等待时间内clearTimeout可停止执行!')
}
    var interval=function(){
        alert('每2s循环弹出,直至clearInterval或关闭窗口!')
    }
    var input=document.getElementsByTagName('input');

    var clearTimeoutFun=null;
    var clearIntervalFun=null;

    input[0].οnclick=function(){
        clearTimeoutFun=setTimeout(timeout,2000);
    }
    input[1].οnclick=function(){
        clearTimeout(clearTimeoutFun);
    }
    input[2].οnclick=function(){
        clearIntervalFun=setInterval(interval,2000);
    }
    input[3].οnclick=function(){
        clearInterval(clearIntervalFun);
    }

</script>
    </body>
</html>

2、删除重复数据?
    delete 重复字段 form 表 in(select 重复字段 from 表 group by 重复字段 having count(*) > 1 )

3、delete()和truncate()的区别?
truncate操作与delete操作对比
操作
回滚
高水线
空间
效率
Truncate
不能
下降
回收
delete
可以
不变
不回收
4、forward()和redirect()的区别?

    forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。
    redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取
 
    前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;

    后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
 
    a页面-------->b页面(-->代表两种方法的一种)
    a页面里有一个动作:request.setAttribute("temp",object);
 
    Response.forward()---->用这个方法到达b,可以在b里通过request.getAttribute("temp")得到存储的object对象,这个方法扩大了request里保存的值的作用范围;
    Response.redirect()---->用这个方法到达b,object对象将丢失。
 
    如果想到达b页面(无论是哪个方法)而有想得到object对象,则最好将object对象保存在request.getSession()里,也就是Session对象里
来源: <http://blog.csdn.net/senmon2004/article/details/654049>

 


5、如果两个对象==,他们的hashCode是否相同,如果两个对象的hashCode相同,这两个对象是否equals();
    两个对象==,他们的hashCode一定相同;
    两个对象的hashCode相同,这连个对象不一定equals()

6、列举常用的java包
    java.lang、java.io、java.sql、java.net、java.math、java.util

7、集合的特点和区别?
    
    
8、web.xml中servlet、filter、context-param、listener的加载顺序
    context-param -> listener -> filter -> servlet

9、根据如下代码写出其运行结果:
 
package com.newbie.test;
public class Interview {
    public static void main(String[] args) {
        new Child().printx();
    }
}
class Child extends Father{
    
    static {
        System.out.println("Child --> static");
    }
    
    private int n = 20;
    
    //构造代码块在构造函数之前执行,构造代码块初始化在成员变量显示初始化之后
    {
        //System.out.println(n);
        n = 30;
        System.out.println("n=" + n);
    }
    
    public Child(){
        this("The other construction");
        //當程序執行到這時,成員變量并未显示初始化
        System.out.println("Child construction body : " + n);
    }
    
    public Child(String s){
        System.out.println(s);
    }
    
    public void age(){
        System.out.println("age=" + n);
    }
    
    public void printx(){
        System.out.println("x=" + x);
    }
    
    public static void main(String[] args){
        new Child().printx();
    }
}
class Father{
    
    static {
        System.out.println("super --> static");
    }
    
    private static  int n = 10;
    
    public int x = 100;
    
    public Father(){
        System.out.println("super's x=" + x);
        age();
    }
    
    public void age(){
        System.out.println("nothing");
    }
    
    public void printx(){
        System.out.println("x=" + x);
    }
}        


运行结果:
E:\Users\Desktop>javac Interview.java
E:\Users\Desktop>java Interview
super --> static
Child --> static
super's x=100
age=0
n=30
The other construction
Child construction body : 30

x=100
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值