牛客刷题日记(2021-10-26)

牛客刷题日记(2021-10-26)



题目:

5
基本的Java语言函数存储在以下哪个java包中?()
java.lang
java.io
java.net
java.util

解析:

java.lang包包含
包装类
StringMath 类     ——    包含函数
ClassObject 类


java.util     提供包括集合框架、事件模型、日期时间、等等的使用工具类;
java.io       提供通过文件系统、数据流和序列化提供系统的输入输入;
java.net     提供实时网络应用和开发的类;
java.sql     提供使用java语言访问并处理存储在数据源中的数据API;
java.awt  和  java.swing  提供了GUI开发与设计的类,awt提供了创建界面和绘制图形图像的所有类,
swing包提供了一组“轻量级”的组件,尽量让这些组件在所有平台上的工作方式相同;
java.text    提供了与自然语言无关的方式来处理文本日期、数字和消息的类和接口。

题目:

假设 A 类有如下定义,设 a 是 A 类的一个实例,下列语句调用哪个是错误的?()
public class A
{
    public int i;
    static String s;
    void method1(){}
    static void method2(){}
}

	System.out.println(a.i);
	a.method1();
	A.method1();
	A.method2();

解析:

静态成员和静态方法,可以直接通过类名进行调用;其他的成员和方法则需要进行实例化成对象之后,通过对象来调用。


题目:


如果一个接口Cup有个方法use(),有个类SmallCup实现接口Cup,则在类SmallCup中正确的是?  ( )
void use() {}
protected void use() {}
public void use() {}
以上语句都可以用在类SmallCup

解析:

既然是实现接口,就要实现接口的所以方法,相当于重写方法,方法的重写需要满足:三同一大一小(方法名、返回值类型、形参相同;访问权限>=重写前;抛出异常<=重写前)


题目:

下面哪个选项正确创建socket连接?
Socket s = new Socket(8080);
Socket s = new Socket(192.168.1.1,8080)
SocketServer s = new Socket(8080);
Socket s = new SocketServer(192.168.1.1,8080)

解析:

参考楼下的答案做个笔记
服务器端:ServerSocket提供的实例 ServerSocket server = new ServerSocket(端口号)
客户端:Socket提供的实例 Socket client = new Socket(IP地址,端口号)


题目:

在一个基于分布式的游戏服务器系统中,不同的服务器之间,哪种通信方式是不可行的()?
管道
消息队列
高速缓存数据库
套接字

解析:

对于管道,有下面这几种类型:
①普通管道(PIPE):通常有两种限制,一是单工,即只能单向传输;二是血缘,即常用于父子进程间(或有血缘关系的进程间)。
②流管道(s_pipe):去除了上述的第一种限制,实现了双向传输。
③命名管道(name_pipe):去除了上述的第二种限制,实现了无血缘关系的不同进程间通信。
显然,要求是对于不同的服务器之间的通信,是要要求全双工形式的,而管道只能是半双工,虽然可以双向,但是同一时间只能有一个方向传输,全双工和半双工的区别可以如下图示理解:
牛客刷题日记(2021-10-26)_第1张图片


题目:


对于文件的描述正确的是( )
文本文件是以“.txt”为后缀名的文件,其他后缀名的文件是二进制文件。
File类是Java中对文件进行读写操作的基本类。
无论文本文件还是二进制文件,读到文件末尾都会抛出EOFException异常。
Java中对于文本文件和二进制文件,都可以当作二进制文件进行操作。

解析:

A.文件分为文本文件和二进制文件,计算机只认识二进制,所以实际上都是二进制的不同解释方式。文本文件是以不同编码格式显示的字符,例如Ascii、Unicode等,window中文本文件的后缀名有".txt",".log",各种编程语言的源码文件等;二进制文件就是用文本文档打开是看不懂乱码,只要能用文本打开的文件都可以算是文本文件,只是显示的结果不是你想要的,二进制文件只有用特殊的应用才能读懂的文件,例如".png",".bmp"等,计算机中大部分的文件还是二进制文件。
B.File类是对文件整体或者文件属性操作的类,例如创建文件、删除文件、查看文件是否存在等功能,不能操作文件内容;文件内容是用IO流操作的。
C.当输入过程中意外到达文件或流的末尾时,抛出EOFException异常,正常情况下读取到文件末尾时,返回一个特殊值表示文件读取完成,例如read()返回-1表示文件读取完成。
D.上面A选项已经说了,不论是文本文件还是二进制文件,在计算机中都是以二进制形式存储的,所以都当做二进制文件读取。


题目:


关于Java中参数传递的说法,哪个是错误的?
在方法中,修改一个基础类型的参数不会影响原始参数值
在方法中,改变一个对象参数的引用不会影响到原始引用
在方法中,修改一个对象的属性会影响原始对象参数
在方法中,修改集合和Maps的元素不会影响原始集合参数

解析:
https://www.nowcoder.com/questionTerminal/72096d298bd344168441361f9c16659c


题目:

下列关于异常的说法,正确的是()
RuntimeException及其子类的异常可以不做处理
Catch段中的语句,不允许再次出现异常
在方法定义中以throws标识出的异常,在调用该方法中的方法必须处理
程序中所有的可能出现的异常必须在catch中捕获,否则将引起编译错误
屏

解析:
A

异常分为两种,一种为运行异常RuntimeException,另一种为检查异常CheckedException。
对于运行异常,编译器没有强制对其进行捕获。会把异常一直往上层抛出,直到遇到处理代码为止。常见的运行异常有:nullpointexception(空指针异常),indexoutofboundexception(越界异常)。。。。。
检查异常,所有继承自Exception并且不是运行异常的都是检查异常,在程序中需要用try catch进行捕获。常见的有IO异常和SQL异常。


题目:

下面有关JAVA异常类的描述,说法错误的是?
异常的继承结构:基类为ThrowableErrorException继承ThrowableRuntimeExceptionIOException等继承ExceptionRuntimeException一般是外部错误(Error),其一般被 try{}catch语句块所捕获
Error类体系描述了Java运行系统中的内部错误以及资源耗尽的情形,Error不需要捕捉
RuntimeException体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须被 try{}catch语句块所捕获

解析:
D

运行时异常故名思议就是程序在运行的时候出现异常,隐含的一个前提就是程序在编译时是检测不到异常的存在,作者本人也并不知道是否自己的代码中含有运行时异常,所以根本也不可能提前使用try{}catch{}捕获.


题目:

如果希望监听TCP端口9000,服务器端应该怎样创建socket?
new Socket("localhost",9000);
new ServerSocket(9000);
new Socket(9000);
new ServerSocket("localhost",9000);

解析:

答案选B。
ServerSocket(int port) 是服务端绑定port端口,调accept()监听等待客户端连接,它返回一个连接队列中的一个socket。
Socket(InetAddress address , int port)是创建客户端连接主机的socket流,其中InetAddress是用来记录主机的类,port指定端口。


题目:

3
以下代码的输出结果是?
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了对象,调用构造函数输出(‘构造块’)


题目:

Web应用程序中,(    )负责将HTTP请求转换为HttpServletRequest对象
Servlet对象
HTTP服务器
Web容器
JSP网页

解析:

C
http:HTTP协议(HyperText Transfer Protocol,超文本传输协议),是用于从WWW服务器传输超文本到本地浏览器的传输协议。
servlet:是一套技术标准,内含与web应用相关的一系列接口,用于为web应用实现方式提供宏观解决方案
web容器:例如tomcat,用于接受、响应客户端的请求,负责将HTTP请求转换为HttpServletRequest对象,也就是创建servlet实例对象
jsp网页:java的服务器页面,其本质也是一个servlet,由html网页代码、Java代码、jsp标签组成,当servlet处理完数据后会转发给jsp,jsp负责显示数据


题目:

以下哪些表达式返回为真()
String a="My field1";
String b="My field1";
    String c=new String("My field1");
    String d=new String("My field1");

a==b
a==c
c=d
a.equals(b)
a.equals(c)

解析:
正确答案: A D E

==,如果作用于基本数据类型的变量,则直接比较其存储的 “值”是否相等; 如果作用于引用类型的变量,则比较的是所指向的对象的地址   equals方法,注意:equals方法不能作用于基本数据类型的变量。 ①Object类中,equals方法是用来比较两个对象的引用是否相等,即是否指向同一个对象。 ②String类对equals方法进行了重写,用来比较指向的字符串对象所存储的字符串是否相等。其他的一些类诸如Double,Date,Integer等,都对equals方法进行了重写用来比较指向的对象所存储的内容是否相等


题目:

servlet周期包含哪些:
初始化
销毁
请求处理
开始

解析:

正确答案: A B C   

牛客刷题日记(2021-10-26)_第2张图片


题目:


下面有关 JAVA 异常类的描述,说法正确的有()
异常的继承结构:基类为 Throwable,ErrorException 。实现 Throwable, RuntimeExceptionIOException 等继承 ExceptionRuntimeException 一般是外部错误(不考虑Error的情况下),其可以在当前类被 try{}catch 语句块所捕获
Error 类体系描述了 Java 运行系统中的内部错误以及资源耗尽的情形,Error 不需要捕捉
RuntimeException 体系包括错误的类型转换、数组越界访问和试图访问空指针等等,必须 被 try{}catch 语句块所捕获

解析:
正确答案: A B C

D选项 错误的原因:说一个简单的例子:在我们用myeclipse或eclipse开发时
非运行时异常 总是在我们写的时候就会出错 提醒我们try catch 或throw
但是运行时异常检查不出来,只有运行时才会出错,所以也不需try catch


题目:

关于运行时常量池,下列哪个说法是正确的
运行时常量池大小受栈区大小的影响
运行时常量池大小受方法区大小的影响
存放了编译时期生成的各种字面量
存放编译时期生成的符号引用

解析:
正确答案: B C D

运行时常量池(Runtime Constant Pool)是方法区的一部分。Class文件中除了有类的版本、字段、方法、接口等描述信息外,还有一项信息是常量池(Constant Pool Table),用于存放编译器生成的各种字面量和符号引用,这部分内容将在类加载后进入方法区的运行时常量池中存放。


你可能感兴趣的:(牛客刷题,java,后端)