汉王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)。
汉王在武汉的研发中心是新开的,办公室都没几个人,你去了就是元老级别的人物了,加油。