2019-07-08 Java面试题
方法通常存储在进程中的哪一区()
A.堆区
B.栈区
C.全局区
D.方法区
解析:
一条进程的栈区,堆区,方法区,代码区在内存中的映射.
- 栈区:主要用来存放局部变量,传递参数,存放函数的返回地址
- 堆区:动态分配内存,使用new 等进行分配时,所得到的内存就存放在堆中,动态分配的区域附带有分配信息,所以可以free和detete它们.
- 数据区: 全局变量,静态变量,常量都存放在数据区,数据区包括BSS,BSS包括未初始化数据区和初始化数据区
堆向高内存地址生长
栈向低内存地址生长
堆和栈相向而生,堆和栈有一个临界点,叫strbrk.
- 一条进程在内存中的映射
假设现在有一个程序,它的函数调用顺序如下:
main(...) ->; func_1(...) ->; func_2(...) ->; func_3(...),即:主函数main调用函数func_1; 函数func_1调用函数func_2; 函数func_2调用函数func_3。
当一个程序被操作系统调入内存运行, 其对应的进程在内存中的映射如下图所示:
image.png
超链接: 一条进程的栈区、堆区、数据区和代码区在内存中的映射
链接:https://www.nowcoder.com/questionTerminal/9545141ac4d1476eacb9d4e45f6f08b3
来源:牛客网
下列关于包(package)的描述,正确的是()
A.包(package)是Java中描述操作系统对多个源代码文件组织的一种方式。
B.import语句将所对应的Java源文件拷贝到此处执行。
C.包(package)是Eclipse组织Java项目特有的一种方式。
D.定义在同一个包(package)内的类可以不经过import而直接相互使用。
解析:
A:为了更好的组织类,Java提供了包机制.包是类的容器,用于分割类名空间.
B:Improt语句不是把JAVA源文件拷贝,而是引用.告诉编译器有外部文件引入,编译的时候要去读取这个文件.
C:包机制跟IDE无关
D.定义在同一个包的类可以不经过import而直接互相使用
下列不属于Java语言性特点的是
A.Java致力于检查程序在编译和运行时的错误
B.Java能运行虚拟机实现跨平台
C.Java自己操纵内存减少了内存出错的可能性
D.Java还实现了真数组,避免了覆盖数据类型的可能
解析:
A.Java致力于检查程序在编译和运行时的错误
B.JAVA虚拟机实现了跨平台的接口
C:JAVA直接操纵内存减少了内存出错的可能性
D.JAVA实现了真数组,避免了覆盖数据的可能,不是数据类型
程序设计语言中,数组元素在内存中是一个接着一个线性存放的,通过第一个元素就能访问随后的元素,这样的数组称之为“真数组”。
实现了真数组为Java语言健壮性的特点之一。
内存连续就是真数组,内存不连续就是假数组,例如python的list
链接:https://www.nowcoder.com/questionTerminal/1bab09264a1c4528aa60ee9bca5f0976
来源:牛客网
如下代码,执行test()函数后,屏幕打印结果为()
public class Test2
2 {
3 public void add(Byte b)
4 {
5 b = b++;
6 }
7 public void test()
8 {
9 Byte a = 127;
10 Byte b = 127;
11 add(++a);
12 System.out.print(a + " ");
13 add(b);
14 System.out.print(b + "");
15 }
16 }