2019独角兽企业重金招聘Python工程师标准>>>

之前看编程之美,看到了对操作系统精通的定义,比如,写个程序能到任务管理器的CPU曲线划出一段正弦曲线,这种实际的动手能力确实值得我们去关注。

刚刚在看书,关于虚拟机规则的,突然想到可以出如下面试题:

  1. 给出一段会产生堆内存溢出的代码;
  2. 给出一段虚拟机栈和本地方法栈溢出的代码:分StackOverflowError和OutOfMemoryError给出程序;
  3. 给出一段能使运行时常量池溢出的代码;
  4. 给出一段能使方法区溢出的代码。

这些题目不仅考察了对Java内存分配的理解,更从实际操作上去处理内存的问题。理解好了这一类题目,有利于异常的纠错和系统的调优。

华丽的分割线----------------------------------------------------------------------

下面给出一些思路,其实主要还是给出第二题的思路.

  1. 堆溢出:堆里放的是new出来的对象,所以这部分很简单不断的new对象就可以了,但是为了防止对象new出来之后被GC,所以把对象new出来的对象放到一个List中去即可。为了有更好的效果,可以在运行前,调整堆的参数。
  2. 针对HotSpot虚拟机中的栈溢出,如果请求的栈深度大于虚拟机所允许的最大深度,抛出StackOverflowError,如果虚拟机在扩展时无法申请到足够空间则抛出OutOfMemoryError的异常。容易想到在单线程的堆中我们不断的让一个成员变量自增,容纳这个变量的单元无法承受这个变量了,就抛出StackOverflowError了。这就是一个 请求的栈深度大于虚拟机所允许的最大深度。还有种情况,可以开尽量多的线程,并在每个线程里调用native的方法,就自然会抛出 OutOfMemoryError了。
  3. 运行时常量池溢出:运行时常量池是在方法区中的一部分,主要保存Class文件中描述的符号引用。可采用String类的intern方法。
  4. 方法区存放类的信息、常量、静态变量。这部分的溢出可采用增强Class加载的方式。

转载于:https://my.oschina.net/ielts0909/blog/81281

关于JVM的几道面试题相关推荐

  1. Java并发编程71道面试题及答案

    Java并发编程71道面试题及答案 1.在java中守护线程和本地线程区别? java中的线程分为两种:守护线程(Daemon)和用户线程(User). 任何线程都可以设置为守护线程和用户线程,通过方 ...

  2. 如图两道面试题,顺便深入线程池,并连环17问

    这两面试题是基友朋友最近去面滴滴遇到的,今天就借着这两面试真题来深入一波线程池吧,这篇文章力求把线程池核心点和常问的面试点一网打尽,当然个人能力有限,可能会有遗漏,欢迎留言补充! 先把问题列出来,如果 ...

  3. Java并发编程75道面试题及答案

    1.在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User).任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bo ...

  4. Java中创建String的两道面试题及详解

    转载自 Java中创建String的两道面试题及详解 我们知道创建一个String类型的变量一般有以下两种方法: String str1 = "abcd";String str2 ...

  5. ASP.NET 经典60道面试题

    转:http://bbs.chinaunix.net/thread-4065577-1-1.html ASP.NET 经典60道面试题 1. 简述 private. protected. public ...

  6. 用大约 10 万字的内容对 Java 的核心知识点和常见的 1000 多道面试题,做了详细的介绍

    每个技术人都有个大厂梦,我觉得这很正常,并不是饭后的谈资而是每个技术人的追求.像阿里.腾讯.美团.字节跳动.京东等等的技术氛围与技术规范度还是要明显优于一些创业型公司/小公司,如果说能够在这样的公司锻 ...

  7. Java 208道面试题及部分答案

    Java 208道面试题及部分答案 一.Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE是java运行时环境,包含了java虚拟机,java基础类库.是使用java语言编写的程序运行所 ...

  8. 2道面试题:输入URL按回车HTTP2

    通过几轮面试,我发现真正那种问答的技术面,写一堆项目真不如去刷技术文章作用大,因此刷了一段时间的博客和掘金,整理下曾经被问到的2道面试题 从浏览器输入URL按回车到页面显示都发生了什么 说说你了解的H ...

  9. python基础知识面试题-深入解答关于Python的11道基本面试题

    前言 本文给大家深入的解答了关于Python的11道基本面试题,通过这些面试题大家能对python进一步的了解和学习,下面话不多说,来看看详细的介绍吧. 一.单引号,双引号,三引号的区别 分别阐述3种 ...

最新文章

  1. java 购物车价格类型_WooCommerce - 为购物车中的每个产品添加自定义价格
  2. 用大数据分析顾客会掏钱买你哪件商品
  3. JZOJ 3804. 【NOIP2014模拟8.24】小X 的AK 计划
  4. 如何在移动设备上以开发模式访问SAP Spartacus
  5. linux 之 getopt_long()
  6. Visual Studio“Orcas”October 2006 CTP版下载
  7. 【福利】周志华教授专著《集成学习:基础与算法》上市,豆瓣满分森林书破解AI实践难题...
  8. 澳国立计算机录取分数,澳洲出国:2018年澳洲国立大学对高考成绩的本科录取分数线(多图)...
  9. angualr Material Icons
  10. oracle 11g 延迟验证,取消 11G延迟密码验证
  11. C++判断一个序列是否为堆(最大堆、最小堆)
  12. selenium+log4j+eclipse相关问题及解决方案
  13. MAC编译OpenJDK8:详细步骤及问题解决办法(含独家解决办法)
  14. oracle数据库下载地址
  15. OSPF路由协议实验配置命令
  16. ESP8266/ESP32 驱动ST7789屏幕
  17. linux音频设备接口,OSS--跨平台的音频接口简介
  18. Mac mini 2018 win10 外接显卡终极教程
  19. 小程序全局拖动悬浮球插件
  20. OpenCV图象孔洞内轮廓填充

热门文章

  1. Java 实现Excel表数据的读取和写入 以及过程中可能遇到的问题
  2. Android控件——ListView之Adapter提供数据(其二)
  3. 31 天重构学习笔记14. 分离职责
  4. 黑客攻防技术宝典Web实战篇第2版—第1章Web应用程序安全与风险
  5. 害怕运维做到30岁还一事无成?你应该来这里看看
  6. Dubbo消费者代理的创建
  7. netty实现简单时事通讯_简单的Java实现Netty进行通信
  8. Redis常见面试题6 -- 持久化方式之AOF以及混合模式
  9. form表单提交数据丢失问题
  10. Springboot项目整合redis集群