Java面试题2-附答案
JVM的内存结构
根据 JVM 规范,JVM 内存共分为虚拟机栈、堆、方法区、程序计数器、本地方法栈五个部分。
1、Java虚拟机栈:
线程私有;每个方法在执行的时候会创建一个栈帧,存储了局部变量表,操作数栈,动态连接,方法返回地址等;每个方法从调用到执行完毕,对应一个栈帧在虚拟机栈中的入栈和出栈。
2、堆:
线程共享;被所有线程共享的一块内存区域,在虚拟机启动时创建,用于存放对象实例。
3、方法区:
线程共享;被所有线程共享的一块内存区域;用于存储已被虚拟机加载的类信息,常量,静态变量等。
4、程序计数器:
线程私有;是当前线程所执行的字节码的行号指示器,每条线程都要有一个独立的程序计数器,这类内存也称为“线程私有”的内存。
5、本地方法栈:
线程私有;主要为虚拟机使用到的Native方法服务。
强引用,软引用和弱引用的区别
强引用:
只有这个引用被释放之后,对象才会被释放掉,只要引用存在,垃圾回收器永远不会回收,这是最常见的New出来的对象。
软引用:
内存溢出之前通过代码回收的引用。软引用主要用户实现类似缓存的功能,在内存足够的情况下直接通过软引用取值,无需从繁忙的真实来源查询数据,提升速度;当内存不足时,自动删除这部分缓存数据,从真正的来源查询这些数据。
弱引用:
第二次垃圾回收时回收的引用,短时间内通过弱引用取对应的数据,可以取到,当执行过第二次垃圾回收时,将返回null。弱引用主要用于监控对象是否已经被垃圾回收器标记为即将回收的垃圾,可以通过弱引用的isEnQueued方法返回对象是否被垃圾回收器标记。
数组在内存中如何分配
1、简单的值类型的数组,每个数组成员是一个引用(指针),引用到栈上的空间(因为值类型变量的内存分配在栈上)
2、引用类型,类类型的数组,每个数组成员仍是一个引用(指针),引用到堆上的空间(因为类的实例的内存分配在堆上)
用过哪些设计模式,手写一个(除单例)
设计模式早有总结,看这里:23种设计模式完整总结
springmvc的核心是什么,请求的流程是怎么处理的,控制反转怎么实现的
核心:
控制反转和面向切面
请求处理流程:
1、首先用户发送请求到前端控制器,前端控制器根据请求信息(如URL)来决定选择哪一个页面控制器进行处理并把请求委托给它,即以前的控制器的控制逻辑部分;
2、页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个ModelAndView(模型数据和逻辑视图名);
3、前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入以便视图渲染;
4、前端控制器再次收回控制权,将响应返回给用户。
控制反转如何实现:
我们每次使用spring框架都要配置xml文件,这个xml配置了bean的id和class。
spring中默认的bean为单实例模式,通过bean的class引用反射机制可以创建这个实例。
因此,spring框架通过反射替我们创建好了实例并且替我们维护他们。
A需要引用B类,spring框架就会通过xml把B实例的引用传给了A的成员变量。
mybatis如何处理结果集
MyBatis的结果集是通过反射来实现的。并不是通过get/set方法。在实体类中无论是否定义get/set()方法,都是可以接收到的。
如果面试只是考你这个点的话就恭喜了。如果继续深问流程,那就需要自己找一些源码来阅读了。
java的多态表现在哪里
主要有两种表现形式:重载和重写
重载:
是发生在同一类中,具有相同的方法名,主要是看参数的个数,类型,顺序不同实现方法的重载的,返回值的类型可以不同。
重写:
是发生在两个类中(父类和子类),具有相同的方法名,主要看方法中参数,个数,类型必须相同,返回值的类型必须相同。
参考文档:https://mp.weixin.qq.com/s/VyVkJwyVOIGOEhww_m0XNg
转载于:https://www.cnblogs.com/itbuyixiaogong/p/9066979.html
Java面试题2-附答案相关推荐
- 挑战10个最难的Java面试题(附答案)【下】
查看挑战10个最难的Java面试题(附答案)[上] 在本文中,我们将从初学者和高级别进行提问, 这对新手和具有多年 Java 开发经验的高级开发人员同样有益. 关于Java序列化的10个面试问题 大多 ...
- 挑战10个最难的Java面试题(附答案)【上】
这是收集的10个最棘手的Java面试问题列表.这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题.你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Java ...
- 春招升级打怪拿offer,10w+字总结的Java面试题(附答案)够你刷
春招升级打怪拿offer,献上熬夜整理最新"10w+字总结的Java面试题(附答案)"够你刷! 其包含的内容模块有:基础.JVM.多线程与高并发.Spring.MyBatis.Sp ...
- 挑战10个最难回答的Java面试题(附答案)
点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来源:segmentfault.com/a/1190000019962661 这是我收集的10 ...
- 总结Java反射面试题(附答案)
反射机制是程序在运行时能够获取自身的信息.在java中,只要给定类的名字,那么就可以通过反射机制来获得类的所有信息.今天总结了java反射面试题10道,各位java程序员可以根据这篇java反射面试题 ...
- 2020年你要知道:10道精选阿里+华为Java面试题(附答案)
1. JVM的类加载机制是什么?有哪些实现方式? 类加载机制: 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法去内,然后在堆区创建一个java.lang.C ...
- 企业内部Java笔试题(附答案)
Jame院长 2016-12-06 17:12 基础知识部分(90分) 一.单项选择题(共12题,每题3分,共36分.) 1.Java是从( B )语言改进重新设计. A)Ada B)C++ C)Pa ...
- J2EE面试题集锦(附答案)
转自:http://blog.sina.com.cn/s/blog_4e8be0590100fbb8.html J2EE面试题集锦(附答案) 一.基础问答 1.下面哪些类可以被继承? java.lan ...
- java面试题总结及答案,使用/教程/实例
找大厂面试题,看套路!Java面试题及答案及面试解析以下面试题就是小编为大家准备的,希望对大家有用! 1.面向对象的特征是什么? 答:面向对象的特征主要包括以下几个方面: 抽象:抽象是总结一类 请阅读 ...
- 2021-02-252021 互联网大厂年度总结1000+道高频面试题(附答案解析)冲刺2021
2021 互联网大厂年度总结1000+道高频面试题(附答案解析)冲刺2021 1.String类能不能被继承?为什么? 不能 因为string类是被final修饰的类,final修饰过的类不能被继承. ...
最新文章
- PHP对redis操作详解
- helm istio k8s docker
- 百度文档搜索与Google文档搜索的简单比较
- Linux系统isosize指令用法
- linux so 库的生成与调用
- Python获取本机所有网卡的MAC地址
- [双指针|模拟] leetcode 15 三数之和
- 全网首发:TeaVM编译时容易出错的几种代码
- visio mysql使用教程_visio2007使用方法
- CSR8675烧录工具-全系列CSR8675/86xx一拖多量产工具csr烧录软件(支持FLASH版本和ROM版本)
- NDK开发(八) :JNI下Bitmap的使用
- python中怎么统计英文字符的个数_python 输入一行字符,分别统计出其中英文字母,空格,数字和其他字符的个数用python代码输入一行字符...
- 恒生电子2019校园招聘笔试题
- cad2020安装1603错误_AutoCAD 2020安装失败怎么办?官方有效解决办法
- c语言课程设计高校水电费管理系统
- 【GPU精粹与Shader编程】(四) 《GPU Gems 2》全书核心内容提炼总结 · 上篇
- 贝萨尔曲线实现Periscope心形点赞动画效果
- Linux C/C++ 调试的那些“歪门邪道”
- 单机java_java实现单机版五子棋小游戏
- 让机器“读懂”放射学报告
热门文章
- C#中更改DataTable某列的值,格式化显示指定列的数据
- Winform中设置ZedGraph的曲线为折线、点折线、散点图
- 用final修饰的HashMap,到底可不可以修改??
- 高中计算机应用基础试讲,试讲计算机应用基础.ppt
- 吸收塔如何提高吸收率_燕姐强烈推荐的一款燕窝饮,吸收率原来真的可以这么高!...
- python相同程序执行结果不同_原理相同只是精简了的python代码,运行结果不同是为什么...
- golang string 转换 uint64_Golang 的 #x27;print#x27; 源码解读
- java excel上传--poi
- Python运行方式
- IntelliJ IDEA 添加项目后编译显示包不存在的解决方案