Java笔试笔记

来源:互联网 发布:大数据就业资薪是多少 编辑:程序博客网 时间:2024/04/27 20:31

1.

线程实现的几种方法:

//1.继承thread,调用run()方法public class ThreadTest extends Thread{public static void main(String[] args){(new ThreadTest()).run();System.out.println("main thread is running!");}public synchronized void run(){System.out.println("sub thread is running!");}}

<pre name="code" class="java">//2.实现Runable接口public class ThreadTest implements Runnable{public static void main(String[] args) {(new Thread(new ThreadTest())).start();}@Overridepublic void run() {// TODO Auto-generated method stubSystem.out.println("sub thread is running!");}

2.

try catch finally 运行顺序

public class TryCatchFinallyTest {public int add(int a,int b){           try {            return a+b;              }        catch (Exception e) {             System.out.println("catch语句块");        }        finally{             System.out.println("finally语句块");        }        return 0;   }     public static void main(String argv[]){     TryCatchFinallyTest test =new TryCatchFinallyTest();         System.out.println("和是:"+test.add(9, 34));     }
如果try模块报错则运行catch模块里的语句,也会执行finally里的语句。如果try模块里无异常,则不执行catch里的语句,也会执行finally里的语句。

注意的是:try里的语句执行后会被暂时保存,不会立即输出,而是当finally里的语句输出后才会输出,所以以上代码的执行结果为:

finally语句块
和是:43

3.

语句:char foo='中',是否正确?(假设源文件以GB2312编码存储,并且以javac – encoding GB2312命令编译)

Java语言中,中文字符所占的字节数取决于字符的编码方式,一般情况下,采用ISO8859-1编码方式时,一个中文字符与一个英文字符一样只占1个字节;采用GB2312或GBK编码方式时,一个中文字符占2个字节;而采用UTF-8编码方式时,一个中文字符会占3个字节。

4.

java.sql: 用于存取数据库能力的包

 java.swt :java 图形界面的包

java.lang:java语言的核心好,lang是language的简写

java.swing:经过java封装的与操作系统无关的图形界面包

5.

整型常量 i  :static final int i;  static修饰静态变量,即当利用这个关键字来修饰一个变量的时候,在创建对象之前就会为这个变量在内存中创建一个存储空间。以后创建对对象如果需要用到这个静态变量,那么就会共享这一个变量的存储空间。因为是常量所以要加上 final。

6.

下列程序的运行结果
public void getCustomerInfo() {        try {            // do something that may cause an Exception        } catch (java.io.FileNotFoundException ex) {            System.out.print("FileNotFoundException!");        } catch (java.io.IOException ex) {            System.out.print("IOException!");        } catch (java.lang.Exception ex) {            System.out.print("Exception!");        }    }
IOException!
 因为如果捕获到了一种类型的异常,后面层级更高的异常就不会执行了。
7.
List,Set,Map在java.util包下都是接口
List有两个实现类:ArrayList和LinkedList
Set有两个实现类:HashSet和LinkedHashSet
AbstractSet实现了Set

以后创建对对象如果需要用到这个静态变量,那么就会共享这一个变量的存储空间。
8.有以下一段代码,请选择其运行结果。( )
public class Spike{    public static void main(String[] args)    {        Counter a = new Counter();        System.out.println(a.increment());        System.out.println(a.anotherIncrement());        Counter b = new Counter();        System.out.println(b.increment());    }}class Counter{    private static int count = 0;    public int increment()    {        return count++;    }    public int anotherIncrement()    {        return ++count;    }}

结果:
0 2 2
count是 !静态变量,为所有对象所共享!因此不管a.increment()还是b.increment()都会使count持续增加。
increment()方法返回当前count值,然后count增加1
antoherIncrement()方法让count增加1,然后返回count值
第一次a.increment()返回值为0,此时count值为1
第二次a.anotherIncrement()先让count+1再返回,返回值为2
第三次b.increment()先返回count当前值2,然后count+1
9.
对于JVM内存配置参数:
-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3 
,其最小内存值和Survivor区总大小分别是()
-Xmx:最大堆大小
-Xms:初始堆大小
-Xmn:年轻代大小
-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值
年轻代5120m, Eden:Survivor=3,Survivor区大小=1024mSurvivor区有两个,即将年轻代分为5份,每个Survivor区占一份),总大小为2048m。
-Xms初始堆大小即最小内存值为10240m
10.
执行以下程序后的输出结果是()
public class Test {public static void main(String[] args) {    StringBuffer a = new StringBuffer("A");     StringBuffer b = new StringBuffer("B");     operator(a, b);     System.out.println(a + "," + b); } public static void operator(StringBuffer x, StringBuffer y) {     x.append(y); y = x; }}

 StringBuffer a = newStringBuffer("A"); 
    StringBuffer b = newStringBuffer("B"); 

此时内存中的状态如下图所示:


publicstaticvoidoperator(StringBuffer x, StringBuffer y) { 
    x.append(y); y = x; 
}
进入如下方法后,内存中的状态为:


 x.append(y);
这条语句执行后,内存的状态为:


 y = x; 
这条语句执行后,内存的状态为:


operator方法执行完毕后内存中的状态为:因为方法执行完毕,局部变量消除。

有内存中的状态,可以知道最后的结果。
11.
Integer i = 42;Long l = 42l;Double d = 42.0;

下面为true的是
A.(i == l)
B.(i == d)
C.(l == d)
D.i.equals(d)
E.d.equals(l)
F.i.equals(l)
G.l.equals(42L)
包装类的“==”运算在不遇到算术运算的情况下不会自动拆箱
包装类的equals()方法不处理数据转型
A、B、C 用==比较的是对象的地址,返回false
D、E、F 中比较的两个对象的类型不同,返回false

12.下面哪项技术可以用在WEB开发中实现会话跟踪实现?
会话跟踪是一种灵活、轻便的机制,它使Web上的状态编程变为可能。
HTTP是一种无状态协议,每当用户发出请求时,服务器就会做出响应,客户端与服务器之间的联系是离散的、非连续的。当用户在同一网站的多个页面之间转换时,根本无法确定是否是同一个客户,会话跟踪技术就可以解决这个问题。当一个客户在多个页面间切换时,服务器会保存该用户的信息。
有四种方法可以实现会话跟踪技术:URL重写、隐藏表单域、Cookie、Session。
1).隐藏表单域:<input type="hidden">,非常适合步需要大量数据存储的会话应用。
2).URL 重写:URL 可以在后面附加参数,和服务器的请求一起发送,这些参数为名字/值对。
3).Cookie:一个 Cookie 是一个小的,已命名数据元素。服务器使用 SET-Cookie 头标将它作为 HTTP
响应的一部分传送到客户端,客户端被请求保存 Cookie 值,在对同一服务器的后续请求使用一个
Cookie 头标将之返回到服务器。与其它技术比较,Cookie 的一个优点是在浏览器会话结束后,甚至
在客户端计算机重启后它仍可以保留其值
4).Session:使用 setAttribute(String str,Object obj)方法将对象捆绑到一个会话
13.Java程序中的类名称必须与存放该类的文件名相同?
错误!如果类中有内部类,则可以不与该类的文件名相同。
由此,详解一下内部类:http://www.cnblogs.com/dolphin0520/p/3811445.html
14.下面有关java基本类型的默认值和取值范围,说法错误的是?
字节型的类型默认值是0,取值范围是-2^7—2^7-1
boolean类型默认值是false,取值范围是true\false
字符型类型默认是0,取值范围是-2^15 —2^15-1(错误,没有负值!)
long类型默认是0,取值范围是-2^63—2^63-1

字节型 : 0 -2^7—-2^7-1 byte b=10;

字符型 : ‘ \u0000′ 0—-2^16-1         char c=’c’ ;

short : 0 -2^15—-2^15-1 short s=10;

int : 0 -2^31—-2^31-1 int i=10;

long : 0 -2^63—-2^63-1     long o=10L;

float : 0.0f -2^31—-2^31-1 float f=10.0F

double : 0.0d -2^63—-2^63-1 double d=10.0;

boolean: false true\false boolean flag=true;

15.Java数据库连接库JDBC用到哪种设计模式?
生成器
桥接模式
抽象工厂
单例模式
桥接模式。JDBC提供两套接口,一个面向数据库厂商,一个面向JDBC使用者。
16.下面函数将返回?
public static int func (){    try{        return 1;    }catch (Exception e){        return 2;    }finally{        return 3;    }}

finally语句在try或catch中的return语句执行之后返回之前执行且finally里的修改语句不能影响try或catch中 return已经确定的返回值,若finally里也有return语句则覆盖try或catch中的return语句直接返回。
17.有这样一段程序:
public class Test{    public static void main(String [] args){        List list=new ArrayList();        list.add("a");        list.add("b");        list.add("a");        Set set=new HashSet();        set.add("a");        set.add("b");        set.add("a");        System.out.println(list.size()+","+set.size());    }}
2,2
2,3
3,2(正确)
3,3
List和Set的区别,set中不能放重复的
18.以下java程序代码,执行后的结果是()
java.util.HashMap map=new java.util.HashMap(); map.put("name",null);      map.put("name","Jack");System.out.println(map.size());

Map中添加数据的时候添加的是一个键值对 并且是键不能重复 值可以重复  上题中添加的时候键已经重复所以在map中只是添加进去一个键值对在输出size的时候大小只能为一个 当键一样的时候 最后添加进来的键值对中的值将会将原来的值覆盖掉
19.下面有关forward和redirect的描述,正确的是?
A.forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求
B.执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址C.执行redirect时,服务器端告诉浏览器重新去请求地址
D.forward是内部重定向,redirect是外部重定向
E.redirect默认将产生301 Permanently moved的HTTP响应
开始选了BCDE,最后发现错误了。E错误。如果没有指定redirect的返回参数,则默认重定向是"临时性的"(HTTP status 302)。
20.

0 0
原创粉丝点击