面试准备

不论是校招还是社招都避免不了各种面试、笔试,如何去准备这些东西就显得格外重要。 运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试:

1. 自我介绍。(介绍自己的项目经历以及一些特长而不是简单自我介绍喜好等)

2. 自己面试中可能涉及哪些知识点、那些知识点是重点。

3. 面试中哪些问题会被经常问到、面试中自己该如何回答。

4. 自己的简历该如何写。

“80%的offer掌握在20%的人手中” 这句话也不是不无道理的。决定你面试能否成功的因素中实力固然占有很大一部 分比例,但是如果你的心态或者说运气不好的话,依然无法拿到满意的 offer。运气暂且不谈,就拿心态来说,千万 不要因为面试失败而气馁或者说怀疑自己的能力,面试失败之后多总结一下失败的原因,后面你就会发现自己会越来 越强大。

另外,大家要明确的很重要的几点是:

1. 写在简历上的东西一定要慎重,这可能是面试官大量提问的地方;

2. 将自己的项目经历完美的展示出来非常重要。

一、什么情况下会发生栈内存溢出?

1、栈是线程私有的,栈的生命周期和线程一样,每个方法在执行的时候就会创建一个栈帧,它包含局部变量表、操作数栈、动态链接、方法出口等信息,局部变量表又包括基本数据类型和对象的引用;
2、当线程请求的栈深度超过了虚拟机允许的最大深度时,会抛出StackOverFlowError异常,方法递归调用肯可能会出现该问题;

3、调整参数-xss去调整jvm栈的大小

二、详解JVM内存模型?

jvm将虚拟机分为5大区域,程序计数器、虚拟机栈、本地方法栈、java堆、方法区;

  • 程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器,用于记录当前虚拟机正在执行的线程指令地址;
  • 虚拟机栈:线程私有的,每个方法执行的时候都会创建一个栈帧,用于存储局部变量表、操作数、动态链接和方法返回等信息,当线程请求的栈深度超过了虚拟机允许的最大深度时,就会抛出StackOverFlowError;
  • 本地方法栈:线程私有的,保存的是native方法的信息,当一个jvm创建的线程调用native方法后,jvm不会在虚拟机栈中为该线程创建栈帧,而是简单的动态链接并直接调用该方法;
  • 堆:java堆是所有线程共享的一块内存,几乎所有对象的实例和数组都要在堆上分配内存,因此该区域经常发生垃圾回收的操作;
  • 方法区:存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码数据。即永久代,在jdk1.8中不存在方法区了,被元数据区替代了,原方法区被分成两部分;1:加载的类信息,2:运行时常量池;加载的类信息被保存在元数据区中,运行时常量池保存在堆中;

三、JVM中一次完整的GC是什么样子的?对象如何晋升到老年代?

java堆 = 新生代+老年代;新生代 = Eden + Suivivor(S0 + S1),默认分配比例是8:1:1;当Eden区空间满了的时候,就会触发一次Minor GC,以收集新生代的垃圾,存活下来的对象会被分配到Survivor区大对象(需要大量连续内存空间的对象)会直接被分配到老年代如果对象在Eden中出生,并且在经历过一次Minor GC之后仍然存活,被分配到存活区的话,年龄+1,此后每经历过一次Minor GC并且存活下来,年龄就+1,当年龄达到15的时候,会被晋升到老年代;当老年代满了,而无法容纳更多对象的话,会触发一次full gc;full gc存储的是整个内存堆(包括年轻代和老年代);;Major GC是发生在老年代的GC,清理老年区,经常会伴随至少一次minor gc;

四、Java中的垃圾回收算法?

java中有四种垃圾回收算法,分别是标记清除法、标记整理法、复制算法、分代收集算法;

  • 标记清除法:第一步:利用可达性去遍历内存,把存活对象和垃圾对象进行标记;第二步:在遍历一遍,将所有标记的对象回收掉;特点:效率不行,标记和清除的效率都不高;标记和清除后会产生大量的不连续的空间分片,可能会导致之后程序运行的时候需分配大对象而找不到连续分片而不得不触发一次GC;
  • 标记整理法:第一步:利用可达性去遍历内存,把存活对象和垃圾对象进行标记;第二步:将所有的存活的对象向一段移动,将端边界以外的对象都回收掉;特点:适用于存活对象多,垃圾少的情况;需要整理的过程,无空间碎片产生;
  • 复制算法:将内存按照容量大小分为大小相等的两块,每次只使用一块,当一块使用完了,就将还存活的对象移到另一块上,然后在把使用过的内存空间移除;特点:不会产生空间碎片;内存使用率极低;
  • 分代收集算法:根据内存对象的存活周期不同,将内存划分成几块,java虚拟机一般将内存分成新生代和老生代,在新生代中,有大量对象死去和少量对象存活,所以采用复制算法,只需要付出少量存活对象的复制成本就可以完成收集;老年代中因为对象的存活率极高,没有额外的空间对他进行分配担保,所以采用标记清理或者标记整理算法进行回收;

五、如何判断一个对象是否存活?

判断一个对象是否存活,分为两种算法1:引用计数法;2:可达性分析算法;

引用计数法:给每一个对象设置一个引用计数器,当有一个地方引用该对象的时候,引用计数器就+1,引用失效时,引用计数器就-1;当引用计数器为0的时候,就说明这个对象没有被引用,也就是垃圾对象,等待回收;缺点:无法解决循环引用的问题,当A引用B,B也引用A的时候,此时AB对象的引用都不为0,此时也就无法垃圾回收,所以一般主流虚拟机都不采用这个方法;

可达性分析法从一个被称为GC Roots的对象向下搜索,如果一个对象到GC Roots没有任何引用链相连接时,说明此对象不可用,在java中可以作为GC Roots的对象有以下几种:

虚拟机栈中引用的对象方法区类静态属性引用的变量方法区常量池引用的对象本地方法栈JNI引用的对象但一个对象满足上述条件的时候,不会马上被回收,还需要进行两次标记;第一次标记:判断当前对象是否有finalize()方法并且该方法没有被执行过,若不存在则标记为垃圾对象,等待回收;若有的话,则进行第二次标记;第二次标记将当前对象放入F-Queue队列,并生成一个finalize线程去执行该方法,虚拟机不保证该方法一定会被执行,这是因为如果线程执行缓慢或进入了死锁,会导致回收系统的崩溃;如果执行了finalize方法之后仍然没有与GC Roots有直接或者间接的引用,则该对象会被回收;

最后

作为过来人,小编是整理了很多进阶架构视频资料、面试文档以及PDF的学习资料,针对上面一套系统大纲小编也有对应的相关进阶架构视频资料,如果**‘你’确定好自己未来的道路或者想学习提升自己技术栈、技术知识的小伙伴们可以点击这里来获取免费学习资料提升自己(全套面试文档、PDF、进阶架构视频)**


(img-V5Od9fxY-1620837850288)]
[外链图片转存中…(img-ro4Fers6-1620837850290)]

Java开发自学教程!java应届生面试自我介绍相关推荐

  1. 一个HR人给应届生的面试建议,关于应届生面试自我介绍、常见问题及回答、面试礼仪、技巧等,非常全面、非常专业,面试前必看,晚了后悔呀。

    一个HR人给应届生的面试建议,关于应届生面试自我介绍.常见问题及回答.面试礼仪.技巧等,非常全面.非常专业,面试前必看,晚了后悔呀. 从事人力资源工作很多年了,多多少少积累了一些经验.已经有许多同仁发 ...

  2. 计算机专业应届研究生面试自我介绍,计算机专业研究生面试自我介绍

    计算机专业研究生面试自我介绍 去一个新环境首先要给别人留一个深刻并好的印象,如何个性自我介绍?如下是中国人才网给大家整理的计算机专业研究生面试自我介绍,希望对大家有所作用. 计算机专业研究生面试自我介 ...

  3. 应届毕业生面试自我介绍范文(希望对今年新找工作的同学有用!)

    在求职面试时,大多数面试考官会要求应聘者做一个自我介绍,一方面以此了解应聘者的大概情况,另一方面考察应聘者的口才.应变和心理承受.逻辑思维等能力.千万不要小视这些. 在求职面试时,大多数面试考官会要求 ...

  4. 计算机专业应届研究生面试自我介绍,计算机专业研究生面试英文自我介绍

    计算机专业研究生面试英文自我介绍 good morning,madam and sir!it's a great honor for me to meet you here today. i woul ...

  5. Java开发自学教程!kafka配置文件参数说明

    JAVA基础 JAVA异常分类及处理 异常分类 异常的处理方式 Throw和throws的区别 JAVA反射 动态语言 反射机制概念 (运行状态中知道类所有的属性和方法) Java反射API 反射使用 ...

  6. Java开发自学教程!java堆栈区别

    资料一:<MySql学习导图> <MySql核心笔记> <MySql性能调优笔记> 由于篇幅有限,相关资料主要以图片的形式展示给大家 Java高频面试专题合集解析: ...

  7. Java开发自学教程!这里有份超全Java体系化进阶学习图谱

    二.面试题 面:考你几个红黑树的知识点?? 红黑树的数据结构都用在哪些场景,有什么好处? 红黑树的时间复杂度是多少? 红黑树中插入新的节点时怎么保持平衡? 面:2-3树都是不没看,回去等消息吧! 三. ...

  8. 计算机专业应届生英语自我介绍,计算机应届生面试英文自我介绍

    英语作为一门国际性语言,其地位的重要性不容忽视.作为学习者语言输入的重要来源之一,怎么用英文进行自我介绍?下面是小编为大家整理的,仅供参考. 篇一: My name is XXX, you might ...

  9. 计算机专业应届生英语自我介绍,计算机应届毕业生求职自我介绍

    各位老师: 早上好! 非常荣幸能参加这次面试,我是号考生,报考的职位是,希望通过这次面试能向各位老师学到东西. 我来自美丽的福建,今年24岁,是大学专业本科的应届毕业生.闽南的山水哺育我长大,我的血液 ...

  10. 大学生计算机面试,大学生计算机毕业面试自我介绍

    大学生计算机毕业面试自我介绍 发布时间:2020-02-26 计算机专业在目前是比较需要的,那么你会自我介绍了吗,今天小编就给大家来分享一下面试自我介绍,好好参考哦 计算机专业应届生面试自我介绍 我学 ...

最新文章

  1. Linux Shell 脚本限制ssh最大用户登录数
  2. 使用Query Object 模式 基于jpql实例
  3. 运用PFA的路灯指示牌GUI程序
  4. 多线程:Executor、Sleep、Deamon、Yeild
  5. ffmpeg基础库编程开发 读书笔记
  6. JavaWeb学习笔记(九)--HttpServletResponse
  7. putc函数_C语言中的putc()函数与示例
  8. Shell脚本编程30分钟入门
  9. cropper左右移动_移动端cropper.js上传图片、裁剪
  10. 水表模型更新--170323
  11. java读取Excel2016
  12. 高效办公软件推荐——文件搜索类
  13. 爱奇艺技术分享:轻松诙谐,讲解视频编解码技术的过去、现在和将来
  14. 计算机英语专业摘要,推荐:计算机毕业论文英文摘要的写作方法
  15. DBLink应用速成
  16. K8s系列之:Persistent Volume
  17. feil_uVission4左侧工目录消失
  18. Python各种扩展名(py, pyc, pyw, pyo, pyd)区别
  19. qt模拟键盘的三种实现方式(思路+demo)
  20. 送书 | 教你下载B站指定视频

热门文章

  1. 新浪微博开放平台接口使用小结
  2. 平面设计师okr_掌握OKR工作法,教你快速提升工作效率
  3. 全开源!智能灯串开发资料全开源!为这个冬天装点烂漫“星空”
  4. 计算机cpu后面字母代表什么意思,CPU后缀含义是什么意思 AMD/intel处理器后缀字母代表什么涵义...
  5. IP地址与DNS的作用,什么是IP地址与DNS【详细】
  6. MacBook苹果电脑翻盖自动开机及音效设置
  7. 国际服务贸易期末考试复习资料
  8. 词干提取(stemming)与词形还原(lemmatization)
  9. auto semicolon insertion 自动分号补齐的坑
  10. 线性约束最优化问题的Frank-Wolfe方法