Java 笔试练习 01: T1~19

这篇博客包含了19道Java相关的笔试题目,涉及内容广泛,包括Java基础知识、并发编程、垃圾回收机制、Spring声明式事务、对象序列化以及Web开发中的会话跟踪技术。通过解答这些题目,读者可以加深对Java编程的理解。
摘要由CSDN通过智能技术生成

1. 下列叙述错误的是( )

java程序的输入输出功能是通过流来实现的

java中的流按照处理单位可分成两种:字节流和字符流

InputStream是一个基本的输出流类。

通过调用相应的close()方法关闭输入输出流

C: 字节输入流

这里"基本的",其实就是将流分为节点流和处理流,而“基本的”是表示节点流
所以C选项可以看成:InputStream是属于节点输出流;
所以我们就要判断InputStream是节点流还是处理流,是输出流还是输入流
这就涉及到哪些是节点流,哪些是处理流了,而且很明显,他是一个输入流
节点流:
FileInputStreamFileOutputStreanFileReaderFileWriter
StringReaderStringWriter
ByteArrayInputStreamByteArrayOutputStreamCharArrayReader
PipedInputStream PipedOutputStream PipedReaderPipedWriter

处理流:
BufferedInputStreanBufferedOutputStreamBufferedReaderBufferedWriter 
InputStreamReaderOutputStreamReader
DataInputStreamDataOutputStream
PrintWriter

不知道大家发现没有,节点流的前缀都是名词,如FileStringChar等;处理流的前缀都是动词,如input,print,bufferd等等
所以大家别烦分不清一个流到底是节点流还是处理流,看他前缀是名词还是动词就行了
手敲不易,所以有帮助请左上角走一波

2. 一个类中,有两个方法名、形参类型、顺序和个数都完全一样,返回值不一样的方法,这种现象叫覆盖。

运行不了,覆盖是子类和父类之间的,重载是一个类中方法的参数类型,顺序个数不同,如果全相同 就报错

重载(overload)和重写(override)的区别: 
重载就是同一个类中,有多个方法名相同,但参数列表不同(包括参数个数和参数类型),与返回值无关,与权限修饰符也无关。
调用重载的方法时通过传递给它们不同的参数个数和参数类型来决定具体使用哪个方法,这叫多态。 
重写就是子类重写基类的方法,方法名,参数列表和返回值都必须相同,否则就不是重写而是重载。
权限修饰符不能小于被重写方法的修饰符。重写方法不能抛出新的异常或者是比被重写方法声明更加宽泛的检查型异常。

3. 后端获取数据,向前端输出过程中,以下描述正确的是

对于前端过滤过的参数,属于可信数据,可以直接输出到前端页面

对于从数据库获得的数据,属于可信数据,可以直接输出到前端页面

对于从用户上传的Excel等文件解析出的数据,属于可信数据,可以直接输出到前端页面

其它选项都不属于可信数据,输出前应该采用信息安全部发布的XSSFilter做进行相应编码

D 一般设计模式都会增加代码量

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,
一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面, 
在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。
MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
MVC只是将分管不同功能的逻辑代码进行了隔离,增强了可维护和可扩展性,增强代码复用性,因此可以减少代码重复。
但是不保证减少代码量,多层次的调用模式还有可能增加代码量

4. 以下是java concurrent包下的4个类,选出差别最大的一个

Semaphore

ReentrantLock

Future

CountDownLatch

C

A、Semaphore:类,控制某个资源可被同时访问的个数;

B、ReentrantLock:类,具有与使用synchronized方法和语句所访问的隐式监视器锁相同的一些基本行为和语义,但功能更强大;

C、 Future:接口,表示异步计算的结果;

D、 CountDownLatch: 类,可以用来在一个线程中等待多个线程完成任务的类。

A B D是并发编程的锁机制相关,Future是一个线程任务的返回结果的‘欠条’。

5. 类方法中可以直接调用对象变量。( )

正确

错误

静态方法中不能调用对象的变量,因为静态方法在类加载时就初始化,对象变量需要在新建对象后才能使用

6. 下面关于JAVA的垃圾回收机制,正确的是( )

当调用“System.gc()”来强制回收时,系统会立即回收垃圾

垃圾回收不能确定具体的回收时间

程序可明确地标识某个局部变量的引用不再被使用

程序可以显式地立即释放对象占有的内存

B

java提供了一个系统级的线程,即垃圾回收器线程。用来对每一个分配出去的内存空间进行跟踪。
当JVM空闲时,自动回收每块可能被回收的内存,GC是完全自动的,不能被强制执行。
程序员最多只能用System.gc()来建议执行垃圾回收器回收内存,但是具体的回收时间,是不可知的。
当对象的引用变量被赋值为null,可能被当成垃圾。
选C多半是认为置为null,但是置为null不一定就不会使用了啊~那我初始化的时候还置为null呢
况且,置为null只是被认为可以当垃圾回收了。不一定会马上回收. 
局部变量分为引用变量和基本类型变量,基本类型的变量名称和值都是存储在栈中。
引用变量只存储引用在栈中,值在堆中,题目中说的是局部变量的引用,而要释放这个需要finalize()方法,这个方法即便使用了也不是一定立刻马上执行。
一般局部变量都是随着方法执行结束而释放

7. java语言中,按照一定格式生成程序的文档的工具是?

javac

javah

javadoc

jar

C

jar      将许多文件组合成一个jar文件
javac    编译
javadoc  它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。
javah    把java代码声明的JNI方法转化成C\C++头文件。 JNI可参考java核心技术卷二第12章
如
public class HelloNative {
   
    public static native void greeting();
}
使用javah后生成
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值