081期综合面试题系列五

2020-09-11 21:58 Java最全面试题库

  点击上方蓝色字体,关注我吧

2020年百日百更原创Java最全面试题库之往期回顾

【000期】Java最全面试题库思维导图

【020期】JavaSE系列面试题汇总(共18篇)

【028期】JavaWeb系列面试题汇总(共10篇)

【042期】JavaEE系列面试题汇总(共13篇)

【049期】数据库系列面试题汇总(共6篇)

【053期】中间件系列面试题汇总(共3篇)

【065期】数据结构与算法面试题汇总(共11篇)

【076期】分布式面试题汇总(共10篇)

【077期】综合面试题系列(一)

【078期】综合面试题系列(二)

【079期】综合面试题系列(三)

【080期】综合面试题系列(四)


开篇介绍

大家好,我是Java最全面试题库提裤姐,今天这篇是综合面试题系列的第五篇,主要总结了各个大厂的面试题相关的问题;在后续,会沿着第一篇开篇的知识线路一直总结下去,做到日更!如果我能做到百日百更,希望你也可以跟着百日百刷,一百天养成一个好习惯。


Q:

选择题

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

静态变量的修饰关键字:static,又称静态全局变量。
故最后选择的结果为:C

JVM内存模型分析图(参考自某技术群聊)

image.png

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

image.png

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

image.png

解析:按照上图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



Q:

简答题

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


Q:

编程题

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


 1    public static void main(String[] args) {
2        float bonus = 0;
3        Scanner scan = new Scanner(System.in);
4        System.out.print("请输入利润:");
5        float num = scan.nextInt();
6        if (num <= 100000) {
7            bonus = (float) (num * 0.1);
8        } else if (num <= 200000) {
9            bonus = (float) ((num - 100000) * 0.075 + 100000 * 0.1);
10        } else if (num <= 400000) {
11            bonus = (float) ((num - 200000) * 0.5 + 100000 * 0.175);
12        } else if (num <= 600000) {
13            bonus = (float) ((num - 400000) * 0.3 + 100000 * 0.175 + 200000 * 0.5);
14        } else if (num <= 1000000) {
15            bonus = (float) ((num - 600000) * 0.015 + 100000 * 0.175 + 200000 * 0.5 + 200000 * 0.3);
16        } else {
17            bonus = (float) ((num - 1000000) * 0.01 + 100000 * 0.175 + 200000 * 0.5 + 200000 * 0.3 + 400000 * 0.015);
18        }
19        System.out.println("奖金:" + bonus);
20    }









“一个专注于分享各类Java面试题的号主,长按二维码关注我吧 ”

祝大家都能拿到心仪的offer!







长按识别二维码

等风也等你



文章都看完了不点个 吗

本文章转载自公众号:tikujie

首页 - Java 相关的更多文章: