牛客Java基础专项题 Day 1
这里是IT蛋的12月计划之一:刷完牛客的java专项题,
展示的是自己还不熟练的知识点,或者认为有必要留着复习的题目,每天记录十题。
如果有疏漏不足的地方还请多多指教。
题目展示方式为:
题目
(答案)
解析(部分参考牛客的解答)
1.在 JAVA 编程中, Java 编译器会将 Java 程序转换为
( 字节码 )
- 编译器将Java源代码编译成字节码class文件
- 类加载到JVM里面后,执行引擎把字节码转为可执行代码
- 执行的过程,再把可执行代码转为机器码,由底层的操作系统完成执行。
2.下面的输出结果是什么?jdk1.8版本
(false)
“==”判断的是对象引用地址是否相同
String str=new String("hello"); 这句话new了一个新的String对象,所以地址与"hello"字符串常量的地址不同
如果判断字符串是否相等应给用str.equals("hello")方法
3.实现或继承了Collection接口的是
(List,Iterator,Set)
Map接口未实现Collection接口
List接口的定义为
Vector定义为
Iterator接口未实现Collection接口
Set接口继承自Collection接口
4.下列程序执行后输出结果为( )
static BaseClass
static Base
I’m BaseClass class
I’m Base class
执行顺序从左到右:
父类静态代码块 ->子类静态代码块 ->父类非静态代码块 -> 父类构造函数 -> 子类非静态代码块 -> 子类构造函数。
案例代码如下:
5.对于JVM内存配置参数:-Xmx10240m -Xms10240m -Xmn5120m -XXSurvivorRatio=3
其最小内存值和Survivor区总大小分别是
(10240m,2048m)
-Xmx:最大堆大小 -Xms:初始堆大小 -Xmn:年轻代大小
-XXSurvivorRatio:年轻代中Eden区与Survivor区的大小比值 年轻代5120m,
Eden:Survivor=3,Survivor区大小=1024m (3x+x+x=5120 x=1024)
(Survivor区有两个,即将年轻代分为5份,每个Survivor区占一份),总大小为2048m。
-Xms初始堆大小即最小内存值为10240m
6.在Java中,以下数据类型中,需要内存最多的是 :byte long Object int
(long)
Object 是引用数据类型,只申明而不创建实例,只会在栈内存中开辟空间,默认为空,空占1 bit.
7. 下列可作为java语言标识符的是(a1、 $1、 _1、 11)?
(a1、$1、_1)
Java标识符由数字,字母和下划线(_),美元符号($)组成。在Java中是区分大小写的,而且还要求首位不能是数字。最重要的是,Java关键字不能当作Java标识符。
8. 下面说法正确的是?()
A 调用Thread的sleep()方法会释放锁,调用wait()方法不释放锁
B 一个线程调用yield方法,可以使具有相同优先级线程获得处理器
C 在Java中,高优先级的可运行的线程会抢占低优先级线程的资源
D java中,线程可以调用yield方法使比自己低优先级的线程运行
(BC)
wait():等待时线程别人可以用。
sleep():等待时线程还是自己的,别人不能用。
yield():释放锁,同优先级的其他线程有机会获得锁。
9. 以下各类中哪几个是线程安全的?(ArrayList、Vector、Hashtable、Stack )
(Vector、Hashtable、Stack )
ArrayList线程不安全,Vector线程安全
HashMap线程不安全,Hashtable线程安全
由于Stack继承了Vector,所以线程也是安全的
10. 假如某个JAVA进程的JVM参数配置如下:
-Xms1G -Xmx2G -Xmn500M -XX:MaxPermSize=64M -XX:+UseConcMarkSweepGC -XX:SurvivorRatio=3,请问eden区最终分配的大小是多少?
(300M)
先分析一下里面各个参数的含义:
-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) =500M*0.6 =300M 所以Eden区域的大小为300M。
题外话:
想问下大家tag怎么打,因为之前没写过文章,这一下还没找到Tag在哪里打,所以这篇文章应该没有加tag
