关于java:综合面试题系列五

动态变量通常存储在过程哪个区?
A.栈区
B.堆区
C.全局区
D.代码区

动态变量的润饰关键字:static,又称动态全局变量。
故最初抉择的后果为: C

JVM内存模型剖析图(参考自网络)

IP地址 131.153.12.71 是一个( )类IP 地址
A.A
B.B
C.C
D.D

解析:
A类地址:1.0.0.1~127.255.255.254
B类地址:128.0.0.1~191.255.255.254
C类地址:192.0.0.1~223.255.255.254
D类地址:224.0.0.0~239.255.255.255
131落在128到191之间,所以为B类地址,答案为B

TCP和IP别离对应了 OSI 中的哪几层?
A. Application layer
B. Presentation layer
C. Transport layer
D. Network layer

解析:依照上图TCP位于传输层,IP位于网络层,答案为CD

同一过程下的线程能够共享以下?
A.stack
B.data section
C.register set
D.file fd

解析:线程共享的内容包含:
1.过程代码段
2.过程的私有数据(利用这些共享的数据,线程很容易的实现相互之间的通信)
3.过程关上的文件描述符、
4.信号的处理器、
5.过程的当前目录和
6.过程用户 ID 与过程组 ID
线程独有的内容包含:
1.线程 ID
2.寄存器组的值
3.线程的堆栈
4.谬误返回码
5.线程的信号屏蔽码
所以答案为BD

简答题:
Java呈现OutOfMemoryError(OOM) 的起因有那些?呈现OOM谬误后,怎么解决?
触发 java.lang.OutOfMemoryError最常见的起因就是应用程序须要的堆空间是大的,然而 JVM 提供的却有余。解决办法就是提供大的堆空间即可。
除此之外还有简单的起因:
内存泄露:特定的编程谬误会导致应用程序不停的耗费更多的内存,每次应用有内存透露危险的性能就会留
下一些不能被回收的对象到堆空间中,随着工夫的推移,透露的对象会耗费所有的堆空间,最终触发
java.lang.OutOfMemoryError: Java heap space 谬误。
解决方案:
应该确保有足够的堆空间来失常运行你的应用程序,在 JVM 的启动配置中减少配置:-Xmx1024m
流量/数据量峰值:应用程序在设计之初均有用户量和数据量的限度,某一时刻,当用户数量或数据量忽然达到一个峰值,并且这峰值曾经超过了设计之初预期的阈值 ,那么以前失常的性能将会进行,并触发java.lang.OutOfMemoryError: Java heap space 异样。
解决方案,如果应用程序的确内存不足,减少堆内存会解决 GC overhead limit 问题,如下,给应用程序 1G 的堆内存:java -Xmx1024m com.yourcompany.YourClass

编程题:
利润与奖金,某公司销售10万元到20万元的奖金10% ,在20万元的奖金10万元以上的奖金7.5% ,到40万元超出20万元的局部奖金为 5%,到60万元的超出40万元的局部奖金 3% ,到100万元的超出60万元局部奖金 1%,请输入说的奖金。

    public static void main(String[] args) {
        float bonus = 0;
        Scanner scan = new Scanner(System.in);
        System.out.print("请输出利润:");
        float num = scan.nextInt();
        if (num <= 100000) {
            bonus = (float) (num * 0.1);
        } else if (num <= 200000) {
            bonus = (float) ((num - 100000) * 0.075 + 100000 * 0.1);
        } else if (num <= 400000) {
            bonus = (float) ((num - 200000) * 0.5 + 100000 * 0.175);
        } else if (num <= 600000) {
            bonus = (float) ((num - 400000) * 0.3 + 100000 * 0.175 + 200000 * 0.5);
        } else if (num <= 1000000) {
            bonus = (float) ((num - 600000) * 0.015 + 100000 * 0.175 + 200000 * 0.5 + 200000 * 0.3);
        } else {
            bonus = (float) ((num - 1000000) * 0.01 + 100000 * 0.175 + 200000 * 0.5 + 200000 * 0.3 + 400000 * 0.015);
        }
        System.out.println("奖金:" + bonus);
    }

本文由乐趣区整理发布,转载请注明出处,谢谢。

You may also like...

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据