张孝祥现身讲解JAVA面试题(迅雷)

1.AJAX的原理、如何实现刷新及其优点。

      传统的WEB访问,都是通过浏览器发送请求,得服务器的响应结果;只要收到结果,就会在浏览器窗口显示,此时就会把原有的页面替换掉!

      但是在一些应用中,我们希望保持原来的网页,只是在原网面的局部修改显示,例如注册用户时,对用户名是否重复的校验,google搜索提示框的提示,省份与城市的级联下拉列表框。

      为了实现这种不替换原来网页的效果,就不能用浏览器直接发请求了,各种Javascript引擎都提供了一个js对象,用这个对象瞒着浏览器,偷偷与服务器交互,并得到服务器的返回结果 ,再用js代码集合DOM模型修改原网页中的某些元素。

     在firefox和ie7等浏览器中,那个js对象是XMLHttpRequest,在ie7以前的ie浏览中,是一个ActiveXObject对象提供的,这个对象通常简称为xhr对象,它有open,connect,send等方法。例如下面一段代码:

     1)服务器程序(Servlet代码,容器调用service()方法,决定用doPost(), doGet()方法);

     2)页面:html中写一个form表单,两个input, 其中username, οnblur="validateUserName()"

     3)js代码

<script type="text/javascript">

function validateUserName(){

  var username = document.getElementById("username").value;

  alert(username);

  var xhr = new XMLHttpRequest();

  xhr.open('GET', "/serviceProject/abc.html?username="+username, false);//异步false还是同步true

  xhr.onreadystatechange=function(){ 

    xhr.send(null);

    alert(xhr.readyState);

    if(xhr.readyState == 4){

      document.getElementById("result").innerHTML = xhr.reponseText;

    }

  }

  //alert(xhr.reponseText); 

}

</script>

 

 2.门面模式

访问者,通过一个门面(Facade)来访问各个组件。

 

3.常用的6个linux的命令:ls cd man cat mkdir clear 

 

4.SQL

 

编程:

 1. 多线程

主线程

public class CommunicationTest{

static boolean bShouldSub = true;

public static void main(String[] args){

   //final boolean bShouldSub = true;

   new Thread(){

      public void run(){

        for(int i =0; i<50; i++){

          synchronized(CommunicationTest.class){

             if(!bShouldSub)

                try{CommunicationTest.class.wait();}catch(Exception e){}

             for(int j=0; j<10; j++){

               try{Thread.sleep(200);}catch(Exception e){}

               System.out.println(Thread.currentThread().getName() +":"+(j+1));

             }

             bShouldSub = false;

             CommunicationTest.class.notify();

          }

        }

      }

   }.start();//加了大括号就是Thread的子类

   for(int i=0; i<50; i++){

      synchronized(CommunicationTest.class){

          if(bShouldSub)

                try{CommunicationTest.class.wait();}catch(Exception e){}

          for(int j=0; j<10; j++){

             try{

                 Thread.sleep(new Random().nextInt(1000));

             }catch(Exception e){}

             System.out.println(Thread.currentThread().getName() +":"+(j+1));

          }

           bShouldSub = true;

           CommunicationTest.class.notify();

      }

   }

}

}

 

HashCode 的原理及作用?

java中的每一个对象都可以有一个标示,即hashcode值,有的可以一样,有的不一样;hashcode值128位,通过%、/等标准进行分堆归类,(引申:equals()相等,但hashcode值不一定一样)

 

用java怎么实现每天有1亿条记录的DB存储?MySQL每天有上亿记录数据量的数据库如何设计?

用PreparedStatement代替Statement,要注意该对象被重用,才能发挥其性能价值;数据库设计应该将存储记录的表分表设计。

 

从一亿条记录中查找看过5个以上电影的用户数量?

 

select count(*) as c from user group by userid having c >5;

对组进行条件过滤用having 不是where,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值