汉王JAVA笔试题
1,jsp中动态include与静态include的区别?
(1)动态包含总是会检查文件中的变化,适合用于包含动态页面,并且可以带参数。
(2)静态包含不会检查所含文件的变化,适用于包含静态页面。
2.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
s1+1以后转换为了int型,赋给short型报错,需要强制转换类型。
没错,s1+=1,会自动转换成short型。
3.数组有没有length()这个方法?String有没有length()这个方法?
数组没有,有length属性,String有length()方法。
4.List,Map,set三个接口,存取元素,各有什么特点?
List:可以重复,有序
Set:不能重复,无序
Map:键值对的形式。
5.有错误吗?
public class Something { void doSomething(){ private String s=" "; int l=s.length(); }
}
有,不能定义为私有的,正确的应该是
public class Something { void doSomething(){ String s=""; int l=s.length(); } }
6.下列哪几行会报错?
import java.util.ArrayList; import java.util.List; public class Test { public static void main(String[] args) { List pList=new ArrayList(); pList.add("A");//第五行 pList.add("B");//第六行 for(int i=0;i<pList.size();i++){//第七行 String str=pList.get(i);//第八行 System.out.println(str); } }
}
第八行报错,返回的是一个object类型不能赋给string类型。
7.请倒序遍历arraylist
import java.util.*; public class Test3 { public static void main(String[] args) { ArrayList list=new ArrayList(); for (int i = 0; i < 10; i++) { list.add("list"+i); } System.out.println(list); //倒序遍历1 /*for (int i = list.size()-1; i >=0; i--) { System.out.println(list.get(i)); } */ //倒序遍历2 Collections.reverse(list); System.out.println(list); } }
8.js中同步和异步的区别,ajax请求时同步和异步如何设置?
(1)同步就是代码按顺序执行。
异步就是代码不按顺序执行,跳过执行。每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。
参考资料:
异步编程的方式:回调函数、时间监听、发布/订阅、Promises对象
http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html
(2)async参数设置为true就是异步,设置为false就是同步。
9.列举你使用过的js操作字符串的函数
concat
将两个或多个字符的文本组合起来,返回一个新的字符串。
indexOf
返回字符串中一个子串第一处出现的索引(从左到右搜索)。如果没有匹配项,返回 -1 。
charAt
返回指定位置的字符。
lastIndexOf
返回字符串中一个子串最后一处出现的索引(从右到左搜索),如果没有匹配项,返回 -1 。
match
检查一个字符串匹配一个正则表达式内容,如果么有匹配返回 null。
substring
返回字符串的一个子串,传入参数是起始位置和结束位置。
replace
用来查找匹配一个正则表达式的字符串,然后使用新字符串代替匹配的字符串。
参考资料:
http://www.cnblogs.com/qfb620/archive/2011/07/28/2119799.html
10.position的属性值有哪些?
|
11.有几种方式可以解决js中的跨域请求问题?
这里说的js跨域是指通过js在不同的域之间进行数据传输或通信,比如用ajax向一个不同的域请求数据,或者通过js获取页面中不同域的框架中(iframe)的数据。只要协议、域名、端口有任何一个不同,都被当作是不同的域。
1、通过jsonp跨域
2、通过修改document.domain来跨子域
3、使用window.name来进行跨域
4、使用HTML5中新引进的window.postMessage方法来跨域传送数据
参考资料:
http://www.cnblogs.com/2050/p/3191744.html#top
12.有一张借书记录表borrow,各字段如下
cno 借书卡号
bno 书号
rdate 还书日期
找出借书超过5本的借书卡,输出借书卡号及所借图书册数
select cno "借书卡号",count(bno) "所借图书册数" from borrow group by cno having count(bno)>5;
13下面是选自“orders”表的数据:
orderID employeeID orderDate
10248 5 1996-07-04
10249 6 1996-07-05
10250 4 1996-07-08
选自employee表数据:
employeeID Name BirthDate
1 Davolio 1968-12-08
2 Fulier 1952-02-19
3 Leverling 1963-08-30
查找注册超过10个订单的员工。
select * from employee where employeeID in(select employeeID from orders group by employeeID having count(orderID)>5);
14,请写出“单例”模式的实现
class Single{ private Single(){} private static Single s=new Single(0; public Single getSingle(){ return s; }}
笔试过了以后,就愉快地接到了电话到公司面试。
but,还要再做一份题,汗。。。。
汉王一面笔试题
1.Java中int类型的取值范围:-2的32次方到2的32次方-1
2.请定义一个值为5的整数常量:final int x=5;
3.请定义一个list类型的对象,向其添加任意两个字符串,并打印List类型对象所容纳的元素个数。
List list=new ArrayList(); list.add("a"); list.add("b"); System.out.println(list.size());
4.请用while语句重写以下代码。list为接口,不能new对象。
int sum=0; for(int i=5;i<9;i++){ sum+=i; }
改写后的代码
int n=5; int s=0; while(n<9){ s+=n; n++; }
5.请写出以下代码的输出。
int i=0; int[] array={1,2,3,4,5,6,7}; int sum=0; for (i= 0; i < array.length; i++) { sum=sum+array[i]; i++; } System.out.println("sum"+sum);//1+3+5+7=16 System.out.println("最后的"+i);//8
6.请写出以下代码的输出
package com.test; public class Test4 { public static void main(String[] args) { int x=0; String s="hello"; int[] arrayX={1,2}; int[] arrayY={8,9}; doSomethingToParameters(x,s,arrayX,arrayY,arrayY);//1hi System.out.println(x+s);//0hello System.out.println(arrayX[0]+arrayX[1]);//3 System.out.println(arrayY[0]+""+arrayY[1]);//910 } public static void doSomethingToParameters(int x,String s,int[] arrayX, int[] arrayY,int[] anotherArray){ x++; s="hi"; int[] arrayNew={3,4}; arrayX=arrayNew; arrayY[0]++; anotherArray[1]++; System.out.println(x+s); } }
7.请写出以下代码的输出
try { if(true) throw new Exception(); System.out.println("1"); } catch (Exception e) { System.out.println("2"); throw new Exception(); }finally{ System.out.println("3"); } System.out.println("4");
2
3
Exception in thread "main" java.lang.Exception
at com.test.Test5.main(Test5.java:12)
8.根据以下代码
class A{ public static void methodStatic(){} public void methodPublic(){} protected void methodProtected(){} private void methodPrivate(){} } class B extends A{ public void doSomeThing(){ //add a line of code here } }
将下列哪些代码加入到B.doSomeThing()方法中会导致错误:
A.methodStatic(); new A().methodStatic(); A.methodPublic();//不是静态的不能直接调用 new A().methodPublic(); A.methodProtected();//不是静态的不能直接调用 new A().methodProtected(); A.methodPrivate();//私有的只能在本类调用 new A().methodPrivate();//私有的只能在本类调用
9.一个四位数除以365得到的商和余数相加,最大可能是多少?
先把余数设置为364,再计算商的值。
364+x*365<10000;
x<26.4
26+364=390
接下来是面试官问的问题,一般都会根据简历提问。
(1)登录的过程中值是怎样传递的,验证码是怎样产生的。
(2)forward和sendRedirect的区别
(3)sessionID是怎么回事?
Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服务器建立连接的时候,服务器会给用户分发一个SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。 |
(4)手写二分查找算法
public void find2(int[] arr,int n){ int start=0; int end=arr.length-1; int sign=-1; while(start<end){ middle=(start+end)/2; if(arr[middle]>n){ end=middle-1; }else if(arr[middle]<n){ start=middle+1; }else{ sign=middle; } } syso(sign); } |
(5)排序算法有哪些?它们的时间复杂度是多少?一般都选哪种排序?
选择、冒泡、插入,因为是两重循环,时间复杂度差不多都是o(n^2)。
汉王在武汉的研发中心是新开的,办公室都没几个人,你去了就是元老级别的人物了,加油。