工作拧螺丝,面试造火箭。我想这是每个程序员比较头疼的事情吧!但是,又必须要经历一个面试流程,尤其是摸不清面试官问的问题,导致面试的时候不知道如何回答。
本文是工作7年Java程序员从几十次面试中挑选出来的面试几率比较大的一些题目,保证都是大家被问过的(就是这么自信),希望对大家找工作有所帮助。
下面的面试题只是我整理出来的一小部分常问的题目,另外本人整理并收藏了20年多家公司面试题知识点合集,以及各种Java核心知识点可以免费分享给大家,下方只是部分资料图展示。
需要的朋友可以点击传送门获取Java面试题资料:https://shimo.im/docs/QyJrRJVRdpptDYgk/
一、JVM系列面试题
1、堆里面的分区:Eden,survival (from+ to),老年代,各自的特点。
答:JVM 分为堆区和栈区,还有方法区,初始化的对象放在堆里面,引用放在栈里面,
class 类信息常量池(static 常量和 static 变量)等放在方法区
new:①方法区:主要是存储类信息,常量池(static 常量和 static 变量),编译后的代码(字节码)等数据
②堆:初始化的对象,成员变量 (那种非 static 的变量),所有的对象实例和数组都要在堆上分配
③栈:栈的结构是栈帧组成的,调用一个方法就压入一帧,帧上面存储局部变量表,操作数栈,方法出口等信息,局部变量表存放的是 8 大基础类型加上一个应用类型,所以还是一个指向地址指针
④ 本地方法栈:主要为 Native 方法服务
⑤ 程序计数器:记录当前线程执行的行号
2、GC 的两种判定方法:
3、SafePoint 是什么
4、GC 的三种收集方法:标记清除、标记整理、复制算法的原理与特点,分别用在什么地方,如果让你优化收集方法,有什么思路?
5、Minor GC 与 Full GC 分别在什么时候发生?
6、JVM 内存分哪几个区,每个区的作用是什么?
7、 如何判断一个对象是否存活?(或者 GC 对象的判定方法)
二、Redis系列面试题1、Redis 与 memcached 相比有哪些优势?
2、Redis 支持哪几种数据类型?
3、Redis 有哪几种数据淘汰策略?
4、为什么 Redis 需要把所有数据放到内存中?
5、Redis 集群方案什么情况下会导致整个集群不可用?