2021年11月03日 java1
考点1:GUI
在委托事件模型中,源生成事件并把它发送给一个或多个监听器,每个监听器必须向事件源注册。
- A T
- B F
显示答案/隐藏答案
正确答案: A考点2:快速排序
下面程序的输出结果是什么。
1 | public class A2{ |
- A 找到最大值
- B 找到最小值
- C 从大到小的排序
- D 从小到大的排序
显示答案/隐藏答案
正确答案: C这道题目的核心思想是:根据交换的次数,决定存储的位置,交换0次,存在第一位,代表最大,交换1次,存在第二位,代表次大,以此类推…..结果可以拿一个有序的递增序列进行验证,这样比较直观,而且简单粗暴
快速排序,比较经常使用的方式可以参照下面两个网址。
介绍:http://blog.csdn.net/morewindows/article/details/6684558
演示:http://www.tyut.edu.cn/kecheng1/site01/suanfayanshi/quick_sort.asp
1 | //看我的注释这种快排的思路就很清晰了,这是只从一个方向遍历的快排 |
是快速排序的另一种实现。严蔚敏的教材上是选择第一个元素作为中枢,从两侧向中间扫描逼近,最后确定枢轴应该在的位置;而上面这种解法则是算法导论上的,选择最后一个元素作为枢轴,然后单侧扫描逼近,最后确定枢轴应该在的位置(根据用变量i记录的交换的次数决定最后一个元素是第i大,然后把它放在第i个位置)。每次确定枢轴应该在的位置这一点是相同的,不同的是确定枢轴位置的过程。
考点3:JVM参数配置
假如某个JAVA进程的JVM参数配置如下:
1 | -Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3, |
请问eden区最终分配的大小是多少?
- A 64M
- B 500M
- C 300M
- D 100M
显示答案/隐藏答案
正确答案: C这是网易2016年在线笔试题中的一道选择题。
先分析一下里面各个参数的含义:
-Xms:1G , 就是说初始堆大小为1G
-Xmx:2G , 就是说最大堆大小为2G
-Xmn:500M ,就是说年轻代大小是500M(包括一个Eden和两个Survivor)
-XX:MaxPermSize:64M , 就是说设置持久代最大值为64M
-XX:+UseConcMarkSweepGC , 就是说使用使用CMS内存收集算法
-XX:SurvivorRatio=3 , 就是说Eden区与Survivor区的大小比值为3:1:1
题目中所问的Eden区的大小是指年轻代的大小,直接根据-Xmn:500M和-XX:SurvivorRatio=3可以直接计算得出
500M*(3/(3+1+1))
=500M(3/5)
=500M0.6
=300M
所以Eden区域的大小为300M。
Xms 起始内存
Xmx 最大内存
Xmn 新生代内存
Xss 栈大小。 就是创建线程后,分配给每一个线程的内存大小
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3,表示年轻代与年老代比值为1:3,年轻代占整个年轻代年老代和的1/4
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如:3,表示Eden:Survivor=3:2,一个Survivor区占整个年轻代的1/5
-XX:MaxPermSize=n:设置持久代大小
收集器设置
-XX:+UseSerialGC:设置串行收集器
-XX:+UseParallelGC:设置并行收集器
-XX:+UseParalledlOldGC:设置并行年老代收集器
-XX:+UseConcMarkSweepGC:设置并发收集器
垃圾回收统计信息
-XX:+PrintGC
-XX:+PrintGCDetails
-XX:+PrintGCTimeStamps
-Xloggc:filename
并行收集器设置
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)
并发收集器设置
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时,使用的CPU数。并行收集线程数。
考点4:泛型无法提升性能
在开发中使用泛型取代非泛型的数据类型(比如用ArrayList
- A 正确
- B 错误
显示答案/隐藏答案
正确答案: B使用泛型的好处
1,类型安全。 泛型的主要目标是提高 Java 程序的类型安全。通过知道使用泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。没有泛型,这些假设就只存在于程序员的头脑中(或者如果幸运的话,还存在于代码注释中)。
2,消除强制类型转换。 泛型的一个附带好处是,消除源代码中的许多强制类型转换。这使得代码更加可读,并且减少了出错机会。
3,潜在的性能收益。 泛型为较大的优化带来可能。在泛型的初始实现中,编译器将强制类型转换(没有泛型的话,程序员会指定这些强制类型转换)插入生成的字节码中。但是更多类型信息可用于编译器这一事实,为未来版本的 JVM 的优化带来可能。由于泛型的实现方式,支持泛型(几乎)不需要 JVM 或类文件更改。所有工作都在编译器中完成,编译器生成类似于没有泛型(和强制类型转换)时所写的代码,只是更能确保类型安全而已。
所以泛型只是提高了数据传输安全性,并没有改变程序运行的性能
考点5:正则表达式
以下代码将打印出
1 | public static void main (String[] args) { |
- A
com. jd
- B
com/jd/MyClass.class
- C
///////MyClass.class
- D
com.jd.MyClass
显示答案/隐藏答案
正确答案: CC。由于replaceAll方法的第一个参数是一个正则表达式,而”.
“在正则表达式中表示任何字符,所以会把前面字符串的所有字符都替换成”/
“。如果想替换的只是”.
“,那么久要写成”\\.
“。
考点6:自动类型提升
代码片段:
1 | byte b1=1,b2=2,b3,b6; |
关于上面代码片段叙述正确的是()
- A 输出结果:13
- B 语句:b6=b4+b5编译出错
- C 语句:b3=b1+b2编译出错
- D 运行期抛出异常
显示答案/隐藏答案
正确答案: Cbyte,short,char计算时自动提升为int
被final修饰的变量是常量,这里的b6=b4+b5
可以看成是b6=10
;在编译时就已经变为b6=10
了
而b1和b2是byte类型,java中进行计算时候将他们提升为int类型,再进行计算,b1+b2计算后已经是int类型,赋值给b3,b3是byte类型,类型不匹配,编译不会通过,需要进行强制转换。
Java中的byte,short,char进行计算时都会提升为int类型。
考点7:排序算法对比
在各自最优条件下,对N个数进行排序,哪个算法复杂度最低的是? ()
- A 插入排序
- B 快速排序
- C 堆排序
- D 归并排序
显示答案/隐藏答案
正确答案: A考点8:反射机制能实现的功能
JAVA反射机制主要提供了以下哪些功能?
- A 在运行时判断一个对象所属的类
- B 在运行时构造一个类的对象
- C 在运行时判断一个类所具有的成员变量和方法
- D 在运行时调用一个对象的方法
显示答案/隐藏答案
正确答案: ABCD考点9:会话跟踪实现技术
下面哪项技术可以用在WEB开发中实现会话跟踪实现?
- A session
- B Cookie
- C 地址重写
- D 隐藏域
显示答案/隐藏答案
正确答案: ABCD考点10:
character流和byte流的区别不包括()
- A 每次读入的字节数不同
- B 前者带有缓冲,后者没有。
- C 前者是字符读入,后者是字节读入。
- D 二者没有区别,可以互换。