Java 笔试练习 01: T1~19
文章目录
- 1. 下列叙述错误的是( )
- 2. 一个类中,有两个方法名、形参类型、顺序和个数都完全一样,返回值不一样的方法,这种现象叫覆盖。
- 3. 后端获取数据,向前端输出过程中,以下描述正确的是
- 4. 以下是java concurrent包下的4个类,选出差别最大的一个
- 5. 类方法中可以直接调用对象变量。( )
- 6. 下面关于JAVA的垃圾回收机制,正确的是( )
- 7. java语言中,按照一定格式生成程序的文档的工具是?
- 8. 以下代码将打印出
- 9. 能用来修饰interface的有()
- 10. 对下面Spring声明式事务的配置含义的说明错误的是()
- 11. 以下JAVA程序代码的输出是
- 12. 以下哪个式子有可能在某个进制下成立()?
- 13. 下列方法中哪个是执行线程的方法? ()
- 14. 根据下面的代码,String s = null; 会抛出NullPointerException异常的有()
- 15. 在JAVA中,下列哪些是Object类的方法()
- 16. 以下关于对象序列化描述正确的是
- 17. 下面的switch语句中,x可以是哪些类型的数据:()
- 18. 下面有关forward和redirect的描述,正确的是() ?
- 19. 下面哪项技术可以用在WEB开发中实现会话跟踪实现?
1. 下列叙述错误的是( )
java程序的输入输出功能是通过流来实现的
java中的流按照处理单位可分成两种:字节流和字符流
InputStream是一个基本的输出流类。
通过调用相应的close()方法关闭输入输出流
C: 字节输入流
这里"基本的",其实就是将流分为节点流和处理流,而“基本的”是表示节点流
所以C选项可以看成:InputStream是属于节点输出流;
所以我们就要判断InputStream是节点流还是处理流,是输出流还是输入流
这就涉及到哪些是节点流,哪些是处理流了,而且很明显,他是一个输入流
节点流:
FileInputStream,FileOutputStrean,FileReader,FileWriter
StringReader,StringWriter
ByteArrayInputStream ,ByteArrayOutputStream ,CharArrayReader
PipedInputStream PipedOutputStream PipedReaderPipedWriter处理流:
BufferedInputStrean,BufferedOutputStream,BufferedReader,BufferedWriter
InputStreamReader,OutputStreamReader
DataInputStream,DataOutputStream
PrintWriter不知道大家发现没有,节点流的前缀都是名词,如File,String,Char等;处理流的前缀都是动词,如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>
/* Header for class javaTest_semaphore_HelloNative */#ifndef _Included_javaTest_semaphore_HelloNative
#define _Included_javaTest_semaphore_HelloNative
#ifdef __cplusplus
extern "C" {#endif
/** Class: javaTest_semaphore_HelloNative* Method: greeting* Signature: ()V*/
JNIEXPORT void JNICALL Java_javaTest_semaphore_HelloNative_greeting(JNIEnv *, jclass);#ifdef __cplusplus
}
#endif
#endif
8. 以下代码将打印出
public static void main(String args[]) {List Listlist1 = new ArrayList();Listlist1.add(0);List Listlist2 = Listlist1;System.out.println(Listlist1.get(0) instanceof Integer);System.out.println(Listlist2.get(0) instanceof Integer);}
编译错误
true true
true false
false false
B
collection类型的集合(ArrayList,LinkedList)只能装入对象类型的数据
该题中装入了0,是一个基本类型
但是JDK5以后提供了自动装箱与自动拆箱,所以int类型自动装箱变为了Integer类型。编译能够正常通过。
将list1的引用赋值给了list2,那么list1和list2都将指向同一个堆内存空间。
instanceof是Java中关键字,用于判断一个对象是否属于某个特定类的实例,并且返回boolean类型的返回值。
显然,list1.get(0)和list2.get(0)都属于Integer的实例
9. 能用来修饰interface的有()
private
public
protected
static
B: java中接口只能使用public修饰,接口内方法默认为public abstract
10. 对下面Spring声明式事务的配置含义的说明错误的是()
<bean id="txProxyTemplate" abstract="true"
class=
"org.springframework.transaction.interceptor.TransactionProxyFactoryBean"><property name="transactionManager" ref="myTransactionManager" />
<property name="transactionAttributes"> <props><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="*">PROPAGATION_REQUIRED</prop></props>
</property>
</bean>
定义了声明式事务的配置模板
对get方法采用只读事务
缺少sessionFactory属性的注入
配置需要事务管理的bean的代理时,通过parent引用这个配置模板,代码如下: <bean id="petBiz" parent="txProxyTemplate"> <property name="target" ref="petTarget"/> </bean>
C: sessionFactory只有使用Hibernate才需要注入,并且是注入到事务管理器的,所以c错误
皇上作为对象,太监作为IOC容器,当皇上要挑选妃子晚上睡觉的时候,不用管,只要到床上即可。
太监则根据皇上喜好(找到对应依赖或其他对象),找到对应的妃子送到皇上榻上.
11. 以下JAVA程序代码的输出是
public static void main(String args[]) {System.out.println(17^5);
}
12
22
20
1419857
C
位异运算符号。
运算规则是:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。
17:0001 0001
5: 0000 0101
结果:0001 0100 转10进制:20
12. 以下哪个式子有可能在某个进制下成立()?
13*14=204
12*34=568
14*14=140
1+1=3
A
八进制13转十进制:1*8+3=11
八进制14转十进制:1*8+4=12
11*12=132
八进制204转十进制:2*8*8+0*8+4=132
所以:(1*x¹+3*x°)* (1*x¹+4*x°) = 2*x²+0*x¹+4*x°(x+3)*(x+4)=2x²+4x²+7x+12=2x²+4x²-7x=8x*(x-7)=8x₁=8 x₂=-1解二元一次方程组 得到 8 【x代表进制】
13. 下列方法中哪个是执行线程的方法? ()
run()
start()
sleep()
suspend()
A
run()方法用来执行线程体中具体的内容
start()方法用来启动线程对象,使其进入就绪状态
sleep()方法用来使线程进入睡眠状态
suspend()方法用来使线程挂起,要通过resume()方法使其重新启动
14. 根据下面的代码,String s = null; 会抛出NullPointerException异常的有()
if( (s!=null) & (s.length()>0) )
if( (s!=null) && (s.length()>0) )
if( (s==null) | (s.length()==0) )
if( (s==null) || (s.length()==0) )
AC
String s=null;没有给s开辟任何空间,当执行length()方法时候,
因为没有具体指向的内存空间,所以报出NullPointerException没有指向的错误。
A &是与,位运算,两个都得执行,执行到s.length()自然就报错了。
B S!=null 结果为false 整体就为false ,&& 后面就不会执行。下面的同理。
15. 在JAVA中,下列哪些是Object类的方法()
synchronized()
wait()
notify()
notifyAll()
sleep()
BCD
A synchronized Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。
B C D 都是Object类中的方法 notify(): 是唤醒一个正在等待该对象的线程。 notifyAll(): 唤醒所有正在等待该对象的线程。
E sleep 是Thread类中的方法wait 和 sleep的区别:wait指线程处于进入等待状态,形象地说明为“等待使用CPU”,此时线程不占用任何资源,不增加时间限制。sleep指线程被调用时,占着CPU不工作,形象地说明为“占着CPU睡觉”,此时,系统的CPU部分资源被占用,其他线程无法进入,会增加时间限制。
16. 以下关于对象序列化描述正确的是
使用FileOutputStream可以将对象进行传输
使用PrintWriter可以将对象进行传输
使用transient修饰的变量不会被序列化
对象序列化的所属类需要实现Serializable接口
CD
A、B 对象传输有专门的对象流。
C、序列化的过程中只有属性可以被序列化,方法不可以。同时一旦属性被transient或者static修饰。属性不可序列化。
D、没毛病。看了一下有人说可以利用外部序列化,但是这个外部序列化的接口可是继承了序列化的接口啊。
public interface Externalizable extends java.io.Serializable
17. 下面的switch语句中,x可以是哪些类型的数据:()
switch(x)
{default:
System.out.println("Hello");
}
long
char
float
byte
double
Object
BD
以java8为准,switch支持10种类型
基本类型:byte char short int 包装类 :Byte,Short,Character,Integer String enum
实际只支持int类型
Java实际只能支持int类型的switch语句,那其他的类型时如何支持的
a、基本类型byte char short 原因:这些基本数字类型可自动向上转为int, 实际还是用的int。
b、基本类型包装类Byte,Short,Character,Integer 原因:java的自动拆箱机制 可看这些对象自动转为基本类型
c、String 类型 原因:实际switch比较的string.hashCode值,它是一个int类型 如何实现的,网上例子很多。此处不表。
d、enum类型 原因 :实际比较的是enum的ordinal值(表示枚举值的顺序),它也是一个int类型
所以也可以说 switch语句只支持int类型
18. 下面有关forward和redirect的描述,正确的是() ?
forward是服务器将控制权转交给另外一个内部服务器对象,由新的对象来全权负责响应用户的请求
执行forward时,浏览器不知道服务器发送的内容是从何处来,浏览器地址栏中还是原来的地址
执行redirect时,服务器端告诉浏览器重新去请求地址
forward是内部重定向,redirect是外部重定向
redirect默认将产生301 Permanently moved的HTTP响应
BCD
1.从地址栏显示来说
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.
浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.
redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.
2.从数据共享来说
forward:转发页面和转发到的页面可以共享request里面的数据.
redirect:不能共享数据.
3.从运用地方来说
forward:一般用于用户登陆的时候,根据角色转发到相应的模块.
redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.
4.从效率来说
forward:高.
redirect:低.
本质区别解释一
一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:
转发过程:客户浏览器发送http请求----》web服务器接受此请求--》
调用内部的一个方法在容器内部完成请求处理和转发动作----》将目标资源发送给客户;
在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。
在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。
转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器--》
客户浏览器发现 是302响应,则自动再发送一个新的http请求,请求url是新的location地址----》服务器根据此请求寻找资源并发送给客户。
在这里 location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。
在客户浏览器路径栏显示的是其重定向的 路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。 解释二
重定向,其实是两次request, 第一次,客户端request A,服务器响应,并response回来,告诉浏览器,你应该去B。
这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。
解释三
假设你去办理某个执照,
重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局。
转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来。
19. 下面哪项技术可以用在WEB开发中实现会话跟踪实现?
session
Cookie
地址重写
隐藏域
ABCD
HTTP是“无状态”协议:客户程序每次读取 Web 页面,都打开到 Web 服务器的单独的连接,并且,服务器也不自动维护客户的上下文信息。
即使那些支持持续性 HTTP 连接的服务器,尽管多个客户请求连续发生且间隔很短时它们会保持 socket 打开,
但是,它们也没有提供维护上下文信息的内建支持。上下文的缺失引起许多困难。
例如,在线商店的客户向他们的购物车中加入商品时,服务器如何知道购物车中己有何种物品呢?
类似地,在客户决定结账时,服务器如何能确定之前创建的购物车中哪个属于此客户呢?
这些问题虽然看起来十分简单,但是由于 HTTP 的不足,解答它们却异常复杂困难。
对于这个问题,存在 3 种典型的解决方案:
Cookie(结合session使用)
可以使用 cookie 存储购物会话的 ID;
在后续连接中,取出当前的会话 ID,并使用这个 ID 从服务器上的查找表(lookup table)中提取出会话的相关信息。
以这种方式使用 cookie 是一种绝佳的解决方案,也是在处理会话时最常使用的方式。
但是,sevlet 中最好有一种高级的 API 来处理所有这些任务,以及下面这些冗长乏味的任务:
从众多的其他cookie中(毕竟可能会存在许多cookie)提取出存储会话标识符的 cookie;
确定空闲会话什么时候过期,并回收它们;将散列表与每个请求关联起来;生成惟一的会话标识符。URL 重写
采用这种方式时,客户程序在每个URL的尾部添加一些额外数据。
这些数据标识当前的会话,服务器将这个标识符与它存储的用户相关数据关联起来。
URL重写是比较不错的会话跟踪解决方案,即使浏览器不支持 cookie 或在用户禁用 cookie 的情况下,这种方案也能够工作。
URL 重写具有 cookie 所具有的同样缺点,也就是说,服务器端程序要做许多简单但是冗长乏味的处理任务。
即使有高层的 API 可以处理大部分的细节,仍须十分小心每个引用你的站点的 URL ,以及那些返回给用户的 URL。
即使通过间接手段,比如服务器重定向中的 Location 字段,都要添加额外的信息。
这种限制意味着,在你的站点上不能有任何静态 HTML 页面(至少静态页面中不能有任何链接到站点动态页面的链接)。
因此,每个页面都必须使用 servlet 或 JSP 动态生成。即使所有的页面都动态生成,如果用户离开了会话并通过书签或链接再次回来,会话的信息也会丢失,
因为存储下来的链接含有错误的标识信息。隐藏的表单域
HTML 表单中可以含有如下的条目:<input type="hidden" name="session" value="a1234">
这个条目的意思是:在提交表单时,要将指定的名称和值自动包括在 GET 或 POST 数据中。
这个隐藏域可以用来存储有关会话的信息,但它的主要缺点是:
仅当每个页面都是由表单提交而动态生成时,才能使用这种方法。
单击常规的超文本链接并不产生表单提交,因此隐藏的表单域不能支持通常的会话跟踪,
只能用于一系列特定的操作中,比如在线商店的结账过程。
Java 笔试练习 01: T1~19相关推荐
- Re: 一著名软件公司的java笔试算法题!
主 题: Re: 一著名软件公司的java笔试算法题! 作 者: szlhj () 等 级: 信 誉 值: 95 所属论坛: Java J2SE / 基础类 问题点数: 20 回复 ...
- 0725(016天 多态复习 java中级-抽象类01)
0725(016天 多态复习.java中级-抽象类01) 每日一狗(田园犬西瓜瓜) 主标题 文章目录 0725(016天 多态复习.java中级-抽象类01) 主标题 1. 多态续 1.1 补充知识 ...
- Java笔试/面试题
本文收录各种猥琐的Java笔试/面试题,一些比较容易忘记的,不定期更新.也希望大家在底下留言,贴出自己碰到或看到的各种猥琐笔试.面试题目. J2EE基础部分 1.运算符优先级问题,下面代码的结果是多少 ...
- Java笔试 系列一
Java笔试 系列一 Java基础方面: 1.作用域public,private,protected,以及不写时的区别答:区别如下: 作用域 当前类 同一package ...
- Java多线程学习——01
Java多线程学习--01 1.核心概念 程序:是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念 进程Process:是执行程序的一次执行过程,它是一个动态的概念,是系统资源分配的单 ...
- 每日java笔试五小题
每日java笔试五小题 public class Test{public int x;public static void main(String []args){System. out. print ...
- 2007年4月全国计算机等级考试二级java笔试,2006年4月全国计算机等级考试二级JAVA笔试试题...
<2006年4月全国计算机等级考试二级JAVA笔试试题>由会员分享,可在线阅读,更多相关<2006年4月全国计算机等级考试二级JAVA笔试试题(9页珍藏版)>请在人人文库网上搜 ...
- 黑马程序员 一步一步往上爬 学习毕老师java视频第17,18,19天
---------------------- <a href="http://edu.csdn.net/heima" target="blank"> ...
- Java笔试面试题007
Java笔试面试题007 1.请用正則表達式匹配出QQ号(如果QQ号码为5-10位). 解答: ^ \d{5,10}$ 2.String, StringBuffer StringBuilder的差别. ...
- 2011年计算机等级考试二级java笔试练习题(10)_2010年3月计算机等级考试二级Java笔试题及答案...
2010年3月计算机等级考试二级Java笔试真题 一.选择题(每小题2分,共70分) 下列各题A).B).C).D)四个选项中,只有一个选项是正确的.请将正确选项填涂在答题卡相应位置上,答在试卷上不得 ...
最新文章
- 庖丁解牛Nop:控制反转--IOC和DI
- Codeforces40E[Number Table]
- windows7安装django并创建第一个应用
- 正排索引(forward index)与倒排索引(inverted index)
- Java虚拟机调用jni_JNI攻略之十一――启动虚拟机调用java类
- 【牛客 - 289H】约会(思维,数学,奇偶数,水题)
- Problem 25
- Thinkphp内核无限坐席在线客服系统源码
- nginx 访问图片404_Nginx系列:安全下载模块
- 翻牌游戏如何打乱牌面java_如何游戏4Bet底池?
- ArcGIS Pro中的回归分析浅析(下)地理加权回归工具(GWR)使用小结
- 电脑检测不到硬盘原因 电脑检测不到硬盘怎么办
- (转)高盛报告:人工智能、机器学习和数据将推动未来生产力的发展
- vue---隐藏登录页面导航栏,登录成功跳转页面出现导航栏
- 如何度过人生艰难:魔都28岁硬核知识型美少女自救指南
- audio标签无法自动循环播放问题
- Autojs脚本 最新加密工具 Autojs庖丁 3.2.0 去强制更新
- 上面两点下面一个三角形_章勤琼:三角形内角和180该如何说明 ——小学数学中的合情推理和演绎推理...
- 写给女朋友的3D旋转相册
- 从本体论到知识图谱, 著名学者Pascal Hitzler长文回顾语义网20年发展