汉王JAVA笔试题

时间:2020-12-17 21:28:25

汉王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的属性值有哪些?

absolute

生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

fixed

生成绝对定位的元素,相对于浏览器窗口进行定位。

元素的位置通过 "left", "top", "right" 以及 "bottom" 属性进行规定。

relative

生成相对定位的元素,相对于其正常位置进行定位。

因此,"left:20" 会向元素的 LEFT 位置添加 20 像素。

static

默认值。没有定位,元素出现在正常的流中(忽略 top, bottom, left, right 或者 z-index 声明)。

inherit

规定应该从父元素继承 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)。

汉王在武汉的研发中心是新开的,办公室都没几个人,你去了就是元老级别的人物了,加油。