记录牛客网刷题--(java类型)

记录牛客网刷题--(java类型)

 

1.This调用语句必须是构造函数中的第一个可执行语句?

答案:错。

this()才必须是构造函数中的第一个可执行语句,用this调用语句并不需要。

 

2.What will be printed when you execute the following code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

class C {

    C() {

        System.out.print("C");

    }

}

 

class A {

    C c = new C();

 

    A() {

        this("A");

        System.out.print("A");

    }

 

    A(String s) {

        System.out.print(s);

    }

}

 

class Test extends A {

    Test() {

        super("B");

        System.out.print("B");

    }

 

    public static void main(String[] args) {

        new Test();

    }

}

初始化过程是这样的: 

1.首先,初始化父类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 

2.然后,初始化子类中的静态成员变量和静态代码块,按照在程序中出现的顺序初始化; 

3.其次,初始化父类的普通成员变量和代码块,在执行父类的构造方法;

4.最后,初始化子类的普通成员变量和代码块,在执行子类的构造方法; 

 

(1)初始化父类的普通成员变量和代码块,执行 C c = new C(); 输出C 

(2)super("B"); 表示调用父类的构造方法,不调用父类的无参构造函数,输出B 

(3) System.out.print("B"); 

 所以输出CBB

 

3. 下列关于管道(Pipe)通信的叙述中,正确的是(A)?

正确答案: A   

进程对管道进行读操作和写操作都可能被阻塞
一个管道只能有一个进程或一个写进程对其操作
一个管道可实现双向数据传输
管道的容量仅受磁盘容量大小限制

解析:
A.正确,因为管道为空,读操作会被阻塞;管道满了,写操作会被阻塞
B.可以有多个进程对其读;也可以有多个进程写,只不过不能同时写。并且题目没有说“同时”,B不对
C.匿名管道只能单向;命名管道可以双向;所以C过于绝对

D.管道是内存中的,所以D不对

 

4.下面有关webservice的描述,错误的是?

正确答案: B   

Webservice是跨平台,跨语言的远程调用技术
Webservice通信机制实质就是json数据交换
Webservice采用了soap协议(简单对象协议)进行通信
WSDL是用于描述 Web Services 以及如何对它们进行访问

 

答:

 

Web service顾名思义是基于web的服务,它是一种跨平台,跨语言的服务。

我们可以这样理解它,比如说我们可以调用互联网上查询天气信息的web服务,把它嵌入到我们的B/S程序中,当用户从我们的网点看到天气信息时,会认为我们为他提供很多的服务,但其实我们什么也没做,只是简单的调用了一下服务器上的一端代码而已。Web service 可以将你的服务发布到互联网上让别人去调用,也可以调用别人发布的web service,和使用自己的代码一样。

它是采用XML传输格式化的数据,它的通信协议是SOAP(简单对象访问协议).

 

 

5.下面哪些赋值语句是正确的()

 

正确答案: A B D   

long test=012
float f=-412
int other =(int)true
double d=0x12345678
byte b=128

 

答:

 

选ABD

A和B中long和float,正常定义需要加l和f,但是long和float属于基本类型,会进行转化,所以不会报出异常。AB正确

boolean类型不能和任何类型进行转换,会报出类型异常错误。所以C错。

D选项可以这样定义,D正确。

E选项中,byte的取值范围是-128—127。报出异常: cannot convert from int to byte.所以E选项错误。

 

 

6.有关会话跟踪技术描述正确的是()

正确答案: A B C 

Cookie是Web服务器发送给客户端的一小段信息,客户端请求时,可以读取该信息发送到服务器端
关闭浏览器意味着临时会话ID丢失,但所有与原会话关联的会话数据仍保留在服务器上,直至会话过期
在禁用Cookie时可以使用URL重写技术跟踪会话
隐藏表单域将字段添加到HTML表单并在客户端浏览器中显示

答:

 

ABC

D:隐藏域在页面中对于用户(浏览器)是不可见的,在表单中插入隐藏域的目的在于收集或发送信息,以利于被处理表单的程序所使用。浏览者单击发送按钮发送表单的时候,隐藏域的信息也被一起发送到服务器。

 

 

 

7. DBMS 中实现事务持久性的子系统是()

正确答案: D   

安全性管理子系统
完整性管理子系统
并发控制子系统
恢复管理子系统

答:

原子性-事务管理子系统。一致性-完整子系统。隔离性-并发控制子系统。持久性-恢复管理子系统

 

8.    如果一个接口Glass有个方法setColor(),有个类BlueGlass实现接口Glass,则在类BlueGlass中正确的是?  ( )

正确答案: C   

protected void setColor() { …}
void setColor() { …}
public void setColor() { …}
以上语句都可以用在类BlueGlass中

 

答:

子类的权限不能比父类更低

 

9.  以下代码的输出结果是?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

public class B

{

    public static B t1 = new B();

    public static B t2 = new B();

    {

        System.out.println("构造块");

    }

    static

    {

        System.out.println("静态块");

    }

    public static void main(String[] args)

    {

        B t = new B();

    }

}

 

正确答案: C   

静态块 构造块 构造块 构造块
构造块 静态块 构造块 构造块
构造块 构造块 静态块 构造块
构造块 构造块 构造块 静态块

答:

开始时JVM加载B.class,对所有的静态成员进行声明,t1 t2被初始化为默认值,为null,又因为t1 t2需要被显式初始化,所以对t1进行显式初始化,初始化代码块→构造函数(没有就是调用默认的构造函数),咦!静态代码块咋不初始化?因为在开始时已经对static部分进行了初始化,虽然只对static变量进行了初始化,但在初始化t1时也不会再执行static块了,因为JVM认为这是第二次加载类B了,所以static会在t1初始化时被忽略掉,所以直接初始化非static部分,也就是构造块部分(输出''构造块'')接着构造函数(无输出)。接着对t2进行初始化过程同t1相同(输出'构造块'),此时就对所有的static变量都完成了初始化,接着就执行static块部分(输出'静态块'),接着执行,main方法,同样也,new了对象,调用构造函数输出('构造块')

 

10.以下选项中,合法的赋值语句是()

正确答案: B   

a>1;
i++;
a= a+1=5;
y = int ( i );
  •  

答:

B项,中间变量缓存机制。
等同于

1

2

3

temp = i;

i=i+1;

i=temp;

D项,y=(int)i

 

11.给定以下JAVA代码,这段代码运行后输出的结果是()

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

public class Test

{

    public static int aMethod(int i)throws Exception

    {

        try{

            return i / 10;

        }

        catch (Exception ex)

        {

            throw new Exception("exception in a Method");

        finally{

            System.out.printf("finally");

        }

    }

 

    public static void main(String [] args)

    {

        try

        {

            aMethod(0);

        }

        catch (Exception ex)

        {

            System.out.printf("exception in main");

        }

        System.out.printf("finished");

    }

}

 

    

 

正确答案: B   

exception in main finished
finally finished
exception in main finally
finally exception in main finished

答:

 

 i / 10;无论i是多少,永远不会抛出异常,所以catch语句不会执行。

而finally语句是必定执行的语句。

所以先指向aMathod()的finally代码块,输出finally

然后执行main()方法的最后一条输出语句,输出finished

扩展:

 

1、finally块一定会执行,无论是否try…catch。

2、finally前有return,会先执行return语句,并保存下来,再执行finally块,最后return。

3、finally前有return、finally块中也有return,先执行前面的return,保存下来,再执行finally的return,覆盖之前的结果,并返回。


12.以下哪项陈述是正确的?

正确答案: E  

垃圾回收线程的优先级很高,以保证不再 使用的内存将被及时回收
垃圾收集允许程序开发者明确指定释放 哪一个对象
垃圾回收机制保证了JAVA程序不会出现 内存溢出
进入”Dead”状态的线程将被垃圾回收器回收
以上都不对

答:

 

答案:E

A: 垃圾回收在jvm中优先级相当相当低。
B:垃圾收集器(GC)程序开发者只能推荐JVM进行回收,但何时回收,回收哪些,程序员不能控制。
C:垃圾回收机制只是回收不再使用的JVM内存,如果程序有严重BUG,照样内存溢出。
D:进入DEAD的线程,它还可以恢复,GC不会回收

 

13.

class Foo {

    final int i;

    int j;

    public void doSomething() {

        System.out.println(++j + i);

    }

}

的输出是?

正确答案: D   

1
2
不能执行,因为编译有错
  •  

 

答:

D。final类型的变量一定要初始化,因为final的变量不可更改。

 

 

14   以下代码结果是什么?

public class foo {

public static void main(String sgf[]) {

StringBuffer a=new StringBuffer(“A”);

StringBuffer b=new StringBuffer(“B”);

operate(a,b);

System.out.println(a+”.”+b);

}

static void operate(StringBuffer x,StringBuffer y) {

x.append(y);

y=x;

}

}

正确答案: C   

代码可以编译运行,输出“AB.AB”。
代码可以编译运行,输出“A.A”。
代码可以编译运行,输出“AB.B”。
代码可以编译运行,输出“A.B”。

往方法中传参,传的仅仅只是地址,而不是实际内存,所以不要以为y=x程序的执行,是 b=a的执行。这两者是不相等的

15关于volatile关键字,下列描述不正确的是?

正确答案: B D   

用volatile修饰的变量,每次更新对其他线程都是立即可见的。
对volatile变量的操作是原子性的。
对volatile变量的操作不会造成阻塞。
不依赖其他锁机制,多线程环境下的计数器可用volatile实现。

 

一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:

1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。

2)禁止进行指令重排序。

volatile只提供了保证访问该变量时,每次都是从内存中读取最新值,并不会使用寄存器缓存该值——每次都会从内存中读取。

而对该变量的修改,volatile并不提供原子性的保证。

由于及时更新,很可能导致另一线程访问最新变量值,无法跳出循环的情况

多线程下计数器必须使用锁保护。

 

16下列叙述中,错误的是( )

正确答案: B   

File类能够存储文件属性
File类能够读写文件
File类能够建立文件
File类能够获取文件目录信息

答:

数据流才能读写文件

 

 

17  以下代码对其执行后,NumberList里的元素依次为:

List<Integer> NumberList =newArrayList<Integer>();

NumberList.add(2);

NumberList.add(4);

NumberList.add(1);

NumberList.add(3);

NumberList.add(5);

for(int i =0;i<NumberList.size();++i)

{

int v = NumberList.get(i);

if(v%2==0)

{

  NumberList.remove(v);

}

}

System.out.println(NumberList);

正确答案: D   

2,4,1,3,5
2,1,3,5
4,1,3,5
会出现越界情况

答:

 

1.ArrayList删除元素后,剩余元素会依次向前移动,因此下标一直在变,size()也会减小;

2.remove()方法调用的是remove(int index),而不是remove(Object o),因此删除的是index索引处的元素;

该题具体流程:

1.i=0,v=2,remove(2)删除掉了元素1,因此NumberList剩余元素为【2,4,3,5】;

                        

 2.i=1,v=4,remove(4),此时线性表中只有四个元素,不可能删除索引为4的元素,因此会报数组下标越界异常。

 

 

18. 下列正确的有( )

正确答案: A C D   

call by value不会改变实际参数的数值
call by reference能改变实际参数的参考地址
call by reference不能改变实际参数的参考地址
call by reference能改变实际参数的内容

 

答:

 

 

1 基本类型和基本类型变量被当作参数传递给方法时,是值传递。

在方法实体中,无法给原变量重新赋值,也无法改变它的值。

2 对象和引用型变量被当作参数传递给方法时,是引用传递。

在方法实体中,无法给原变量重新赋值,但是可以改变它所指向对象的属性

 

19.下面哪些类可以被继承? Java.lang.Thread、java.lang.Number、java.lang.Double、java.lang.Math、 java.lang.ClassLoader

正确答案: A B E   

Thread
Number
Double
Math
ClassLoader

答案:

 

答案:ABE

A,Thread可以被继承,用于创建新的线程

B,Number类可以被继承,Integer,Float,Double等都继承自Number类

C,Double类的声明为

1

public final class Doubleextends Numberimplements Comparable<Double>

  final生明的类不能被继承

D,Math类的声明为

1

public final class Mathextends Object

   不能被继承

E,ClassLoader可以被继承,用户可以自定义类加载器

 

 

20 观察以下代码:

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

class Car extends Vehicle

{

    public static void main (String[] args)

    {

        new  Car(). run();

    }

    private final void run()

    {

        System. out. println ("Car");

    }

}

class Vehicle

{

    private final void run()

    {

        System. out. println("Vehicle");

    }

}


下列哪些针对代码运行结果的描述是正确的?

正确答案: A   

Car
Vehicle
Compiler error at line 3
Compiler error at line 5
Exception thrown at runtime
  •  

 

答案:

首先final声明的方法是不能被覆盖的,但是这里并不错误,因为方法是private的,也就是子类没有继承父类的run方法,因此子类的run方法跟父类的run方法无关,并不是覆盖。new Car().run()也是调用子类的run方法。

 

21. 关于ThreadLocal类 以下说法正确的是

正确答案: D E   

ThreadLocal继承自Thread
ThreadLocal实现了Runnable接口
ThreadLocal重要作用在于多线程间的数据共享
ThreadLocal是采用哈希表的方式来为每个线程都提供一个变量的副本
ThreadLocal保证各个线程间数据安全,每个线程的数据不会被另外线程访问和破坏

 

 解析:

选DE.

1、ThreadLocal的类声明:

public class ThreadLocal<T>

可以看出ThreadLocal并没有继承自Thread,也没有实现Runnable接口。所以AB都不对。

2、ThreadLocal类为每一个线程都维护了自己独有的变量拷贝。每个线程都拥有了自己独立的一个变量。

所以ThreadLocal重要作用并不在于多线程间的数据共享,而是数据的独立,C选项错。

由于每个线程在访问该变量时,读取和修改的,都是自己独有的那一份变量拷贝,不会被其他线程访问,

变量被彻底封闭在每个访问的线程中。所以E对。

3、ThreadLocal中定义了一个哈希表用于为每个线程都提供一个变量的副本:

 static class ThreadLocalMap {

 

        static class Entry extends WeakReference<ThreadLocal> {

            /** The value associated with this ThreadLocal. */

            Object value;

 

            Entry(ThreadLocal k, Object v) {

                super(k);

                value = v;

            }

        }

 

        /**

         * The table, resized as necessary.

         * table.length MUST always be a power of two.

         */

        private Entry[] table;

}

所以D对。

 

22. 

JAVA反射机制主要提供了以下哪些功能?

正确答案: A B C D   

在运行时判断一个对象所属的类
在运行时构造一个类的对象
在运行时判断一个类所具有的成员变量和方法
在运行时调用一个对象的方法

 

23. 

Math.floor(-8.5)=( )

正确答案: D   

(float)-8.0
(long)-9
(long)-8
(double)-9.0

解析:

floor: 求小于参数的最大整数。返回double类型-----n. 地板,地面

         例如:Math.floor(-4.2) = -5.0

-----------------------------------------------------------

ceil:   求大于参数的最小整数。返回double类型-----vt. 装天花板;

         例如:Math.ceil(5.6) = 6.0

-----------------------------------------------------------

round: 对小数进行四舍五入后的结果。返回int类型

         例如:Math.round(-4.6) = -5

24.

内部类(也叫成员内部类)可以有4种访问权限。(  )

正确答案: A   你的答案: A (正确)

正确
错误

 

25.

1

2

3

Integer i = 42;

Long l = 42l;

Double d = 42.0;

下面为true的是

正确答案: G   

(i == l)
(i == d)
(l == d)
i.equals(d)
d.equals(l)
i.equals(l)
l.equals(42L)

 

26.

在 myjsp.jsp 中,关于下面的代码说法错误的是: (  )   

<%@ page language="java" import="java.util.*" errorPage="error.jsp" isErrorPage="false" %> 

正确答案: A   

该页面可以使用 exception 对象
该页面发生异常会转向 error.jsp
存在 errorPage 属性时,isErrorPage 是默认为 false
error.jsp 页面一定要有isErrorPage 属性且值为 true

27.

java中 String str = "hello world"下列语句错误的是?

正确答案: A B C   

str+='      a'
int strlen = str.length
str=100
str=str+100

解析:

ABC在java中会报错,D可以正常运行, 所以答案是ABC.

A. 'a'是字符,'       a'这个是空格和a,必须要用" a"才可以;

B.String有length()方法

C.int 无法直接转成String类型

D.尾部添加字符串”100“

 

28.

 

博文会持续更新~~~

 

 

 

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_37770023/article/details/79964379
个人分类: 牛客网刷题记录
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭