2017-9-13 笔试真题
来源:互联网 发布:游戏王网络对战平台 编辑:程序博客网 时间:2024/05/22 12:12
1.假设 a 是一个由线程 1 和线程 2 共享的初始值为 0 的全局变量,
则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()
-1 -2 0 1 正确答案: D
boolean isOdd = false;
for(int i=1;i<=2;++i)
{
if(i%2==1)isOdd = true;
else isOdd = false;
a+=i*(isOdd?1:-1);
}
解析:
isOdd=false-->i=1-->isOdd=true-->a +1
-->i=2-->isOdd=false-->a -2
线程一: +1 -2 +1 -2 +1 -2
线程二: +1 -2 +1 -2 +1 -2
可能结果:1)两个线程同时运行 a+1-2=-1;
2)一个线程的第二次覆盖另一个线程的写入 a+1+1-2=0;
3)一个线程完全落后另一个线程 a+1-2+1-2=-2;
则线程 1 和线程 2 同时执行下面的代码,最终 a 的结果不可能是()
-1 -2 0 1 正确答案: D
boolean isOdd = false;
for(int i=1;i<=2;++i)
{
if(i%2==1)isOdd = true;
else isOdd = false;
a+=i*(isOdd?1:-1);
}
解析:
isOdd=false-->i=1-->isOdd=true-->a +1
-->i=2-->isOdd=false-->a -2
线程一: +1 -2 +1 -2 +1 -2
线程二: +1 -2 +1 -2 +1 -2
可能结果:1)两个线程同时运行 a+1-2=-1;
2)一个线程的第二次覆盖另一个线程的写入 a+1+1-2=0;
3)一个线程完全落后另一个线程 a+1-2+1-2=-2;
2.关于Float,下列说法错误的是() 正确答案: C
Float是一个类
Float在java.lang包中
Float a=1.0是正确的赋值方法
Float a= new Float(1.0)是正确的赋值方法
解析:Float是类,float不是类.
8种基本类型都在java.lang包中
Float正确复制方式是Float f=1.0f,若不加f会被识别成double型,
double无法向float隐式转换.
Float a= new Float(1.0)是正确的赋值方法,但是在1.5及以上版本
引入自动装箱拆箱后,会提示这是不必要的装箱的警告,
通常直接使用Float f=1.0f.
Float是一个类
Float在java.lang包中
Float a=1.0是正确的赋值方法
Float a= new Float(1.0)是正确的赋值方法
解析:Float是类,float不是类.
8种基本类型都在java.lang包中
Float正确复制方式是Float f=1.0f,若不加f会被识别成double型,
double无法向float隐式转换.
Float a= new Float(1.0)是正确的赋值方法,但是在1.5及以上版本
引入自动装箱拆箱后,会提示这是不必要的装箱的警告,
通常直接使用Float f=1.0f.
3.以下哪个式子有可能在某个进制下成立()?
正确答案: A
13*14=204 12*34=568 14*14=140 1+1=3
正确答案: A
13*14=204 12*34=568 14*14=140 1+1=3
4.以下哪个接口的定义是正确的?( )
正确答案: D
interface B
{ void print() { } ;}
interface B
{ static void print() ;}
abstract interface B extends A1, A2 //A1、A2为已定义的接口
{ abstract void print(){ };}
interface B
{ void print();}
解析:接口中的方法默认为public abstract,属性默认为public static final。接口中的方法不能有实现,Java中类只支持单继承,而接口可以支持多继承。
A、C中方法不能有方法体,B中方法前不能有static ;
正确答案: D
interface B
{ void print() { } ;}
interface B
{ static void print() ;}
abstract interface B extends A1, A2 //A1、A2为已定义的接口
{ abstract void print(){ };}
interface B
{ void print();}
解析:接口中的方法默认为public abstract,属性默认为public static final。接口中的方法不能有实现,Java中类只支持单继承,而接口可以支持多继承。
A、C中方法不能有方法体,B中方法前不能有static ;
5.关于类的叙述正确的是()。
正确答案: B
在类中定义的变量称为类的成员变量,在别的类中可以直接使用
局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块中
使用别的类的方法仅仅需要引用方法的名字即可
只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数
解析:
A在类中定义的变量称为类的成员变量,在别的类中不可以直接使用局部变量的,
类是一个封装,类的成员只能在类内部使用,外部需要 “对象名.变量名” 来引用。
C使用别的类的方法需要通过该类的对象引用方法的名字
D如果类没有构造方法,JVM会生成一个默认构造方法,
如果定义了任意类型的构造方法,编译器都不会自动生成构造方法。
正确答案: B
在类中定义的变量称为类的成员变量,在别的类中可以直接使用
局部变量的作用范围仅仅在定义它的方法内,或者是在定义它的控制流块中
使用别的类的方法仅仅需要引用方法的名字即可
只要没有定义不带参数的构造函数,JVM都会为类生成一个默认构造函数
解析:
A在类中定义的变量称为类的成员变量,在别的类中不可以直接使用局部变量的,
类是一个封装,类的成员只能在类内部使用,外部需要 “对象名.变量名” 来引用。
C使用别的类的方法需要通过该类的对象引用方法的名字
D如果类没有构造方法,JVM会生成一个默认构造方法,
如果定义了任意类型的构造方法,编译器都不会自动生成构造方法。
6.阅读下列程序,选择哪一个是正确的输出结果
class HelloA{
public HelloA()
{
System.out.println("I’m A class ");
}
static
{
System.out.println("static A");
}
}
public class HelloB extends HelloA{
public HelloB()
{
System.out.println("I’m B class");
}
static{
System.out.println("static B");
}
public static void main (String[] args){
new HelloB();
}
}
正确答案: C
static A I’m A class static B I’m B class
I’m A class I’m B class static A static B
static A static B I’m A class I’m B class
I’m A class static A I’m B class static B
解析:该题目中的执行顺序:
父类的静态变量和静态块赋值(按照声明顺序)
自身的静态变量和静态块赋值(按照声明顺序)
父类成员变量和块赋值(按照声明顺序)
父类构造器赋值
自身成员变量和块赋值(按照声明顺序)
自身构造器赋值
类的静态代码块是属于类级别,执行优先级高于普通代码块>构造函数。
总结就是:父类的静态代码块(包括静态变量赋值)优先执行,
然后执行自身的静态代码块,然后执行父类的普通代码块,
再执行父类的构造函数,然后执行自身的普通代码块,
再执行自身的构造函数。
class HelloA{
public HelloA()
{
System.out.println("I’m A class ");
}
static
{
System.out.println("static A");
}
}
public class HelloB extends HelloA{
public HelloB()
{
System.out.println("I’m B class");
}
static{
System.out.println("static B");
}
public static void main (String[] args){
new HelloB();
}
}
正确答案: C
static A I’m A class static B I’m B class
I’m A class I’m B class static A static B
static A static B I’m A class I’m B class
I’m A class static A I’m B class static B
解析:该题目中的执行顺序:
父类的静态变量和静态块赋值(按照声明顺序)
自身的静态变量和静态块赋值(按照声明顺序)
父类成员变量和块赋值(按照声明顺序)
父类构造器赋值
自身成员变量和块赋值(按照声明顺序)
自身构造器赋值
类的静态代码块是属于类级别,执行优先级高于普通代码块>构造函数。
总结就是:父类的静态代码块(包括静态变量赋值)优先执行,
然后执行自身的静态代码块,然后执行父类的普通代码块,
再执行父类的构造函数,然后执行自身的普通代码块,
再执行自身的构造函数。
7.下面有关servlet service描述错误的是?
正确答案: B
不管是post还是get方法提交过来的连接,都会在service中处理
doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
service()是在javax.servlet.Servlet接口中定义的
service判断请求类型,决定是调用doGet还是doPost方法
解析:doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的
正确答案: B
不管是post还是get方法提交过来的连接,都会在service中处理
doGet/doPost 则是在 javax.servlet.GenericServlet 中实现的
service()是在javax.servlet.Servlet接口中定义的
service判断请求类型,决定是调用doGet还是doPost方法
解析:doGet/doPost 则是在 javax.servlet.http.HttpServlet 中实现的
8.如果希望监听TCP端口9000,应该怎样创建socket?
正确答案: B
new Socket("localhost",9000);
new ServerSocket(9000);
new Socket(9000);
new ServerSocket("localhost",9000);
解析: ServerSocket(int port) 是服务端绑定port端口,
调accept()监听等待客户端连接,它返回一个连接队列中的一个socket。
Socket(InetAddress address , int port)是创建客户端
连接主机的socket流,其中InetAddress是用来记录主机的类,
port指定端口。
正确答案: B
new Socket("localhost",9000);
new ServerSocket(9000);
new Socket(9000);
new ServerSocket("localhost",9000);
解析: ServerSocket(int port) 是服务端绑定port端口,
调accept()监听等待客户端连接,它返回一个连接队列中的一个socket。
Socket(InetAddress address , int port)是创建客户端
连接主机的socket流,其中InetAddress是用来记录主机的类,
port指定端口。
9.true、false、null、sizeof、goto、synchronized 哪些是Java关键字?
正确答案:goto,synchronized
解析:1. const和goto既是保留字又是关键字
2. 除了const和goto,其余保留字和关键字是严格区分开的。
1,Java 关键字列表 (依字母排序 共50组):
abstract, assert, boolean, break, byte, case, catch, char, class,
const(保留关键字), continue, default, do, double, else, enum,
extends, final, finally, float, for, goto(保留关键字), if,
implements, import, instanceof, int, interface, long, native,
new, package, private, protected, public, return, short, static,
strictfp, super, switch, synchronized, this, throw, throws,
transient, try, void, volatile, while
2,保留字列表 (依字母排序 共14组),Java保留字是指现有Java版本
尚未使用,但以后版本可能会作为关键字使用:
byValue, cast, false, future, generic, inner, operator, outer,
rest, true, var, goto (保留关键字) , const (保留关键字) , null
正确答案:goto,synchronized
解析:1. const和goto既是保留字又是关键字
2. 除了const和goto,其余保留字和关键字是严格区分开的。
1,Java 关键字列表 (依字母排序 共50组):
abstract, assert, boolean, break, byte, case, catch, char, class,
const(保留关键字), continue, default, do, double, else, enum,
extends, final, finally, float, for, goto(保留关键字), if,
implements, import, instanceof, int, interface, long, native,
new, package, private, protected, public, return, short, static,
strictfp, super, switch, synchronized, this, throw, throws,
transient, try, void, volatile, while
2,保留字列表 (依字母排序 共14组),Java保留字是指现有Java版本
尚未使用,但以后版本可能会作为关键字使用:
byValue, cast, false, future, generic, inner, operator, outer,
rest, true, var, goto (保留关键字) , const (保留关键字) , null
10.
byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); /*语句1*/
b6=b4+b5; /*语句2*/
b8=(b1+b4); /*语句3*/
b7=(b2+b5); /*语句4*/
System.out.println(b3+b6);
下列代码片段中,存在编译错误的语句是()
正确答案: B C D
语句2
语句1
语句3
语句4
解析:
Java表达式转型规则由低到高转换:
1、所有的byte,short,char型的值将被提升为int型;
2、如果有一个操作数是long型,计算结果是long型;
3、如果有一个操作数是float型,计算结果是float型;
4、如果有一个操作数是double型,计算结果是double型;
5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。
--------------解析--------------
语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;
语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;
语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);
语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变。
byte b1=1,b2=2,b3,b6,b8;
final byte b4=4,b5=6,b7;
b3=(b1+b2); /*语句1*/
b6=b4+b5; /*语句2*/
b8=(b1+b4); /*语句3*/
b7=(b2+b5); /*语句4*/
System.out.println(b3+b6);
下列代码片段中,存在编译错误的语句是()
正确答案: B C D
语句2
语句1
语句3
语句4
解析:
Java表达式转型规则由低到高转换:
1、所有的byte,short,char型的值将被提升为int型;
2、如果有一个操作数是long型,计算结果是long型;
3、如果有一个操作数是float型,计算结果是float型;
4、如果有一个操作数是double型,计算结果是double型;
5、被fianl修饰的变量不会自动改变类型,当2个final修饰相操作时,结果会根据左边变量的类型而转化。
--------------解析--------------
语句1错误:b3=(b1+b2);自动转为int,所以正确写法为b3=(byte)(b1+b2);或者将b3定义为int;
语句2正确:b6=b4+b5;b4、b5为final类型,不会自动提升,所以和的类型视左边变量类型而定,即b6可以是任意数值类型;
语句3错误:b8=(b1+b4);虽然b4不会自动提升,但b1仍会自动提升,所以结果需要强转,b8=(byte)(b1+b4);
语句4错误:b7=(b2+b5); 同上。同时注意b7是final修饰,即只可赋值一次,便不可再改变。
阅读全文
0 0
- 2017-9-13 笔试真题
- 2017-9-14 笔试真题
- 百度2017春招笔试真题
- 京东2017秋招笔试真题
- 百度2017春招笔试真题
- 2017秋招笔试C++真题
- 京东2017秋笔试真题--集合
- 【笔试真题】2017年58春招笔试题
- 网易互动笔试真题
- 百度2017春招笔试真题编程题集合
- 2017百度实习生招聘笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题
- 百度2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 网易2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 百度2017春招笔试真题编程题集合
- 写给一年后的自己
- HTML Email 模板示例
- SQL开发技巧
- C++运算符含义(持续收集)
- Java-四种引用和ReferenceQueue简述
- 2017-9-13 笔试真题
- 简单的用c3p0和dbutils实现的数据库增删查改
- 浅析 Linux 初始化 init 系统,第 3 部分: Systemd
- java高级 常用系统类和访问控制符 封装和继承疑难点
- 人月神话读后总结
- 延迟加载配置
- Toolbar入门
- 搭建PHP开发环境(一)-Apache安装配置
- SSH关联映射注解