拿下这些八股,能在寒冬找到工作吗???


文章目录

  • 拿下这些八股,能在寒冬找到工作吗???
    • 1.解决线程安全的问题
    • 2.JVM有哪些内存区域
    • 3.对空间大小怎么配置?各区域怎么划?
    • 4.JVM内存区域会发出溢出(OOM)
    • 5.JVM在创建对象时采用了哪些并发安全机制?
    • 6什么是对象头
    • 7 为什么不使用finalize方法
    • 8 什么是栈上分配?
    • 9怎判断对象的存活
    • 10扩容新生代可以提高GC的效率
    • 11CMS( 关注响应时间)垃圾回收器,以及他的问题
    • 12守护线程和用户线程的区别?
    • 13什么是多线程中的上下文切换
    • 14什么是死锁,死锁的危害?
    • 15 在java中Executor和Executors的区别?
    • 16什么是CAS,以及他的缺点
    • 17Lock接口是什么?对比Synchronized它有什么优势?
    • 18阻塞队列是什么
    • 19什么是Callable和Future
    • 20什么是FutureTask
    • 21 什么是并发容器的实现
    • 22 什么是不可变的对象,他对并发应用有什么帮助?
    • 23Java内存模型?
    • 24 什么是线程安全问题?
    • 25一个线程如果出现了运行时异常
    • 26两个线程之间共享数据
    • 27Java中的volatile变量有什么作用?
    • 28生成者消费者的作用是什么?
    • 29为什么要用线程池
    • 30唤醒阻塞的线程
    • 31中使用到的线程调度算法是什么?
    • 32什么是线程组,为什么在java中不推荐使用
    • 33 coypOnWriteArrayList可以适用于什么场景
    • 34Thread.sleep(0)的作用
    • 35什么是线程调度器和cpu时间片
    • 36如何确保main()方法所在的线程是Java程序最后结束的线程
    • 37什么是JavaTime类,如何创建一个有特定时间间隔的任务
    • 38 Java中的Semaphore是什么?
    • 39为什么代码会重排序?
    • 40有三个线程,如何保证他们按照顺序执行
    • 41JAVA中的ReadWriteLock是什么?
    • 42volatile变量和atomic变量有什么不同
    • 43(DCL)单例模式
    • 44 CyclicBarrier和CountDownLatch的区别?
    • 45 Java中如何获取到线程Dump文件
    • 46怎么检测一个线程是否持有某个对象监视器?
    • 47Linux 环境下如何查找哪个线程使用cpu最长?
    • 48什么是AQS?
    • 49线程类的构造方法,静态块是被哪个线程调用的?
    • 50同步方法和同步块哪个是更好的选择?
    • 51多线程同步和互斥有几种实现方法
    • 52什么是竞争条件?你怎样发现和解决竞争
    • 53Java如何实现多线程之间的通讯和写作?
    • 54为什么wait和notify方法要在同步块中调用?
    • 55JVM中那个参数是用来控制线程的堆栈大小的
    • 56什么是阻塞方法
    • 57线程优先级的理解
    • 58对象的创建过程
    • 59SafePonit是什么?安全区域是什么?
    • 60什么是类加载器,类加载器有哪些
    • 77如何打印JVM日志
    • 78请介绍常见的JVM参数
    • 79G1垃圾回收器的特点
    • 80 JVM调优工具
    • 81 Java多线程安全,主要是因为Java内存模型
    • 82实战应用
    • 83 ZGC
    • 84什么是进程?
    • 85Java中创建线程

1.解决线程安全的问题

1.加锁 synchronized
2.使用cas 轻量级锁
3.Lock
推荐cas

2.JVM有哪些内存区域

程序计数器:主要记录各个线程执行的字节码的地址
虚拟机栈:在jvm运行中存储当前线程运行方法所需的数据,指令、返回地址。
本地方法栈
方法区 存放类的信息
堆:申请的对象

3.对空间大小怎么配置?各区域怎么划?

新生代
老年代
持久代(元空间)
活跃数据的大小:300M
总堆:300M*4 = 1.2 3~4倍活跃数据大小
新生代:450 1~1.5倍活跃数据大小
老年代:750 2~3倍 活跃数据大小
永久代、元空间 300M 1.2~1.5倍fullGC后的永久代空间占用

4.JVM内存区域会发出溢出(OOM)

栈溢出:栈的内存大小是固定的,默认是1M,启动一个线程1,只分配1M的虚拟机栈,把这个方法的局部变量,返回值。每一个方法对应一个栈帧。方法深度太高,把栈的内存用完了。stackOverFlowError
堆溢出:xms xmn 对空间不够用了
方法区溢出:-XXMaxMetaspaceSize=10M 静态变量,常量。加载的静态类太多
本机直接内存溢出:-XX MaxDirectMemorySize=100m 堆外溢出 手动分配和释放,ByteBuffer.allocationDirect()
ooM 后会指出是哪里出现了oom
程序计数器是唯一不会方法oom的区域

5.JVM在创建对象时采用了哪些并发安全机制?

主要指多线程分配内存时。
CAS+失败重试(CAS有一定消耗没有使用)
本地线程分配缓冲(TLAB):每个线程在java堆中预先分配一小块私有内存,也就是本地橙分配缓冲,这样每个线程都单独拥有一个Buffer,如果需要分配内在自己的Buffer分配,这样就不存在竞争的情况,可大大提升分配效率。

6什么是对象头

对象包含:
对象头:
mark word 存储对象运行时的数据:hashocode 锁标识,GC分代年龄
类型指针:指向方法区中创建类的地址
如果是数组,那么还有数组的长度
实例数据:
对齐填充:对象必须是8字节的整数

7 为什么不使用finalize方法

一个对象要被回收,需要经过两次标记。GCROOt引用链,它将被标记一次,随后进行一次筛选,如果覆盖了finalize方法,可以在方法中拯救对象
1.finalize方法的异常不会被处理
2.finalize方法是守护线程,当非守护线程运行结束,他也会结束,不保证能够运行。
3.优先级是10 并不低,只能被使用一次,使用之后,对象会存fq队列中出队。再次回收就会被回收了。

8 什么是栈上分配?

对象的分配过程:
如果开启栈上分配,JVM会先进行栈上分配;
如果没有开启栈上分配或不符合条件,则会进行TLAB分配;
如果TLAB分配不成功且不满足进入老年代的条件,在eden区分配;
如果对象满足了直接进入老年代的条件,那就直接在老年代分配。

目前Hotspot并没有实现真正意义上的栈上分配,实际上是标量替换。
对象的作用域局限在方法fn中,可以使用标量替换的优化手段在栈上分配对象的成员变量,这样就不会生成User对象,大大减轻GC的压力。

并不是所有对象都分配在堆上,除了堆,还可以在栈和tlab本地线程分配缓冲存储对象。
标量是指不可分割的量,如java中基本数据类型和reference类型,相对的一个数据可以继续分解,称为聚合量;

栈上分配是JVM提供的一项优化技术:对于那些线程私有的对象,可以将他们打散分配在栈上,而不是分配在堆上。好处就是可以在函数调用结束后自动消耗,不需要垃圾回收期的介入。对于大量的零散小对象,栈上分配提供了一种很好的对象分配优化策略,站上分配速度快,并且可以有效避免GC带来的负面影响,由于和堆空间相比,栈空间较小,因此对于大对象无法也不适合在栈上分配。
栈上分配的技术基础,两者必须都开启:
关闭TLAB

拿下这些八股,能在寒冬找到工作吗相关推荐

  1. 40岁的程序员还能找到工作吗_如果程序员已经到三十岁了,那他还能找到满意的工作吗?...

    作为已经快奔四的老程序员,看到话题就想吐槽两句,三十岁的程序员正好是黄金时期,无论从编程经验还是身体状态,都处于一个极佳的状态,虽然程序员喜欢通过互联网的方式吐糟自己,特别是大家都在吐槽程序员都是吃青 ...

  2. php自学多久可以上岗,自学php多久能找工作,PHP要自学多久才能找到工作

    PHP要自学多久才能找到工作 我也是刚开始学PHP的,学了有两个月,也是利用周末和晚上的时间学一下,白天上班,HTML,JS,CSS,PHP,MYSQL这些都学得差不多了.我觉得主要是网上去搜一些教学 ...

  3. 自学php怎么找工作,php学多久可以找工作,PHP要自学多久才能找到工作

    PHP要自学多久才能找到工作 我也是刚开始学PHP的,学了有两个月,也是利用周末和晚上的时间学一下,白天上班,HTML,JS,CSS,PHP,MYSQL这些都学得差不多了.我觉得主要是网上去搜一些教学 ...

  4. python到底要学多久才能找到工作?

    现在 Python 很火,很多准备学 Python 或者正在学习 Python 中或多或少又都会听到 Python 难就业,难找工作的问题.所以本次 Chat 好好分析下当前 Python 的就业市场 ...

  5. 如何找到工作?---转在校园论坛自己写的工作总结

    值此河畔改版之际,写写自己这段时间找工作的感悟与历程吧!由于面试和投简历过多,楼主已经忘记了一些公司了.后续可能会修改面经,望见谅! 首先感谢一下河畔的工作者以及以前在河畔留下面经和资料的前辈们@ 切 ...

  6. 我,48岁,上海外企高管,如今,失业三年终于找到工作,分享工作经验

    这两天,一条上海外企高管的求助上海市政府的信刷屏. 我,48岁,上海外企高管,如今,失业三年找不到工作 方便大家阅读,原文笔者也贴出来: 我是犹豫好久才决定给您发这封邮件,因为我想我是代表当下相当一部 ...

  7. 参加Python培训班能找到工作吗?

    参加Python培训班能找到工作吗?很多人都比较关心这个问题,尤其是正在参加Python培训的同学,想要了解这个问题,我们必须从Python就业市场.Python就业班优劣以及个人学习效果三个大的方面 ...

  8. 37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

    欢迎关注:视学算法,每日好文章! 综合自网络 从短期来看,程序员的确算是个不错的工作,薪水也比一般岗位高很多,但是从长远来看,程序员的中年危机会比其他岗位来的更早,很多程序员只有到了35岁左右,才能真 ...

  9. 单片机从事什么工作?只会51单片机能找到工作吗?

    我当初是自学转行进入单片机行业,没有211/985这种学历背景. 转行纯粹是为了脱离阶层,我们那个年代都兴蓝领,白领. 我们学的专业就是属于蓝领类的. 蓝领就是做苦力活的,白领就是衣光鲜艳,坐办公室拿 ...

最新文章

  1. 华为鸿蒙发布会新手机,曝华为 P50/Pro 系列最终版确定,6 月 2 日揭晓鸿蒙手机发布时间...
  2. 挺起你作为一个中国人的脊梁骨
  3. 【ArcGIS Engine二次开发】入门基础(1):ArcGIS Engine简介及开发环境搭建
  4. 别说了,叫爸爸吧! | 今日最佳
  5. 自定义按键_王者荣耀:自定义按键让你的百里守约百发百中
  6. (王道408考研操作系统)第四章文件管理-第二节2:磁盘调度算法
  7. Intel Core Enhanced Core架构/微架构/流水线 (8) - 执行核
  8. WebPack配置文件抽离存放
  9. wangEditor关闭粘贴样式的过滤,解决小程序中xml溢出报错问题
  10. 手写Maven的archetype项目脚手架
  11. 纯css3代码写九宫格效果
  12. Android 10 低内存应用白名单和应用保活
  13. 彻底改变计算机用户名,提升电脑系统安全:如何修改电脑登录用户名以及密码呢?...
  14. 1005. F.Snowy Roads最小生成树Kruskal算法
  15. 如何在word、pdf、ppt中导入字体
  16. CS5216DP转HDMI1080P方案|CS5216:DP++to HDMI(1080P)
  17. 学经济还是学计算机,经济学,计算机和人生
  18. CityMaker学习教程07 示例代码的使用CSharp
  19. 数据挖掘笔试面试(5)
  20. seo搜索引擎优化,seo搜索引擎优化名词解释

热门文章

  1. 实现图片点击放大预览效果
  2. 拼多多使用code获取access_token
  3. 学习记录1——PMSM数学建模——PMSM的基础知识
  4. Invalid keystore format
  5. Scua 23年Linux复习笔记
  6. CSS-项目-调整顺序
  7. 基于机器学习的阿里智能助理在电商领域的架构构建与实践-CSDN公开课-专题视频课程...
  8. java测试报告模板_Maven测试报告的生成和查看
  9. ALLyeSNO优化版浩方 Ver:2007.06.13 呵呵今天整合出来的
  10. 杰里之爬锡效果不理想【篇】