牛客网错题(五)

版权声明:转发者请注明地址哦-----kuls的博客-一个正在疯狂学习的大学生- https://blog.csdn.net/qq_36547531/article/details/86559047

寒假终于来了,这是一个提升自己的一个很好的时间,牛客网的刷题肯定是不会停止。最近在写题目时遇到了许多的坑,前来总结一下


1.下列代码片段中,存在编辑错误的语句是()

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);

A.语句2
B.语句1
C.语句3
D.语句4

解析:
自己被这种题目真的坑过很多次了,以后坚决不会错!
本题答案应为:B、C、D
------------知识点------------
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修饰,即只可赋值一次,便不可再改变。


2.下述有关c++的虚类和java接口的描述,说法错误的是?

A.c++虚类相当与java里面的抽象类
B.c++中没有接口的概念,与之对应的是纯虚类,对应的是java的接口
C.纯虚函数和虚函数的区别在于前者只包含定义,而后者还可以包含函数体。
D.一个抽象类和接口中的方法必须是抽象方法
解析:

1、一个子类只能继承一个抽象类(虚类),但能实现多个接口;
2、一个抽象类可以有构造方法,接口没有构造方法;
3、一个抽象类中的方法不一定是抽象方法,即其中的方法可以有实现(有方法体),接口中的方法都是抽象方法,不能有方法体,只有声明;(java8中接口可以有非抽象方法)
4、一个抽象类可以是public、private、protected、default,
接口只有public;
5、一个抽象类中的方法可以是public、private、protected、default,
接口中的方法只能是public和default


Model-View-Controller(MVC) is an architectural pattern that frequently used in web applications. Which of the following statement(s) is(are) correct?

A. Models often represent data and the business logics needed to manipulate the data in the application
B. A view is a (visual) representation of its model. It renders the model into a form suitable for interaction, typically a user interface element
C. A controller is the link between a user and the system. It accepts input from the user and instructs the model and a view to perform actions based on that input
D. The common practice of MVC in web applications is, the model receives GET or POST input from user and decides what to do with it, handing over to controller and which hand control to views(HTML-generating components)
E. None of the above

模型(model)它是应用程序的主体部分,主要包括业务逻辑模块(web项目中的Action,dao类)和数据模块(pojo类)。模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性
视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成
控制器(controller)接收来自界面的请求 并交给模型进行处理 在这个过程中控制器不做任何处理只是起到了一个连接的作用。 本题中显然D错误,应该是控制器接收请求,并将其交给模型进行处理,正确答案为A,B,C.


  1. jvm中垃圾回收分为scanvenge gc和full GC,其中full GC触发的条件可能有哪些

A.栈空间满
B.年轻代空间满
C.老年代满
D.持久代满
E.System.gc()

这个题先放在这,目前还看不懂
链接:https://www.nowcoder.com/questionTerminal/6e9fadc9f3234551bd92d6331a14607d
来源:牛客网

1,新生代:(1)所有对象创建在新生代的Eden区,当Eden区满后触发新生代的Minor GC,将Eden区和非空闲Survivor区存活的对象复制到另外一个空闲的Survivor区中。(2)保证一个Survivor区是空的,新生代Minor GC就是在两个Survivor区之间相互复制存活对象,直到Survivor区满为止。
2,老年代:当Survivor区也满了之后就通过Minor GC将对象复制到老年代。老年代也满了的话,就将触发Full GC,针对整个堆(包括新生代、老年代、持久代)进行垃圾回收。
3,持久代:持久代如果满了,将触发Full GC。


5.在J2EE中,使用Servlet过滤器,需要在web.xml中配置()元素
A.< filter >
B.< filter-mapping>
C.< servlet-filter>
D.< filter-config>

解析:
A,B
Servlet过滤器的配置包括两部分:
第一部分是过滤器在Web应用中的定义,由< filter>元素表示,包括< filter-name>和< filter-class>两个必需的子元素
第二部分是过滤器映射的定义,由< filter-mapping>元素表示,可以将一个过滤器映射到一个或者多个Servlet或JSP文件,也可以采用url-pattern将过滤器映射到任意特征的URL。


6.在JAVA中,下列哪些是Object类的方法()
A.synchronized()
B.wait()
C.notify()
D.notifyAll()
E.sleep()

解析:
A synchronized Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
B C D 都是Object类中的方法
notify(): 是唤醒一个正在等待该对象的线程。
notifyAll(): 唤醒所有正在等待该对象的线程。
E sleep 是Thread类中的方法

wait 和 sleep的区别:
wait指线程处于进入等待状态,形象地说明为“等待使用CPU”,此时线程不占用任何资源,不增加时间限制。
sleep指线程被调用时,占着CPU不工作,形象地说明为“占着CPU睡觉”,此时,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制。


  1. 对于Java中异常的描述正确的是( )

A.用throws定义了方法可能抛出的异常,那么调用此方法时一定会抛出此异常。
B.如果try块中没有抛出异常,finally块中的语句将不会被执行。
C.抛出异常意味着程序发生运行时错误,需要调试修改
D.Java中的可不检测(unchecked)异常可能来自Runti`meException类或其子类。

Exception(异常)
是程序本身可以处理的异常。主要包含RuntimeException等运行时异常和IOException,SQLException等非运行时异常。
运行时异常 包括:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
运行时异常的特点是Java编译器不会检查它,也就是说,当程序中可能出现这类异常,即使没有用try-catch语句捕获它,也没有用throws子句声明抛出它,也会编译通过。
非运行时异常(编译异常) 包括:RuntimeException以外的异常,类型上都属于Exception类及其子类。从程序语法角度讲是必须进行处理的异常,如果不处理,程序就不能编译通过。如IOException、SQLException等以及用户自定义的Exception异常,一般情况下不自定义检查异常

A错 在调用此方法的时候 也可以再次申明以将异常交由更高一级处理。
B错 finally块中的语句一定会被执行。除非catch块中有System.exit(0)。
C错 抛出异常不一定是运行时异常,也有可能是编译时异常。
D对 运行时异常的特点是Java编译器不会检查它。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_36547531/article/details/86559047