总结

1.下列哪个选项是正确计算42度(角度)的余弦值?
2.double d=Math.cos(Math.toRadians(42))
哪个类可用于处理 Unicode?
InputStreamReader
3.关于下面的程序Test.java说法正确的是( )。

public class Test {
static String x=“1”;
static int y=1;
public static void main(String args[]) {
static int z=2;
System.out.println(x+y+z);
}
}.被static修饰的变量称为静态变量,静态变量属于整个类,而局部变量属于方法,只在该方法内有效,所以static不能修饰局部变量
5.从以下哪一个选项中可以获得Servlet的初始化参数?
ServletConfig
ServletContext对象:servlet容器在启动时会加载web应用,并为每个web应用创建唯一的servlet context对象,可以把ServletContext看成是一个Web应用的服务器端组件的共享内存,在ServletContext中可以存放共享数据。ServletContext对象是真正的一个全局对象,凡是web容器中的Servlet都可以访问。
整个web应用只有唯一的一个ServletContext对象
servletConfig对象:用于封装servlet的配置信息。从一个servlet被实例化后,对任何客户端在任何时候访问有效,但仅对servlet自身有效,一个servlet的ServletConfig对象不能被另一个servlet访问。

6.函数()把文件位置重定位到文件中的指定位置
fseek
7.Which keyword can protect a class in a package from accessibility by the classes outside the package but not package inside ?
don’t use any keyword at all (make it default) ?
8.下列关于包(package)的描述,正确的是()
定义在同一个包(package)内的类可以不经过import而直接相互使用。

在Java线程状态转换时,下列转换不可能发生的有()?
在这里插入图片描述
9.JDK中提供的java、javac、jar等开发工具也是用Java编写的?
对 ,除了jvm’不是java 写的
10.Java语言中,如果"xyz"没有被创建过,String s =new String(“xyz”);创建了几个string object?
两个。第一个在堆中,第二个在字符串常量池中!如果在Java字符串常量池中已经存在,就只会创建一个
11.在 hibernate 开发中,关于 POJO 类对象的状态说法正确的是()
自由状态(Transient):实体在内存中自由存在,与数据库中的记录无关
持久状态(Persistent):实体处于由Hibernate框架所管理的状态,对应了数据库中的一条记录,同时与某个session实例发生了关联
游离状态(Detached):在session 关闭之后,可以使对象从持久状态转换到游离状态。
12java中下面哪个能创建并启动线程()?
new Thread(new MyRunnable()).start()
首先:创建并启动线程的过程为:定义线程—》实例化线程—》启动线程。
一 、定义线程: 1、扩展java.lang.Thread类。 2、实现java.lang.Runnable接口。
二、实例化线程: 1、如果是扩展java.lang.Thread类的线程,则直接new即可。
2、如果是实现了java.lang.Runnable接口的类,则用Thread的构造方法:
13.如果int x=20, y=5,则语句System.out.println(x+y +""+(x+y)+y); 的输出结果是()
25255
1)不论有什么运算,小括号的优先级都是最高的,先计算小括号中的运算,得到x+y +""+25+y
2)任何字符与字符串相加都是字符串,但是是有顺序的,字符串前面的按原来的格式相加,字符串后面的都按字符串相加,得到25+“”+25+5
3)上面的结果按字符串相加得到25255
14.Model-View-Controller(MVC) is an architectural pattern that frequently used in web applications. Which of the following statement(s) is(are) correct?
ABC
15.What is Static Method in Java()
A:静态方法是一个属于类而不属于对象(实例)的方法。(√)
B:静态方法只能访问静态数据。无法访问非静态数据(实例变量)。(√)
C:静态方法只能调用其他静态方法,不能从中调用非静态方法。(√)
D:静态方法不能通过类名直接访问,也不需要任何对象。(×) 静态方法可以直接用类名访问。
16.JSP分页代码中,哪个步骤次序是正确的
先取总记录数,得到总页数,最后显示本页的数据。
17.servlet的生命周期可以分为初始化阶段,运行阶段和销毁阶段三个阶段,以下过程属于初始化阶段是()。
Servlet的生命周期一般可以用三个方法来表示:
init():仅执行一次,负责在装载Servlet时初始化Servlet对象
service() :核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和servletResponse请求和响应对象作为参数。
destory():在停止并且卸载Servlet时执行,负责释放资源
初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的Servlet对象,创建ServletConfig对象,将ServletConfig作为参数来调用init()方法。所以选ACD。B是在调用service方法时才构造的
18.ublic class Test {
private static int j = 0;

private static Boolean methodB(int k) {
    j += k;
    return true;
}

public static void methodA(int i) {
    boolean b;
    b = i < 10 | methodB(4);
    b = i < 10 || methodB(8);

}

public static void main(String args[]) {
    methodA(0);
    System.out.println(j);
}

}
b = i < 10 | methodB(4); //中间为与计算符,执行完methodB(4)后,j = 4
methodA中,第三行

b = i < 10 || methodB(8);//中间为或计算符,因为i < 10 已成立,不需要后续计算

19.public class ClassTest{
String str = new String(“hello”);
char[] ch = {‘a’,‘b’,‘c’};
public void fun(String str, char ch[]){
str=“world”;
ch[0]=‘d’;
}
public static void main(String[] args) {
ClassTest test1 = new ClassTest();
test1.fun(test1.str,test1.ch);
System.out.print(test1.str + " and ");
System.out.print(test1.ch);
}
}
java中都是按栈中的值传递,基本数据类型栈中的值就是实际存储的值,引用类型栈中的值就是指向堆中的地址
1)String和char[ ]都是引用类型,所以在方法中传递的都是指向真实数据的地址
2)假设String str指向的hello的地址为d1,str传递到fun函数中的也是地址d1,成员变量str和fun的形参str不是同一个变量,把fun型中的str赋值为world只是修改了该str指向的地址,该地址由d1更改成了world的地址,并没有改变成员变量str指向的地址及堆中的数据,所以str还是hello。
3)假设char[ ] ch指向的abc的地址是d2,传递到fun函数中的地址也是d2,同上成员变量ch和fun的形参ch不是同一个变量,(1)如果把fun中的ch[0]='d’更改为ch = new ch[3];ch[0]=‘d’,那么成员变量ch的值是没有变化的,还是abc,原理同上String,只是改变了引用ch指向的堆数据的地址,并没有改变成员变量ch指向的地址以及堆中的数据。(2)改变了堆中的数据,所以最终结果编程dbc,此ch只是形参而不是成成员变量ch,如果对ch变化对成员变量ch没有影响,但是ch[i]指向了堆数据的地址,直接修改堆数据,所以成员变量变了

20.redirect:请求重定向:客户端行为,本质上为2次请求,地址栏改变,前一次请求对象消失。举例:你去银行办事(forward.jsp),结果告诉你少带了东西,你得先去公安局办(index.html)临时身份证,这时你就会走出银行,自己前往公安局,地址栏变为index.html.
forward:请求转发:服务器行为,地址栏不变。举例:你把钱包落在出租车上,你去警察局(forward.jsp)报案,警察局说钱包落在某某公司的出租车上(index.html),这时你不用亲自去找某某公司的出租车,警察局让出租车自己给你送来,你只要在警察局等就行。所以地址栏不变,依然为forward.jsp
21.
unsigned int value = 1024;
bool condition = *((bool *)(&value));
if (condition) value += 1; condition = *((bool *)(&value));
if (condition) value += 1; condition = ((bool )(&value));
bool是一个字节,&value就是获取value的地址,(bool
)(&value)就是用bool指针指向value地址,外面再套个
就是获取bool指向地址的值
1024转二进制只有第11位是1,那么低八位肯定都是0,那么bool指向的低八位肯定也是零也就是false,所有那两个condition都没有通过
22.public class Demo{
public static void main(String[] args){
System.out.print(getNumber(0));
System.out.print(getNumber(1));
System.out.print(getNumber(2));
System.out.print(getNumber(4));
}

public static int getNumber(int num){
    try{
        int result = 2 / num;
        return result;
    }catch (Exception exception){
        return 0;
    }finally{
        if(num == 0){
            return -1;
        }
        if(num == 1){
            return 1;
        }
    }
}

}
try,catch,finally中:
num=0,捕获异常,执行catch语句,catch中返回0,执行finally语句,finally语句中返回-1,于是返回finally中的-1;
num=1,try中返回2,执行finally语句,finally语句中返回1,于是返回finally中的1;
num=2,try中返回1,执行finally语句,finally语句中没有返回,于是返回try中的1;
num=4,try中返回0,执行finally语句,finally语句中没有返回,于是返回try中的0.
下面有关java的一些细节问题,描述错误的是?
synchronized关键字不能被继承。虽然可以用synchronized来定义方法,但是synchronized却并不属于方法定义的一部分,所以synchronized关键字并不能被继承。如果父类中的某个方法使用了synchronized关键字,而子类中也覆盖了这个方法,默认情况下子类中的这个方法并不是同步的,必须显示的在子类的这个方法中加上synchronized关键字才可。当然,也可以在子类中调用父类中相应的方法,这样虽然子类中的方法并不是同步的,但子类调用了父类中的同步方法,也就相当子类方法也同步了。

23.若有下列定义,下列哪个表达式返回false?
String s = “hello”;
String t = “hello”;
char c[] = {‘h’,‘e’,‘l’,‘l’,‘o’} ;

可以简单理解为equals比较的是内容,比较的是地址,由于string有个字符串常量池,所以equals和都是OK的,就算new重新分配一个新string字符串,但是内容也是相等的,所以ACD都对。
24.客户端要获取一个socket对象通过实例化,而服务器获得一个socket对象则通过什么方法的返回值?
getRemoteSocketAddress():
Returns the address of the endpoint this socket is connected to, or null if it is unconnected.
25.public class Test
{
static boolean foo(char c)
{
System.out.print©;
return true;
}
public static void main( String[] argv )
{
int i = 0;
for ( foo(‘A’); foo(‘B’) && (i < 2); foo(‘C’))
{
i++ ;
foo(‘D’);
}
}
}
for(条件1;条件2;条件3) {
//语句
}
执行顺序是条件1->条件2->语句->条件3->条件2->语句->条件3->条件2…
如果条件2为true,则一直执行。如果条件2位false,则for循环结束
25.运行时异常: 都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
非运行时异常 (编译异常): 是RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常。

26.java程序内存泄露的最直接表现是( )
程序抛内存控制的Exception
java是自动管理内存的,通常情况下程序运行到稳定状态,内存大小也达到一个 基本稳定的值
但是内存泄露导致Gc不能回收泄露的垃圾,内存不断变大.
最终超出内存界限,抛出OutOfMemoryExpection
27.假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()

boolean isOdd = false;

for(int i=1;i<=2;++i)
{
if(i%2==1)isOdd = true;
else isOdd = false;
a+=i*(isOdd?1:-1);
}
易知:每个线程对a 均做了两次读写操作,分别是 “ +1 ” 和 “ -2 ”
而题目问了是最终a 的结果,所以 a 的结果取决于各自线程对 a 的先后读写的顺序
结论:a的可能取值为-1、0、-2

28.以下JSP代码定义了一个变量,如何输出这个变量的值?
<bean:define id=“stringBean” value=“helloWorld”/>
C选项:<bean:write name=“stringBean”/>:该标签将指定的bean的属性值写到当前的JspWriter中,并且可以对输出进行格式化。可在jsp页面中通过bean:write将name属性输出。
在Java中,下列说法错误的有( )?
基本数据类型(或叫做原生类、内置类型)8种:
整数:byte,short,int,long(默认是int类型)
浮点类型: float,double(默认是double类型)
字符类型:char
布尔类型:boolean
引用数据类型3种:数组,类,接口
其中,基本数据类型之间除了boolean,其他数据类型之间可以任意的相互转换(强制转化或默认转换),这个与c++中有点区别。
个人认为c定义数组的方式是正确的,只不过少了一个分号。java中定义数组有两种方式,一种是int[ ] number,一种是int number[ ],推荐第一种,可读性更高。
在这里插入图片描述

29.public class Cat
{
long length;
public Cat(long l)
{
length = 1;
}
public static void main(String arg[])
{
Cat c1, c2, c3;
c1 = new Cat(10L);
c2 = new Cat(10L);
c3 = c2;
long m = 21L;
}
}
c1 = new Cat(10L);
c2 = new Cat(10L);
A ,c1和c2是两个参数相同的不同对象,c1!=c2,返回false
B ,c2和c3指向同一个引用,所以c2==c3,返回true
C, m与c1是不同类型,不相等,返回false
D,c1没有定义equals方法,默认调用Object类的equals方法,返回fals
30.标识符是以字母开头的字母数字序列:
数字是指0~9,字母指大小写英文字母、下划线(_)和美元符号($),也可以是Unicode字符集中的字符,如汉字;
31.
如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是? ( )
子类的权限不能比父类更低
32.以下哪项不属于java类加载过程?
类的加载包括:加载,验证,准备,解析,初始化。
选项A:生成java.lang.Class对象是在加载时进行的。生成Class对象作为方法区这个类的各种数据的访问入口。
选项B:既然是对象成员,那么肯定在实例化对象后才有。在类加载的时候会赋予初值的是类变量,而非对象成员。
选项C:这个会调用。可以用反射试验。
选项D:类方法解析发生在解析过程。
33.加载
在加载阶段(可以参考java.lang.ClassLoader的loadClass()方法),虚拟机需要完成以下3件事情:
通过一个类的全限定名来获取定义此类的二进制字节流(并没有指明要从一个Class文件中获取,可以从其他渠道,譬如:网络、动态生成、数据库等);
将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构;
在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口;
加载阶段和连接阶段(Linking)的部分内容(如一部分字节码文件格式验证动作)是交叉进行的,加载阶段尚未完成,连接阶段可能已经开始,但这些夹在加载阶段之中进行的动作,仍然属于连接阶段的内容,这两个阶段的开始时间仍然保持着固定的先后顺序。
验证
验证是连接阶段的第一步,这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,并且不会危害虚拟机自身的安全。
验证阶段大致会完成4个阶段的检验动作:
文件格式验证:验证字节流是否符合Class文件格式的规范;例如:是否以魔术0xCAFEBABE开头、主次版本号是否在当前虚拟机的处理范围之内、常量池中的常量是否有不被支持的类型。
元数据验证:对字节码描述的信息进行语义分析(注意:对比javac编译阶段的语义分析),以保证其描述的信息符合Java语言规范的要求;例如:这个类是否有父类,除了java.lang.Object之外。
字节码验证:通过数据流和控制流分析,确定程序语义是合法的、符合逻辑的。
符号引用验证:确保解析动作能正确执行。
验证阶段是非常重要的,但不是必须的,它对程序运行期没有影响,如果所引用的类经过反复验证,那么可以考虑采用-Xverifynone参数来关闭大部分的类验证措施,以缩短虚拟机类加载的时间。
准备
准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存都将在方法区中进行分配。这时候进行内存分配的仅包括类变量(被static修饰的变量),而不包括实例变量,实例变量将会在对象实例化时随着对象一起分配在堆中。其次,这里所说的初始值“通常情况”下是数据类型的零值,假设一个类变量的定义为:

          1       

            publicstaticintvalue=123;        

那变量value在准备阶段过后的初始值为0而不是123.因为这时候尚未开始执行任何java方法,而把value赋值为123的putstatic指令是程序被编译后,存放于类构造器()方法之中,所以把value赋值为123的动作将在初始化阶段才会执行。
至于“特殊情况”是指:public static final int value=123,即当类字段的字段属性是ConstantValue时,会在准备阶段初始化为指定的值,所以标注为final之后,value的值在准备阶段初始化为123而非0.
解析
解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程。解析动作主要针对类或接口、字段、类方法、接口方法、方法类型、方法句柄和调用点限定符7类符号引用进行。
初始化
类初始化阶段是类加载过程的最后一步,到了初始化阶段,才真正开始执行类中定义的java程序代码。在准备极端,变量已经付过一次系统要求的初始值,而在初始化阶段,则根据程序猿通过程序制定的主管计划去初始化类变量和其他资源,或者说:初始化阶段是执行类构造器()方法的过程.
()方法是由编译器自动收集类中的所有类变量的赋值动作和静态语句块static{}中的语句合并产生的,编译器收集的顺序是由语句在源文件中出现的顺序所决定的,静态语句块只能访问到定义在静态语句块之前的变量,定义在它之后的变量,在前面的静态语句块可以赋值,但是不能访问
32.volatile关键字的说法错误的是
volatile关键字不具有原子性不能保证线程安全
33.非抽象类实现接口后,必须实现接口中的所有抽象方法,除了abstract外,方法头必须完全一致?错误
实际上这道题考查的是两同两小一大原则:
方法名相同,参数类型相同
子类返回类型小于等于父类方法返回类型,
子类抛出异常小于等于父类方法抛出异常,
子类访问权限大于等于父类方法访问权限。

public class Test
{
public static Test t1 = new Test();
{
System.out.println(“blockA”);
}
static
{
System.out.println(“blockB”);
}
public static void main(String[] args)
{
Test t2 = new Test();
}
}
blockAblockBblockA

34.这是静态分派的过程,在编译时已经决定了使用super的方法,因为subToSuper 是指super对象,可是为什么会选择collection呢,for循环出来他们实际上指的是collection对象表示的,即类似于Collection col = new HashSet<>();这样传入方法getType()中的参数就是col,左边是静态类型,右边是实际类型。由于重载实际上是使用静态分派的,重载时是通过参数的静态类型而不是实际类型作为判定依据的

35.AWT 中用来表示文本框的类是 ( )

TextField
36.下列说法正确的有( )
constructor可在一个对象被new时执行
37.在 main() 方法中给出的整型数组,如果将其写到一个文件中,需要
建立数据字节输出流。

38.下面哪个不是标准Statement类?
BatchedStatement
39.解析:Webservice是跨平台,跨语言的远程调用技术;
它的通信机制实质就是xml数据交换;
它采用了soap协议(简单对象协议)进行通信
40.1、try中没有抛出异常,则catch语句不执行,如果有finally语句,则接着执行finally语句,继而接着执行finally之后的语句;
2、try中抛出异常,有匹配的catch语句,则catch语句捕获,如果catch中有return语句,则要在finally执行后再执行;
41.Swing在不同的操作系统中显示相同的风格
42.变量a是一个64位有符号的整数,初始值用16进制表示为:0Xf000000000000000; 变量b是一个64位有符号的整数,初始值用16进制表示为:0x7FFFFFFFFFFFFFFF。 则a-b的结果用10进制表示为多少?()
262+261+2^60+1
43.public class Base{
int w, x, y ,z;
public Base(int a,int b)
{
x=a; y=b;
}
public Base(int a, int b, int c, int d)
{
// assignment x=a, y=b
w=d;z=c;
}}
在代码说明// assignment x=a, y=b处写入如下哪几个代码是正确的?()
A错,调用Base这个构造方法应该这样 new Base(a,b)
B错,和C相比应该是分号不是逗号,帅的一塌糊涂
C正常赋值操作
D调用本类的构造方法

以下哪些jvm的垃圾回收方式采用的是复制算法回收
新生代串行收集器
新生代并行回收收集器
45.以下哪些方法可以取到http请求中的cookie值()?
request.getHeader()
request.getCookies()
45.
instanceof运算符能够用来判断一个对象是否为:
一个类的实例
一个实现指定接口的类的实例
一个子类的实例
46.在Web应用程序中,( web容器 )负责将HTTP请求转换为HttpServletRequest对象
47.int a[]=null; a[0]=1; 将产生空指针异常
A.除数为0 等ArithmeticException,是RuntimException的子类。而运行时异常将由运行时系统自动抛出,不需要使用throw语句。Java编译器 允许忽略运行时异常,一个方法可以既不捕捉,也不声明抛出运行时异常。
48.class CompareReference{
public static void main(String [] args){
float f=42.0f;
float f1[]=new float[2];
float f2[]=new float[2];
float[] f3=f1;
long x=42;
f1[0]=42.0f;
}
}
xf1[0]
f1
f3
49.
对于一个类的构造函数,其函数名与类名( )。
完全相同
50.input 和out 是对计算机而言的,input是往计算机中输入,对计算机而言就是读,反之,out 就是从计算机往外输出 就是写
读进来,写出去
51.This调用语句必须是构造函数中的第一个可执行语句。
安稳
this()才必须是构造函数中的第一个可执行语句,用this调用语句并不需要。
52.下面有关JSP内置对象的描述,说法错误的是?
application对象:多个(一个)application对象实现了用户间数据的共享,可存放全局变量
53.java 的字符类型采用的是 Unicode 编码方案,每个 Unicode 码占用(16)个比特位
54.只有静态成员函数可以操作静态数据成员 错 类名.调用
55.加载驱动的方法
加载驱动方法
1.Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);
2. DriverManager.registerDriver(new com.mysql.jdbc.Driver());
3.System.setProperty(“jdbc.drivers”, “com.mysql.jdbc.Driver”);
56.由于replaceAll方法的第一个参数是一个正则表达式,而".“在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成”/"。如果想替换的只是".",那么久要写成"\.".
57.重写(Overriding)是父类与子类之间多态性的一种表现,类的不同实现可以重写父类方法,实现同方法名,同参数,同返回类型,不同的实现。重载(Overloading)最典型的就是一个类的不同构造函数,方法名相同,参数个数不同,返回类型也可以不同,重载是一个类中多态性的一种表现。
58.A选项Map属于接口类型,不可以new的方式创建对象。所以A错误。
B选项SortedMap属于接口类型,不可以new的方式创建对象。所以B错误。
59.A 显然是错误的,Java一律采用Unicode编码方式,每个字符无论中文还是英文字符都占用2个字节。
B 也是不正确的,不同的编码之间是可以转换的,通常流程如下:
将字符串S以其自身编码方式分解为字节数组,再将字节数组以你想要输出的编码方式重新编码为字符串。
例:String newUTF8Str = new String(oldGBKStr.getBytes(“GBK”), “UTF8”);
C 是正确的。Java虚拟机中通常使用UTF-16的方式保存一个字符
D 也是正确的。ResourceBundle能够依据Local的不同,选择性的读取与Local对应后缀的properties文件,以达到国际化的目的。
60.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值