前言

我的一个朋友,开发四年了,没跳过槽,四年时间也不过是从最开始的10K涨到了15K,经常和我吐槽工资低。去年8月份左右开始了他“骑驴找马”的行动,从各种地方找学习资料、刷面试题。值得庆幸的是,他出去找工作时疫情还不严重,异常顺利的面进了蚂蚁,薪资更是翻了几倍。现在让我好生羡慕,于是找他要了他刷了至少七遍以上的面试题,特地分享给大家学习:

这里就不过过多赘述了,直接进入正文!

Java就是个多线程的世界

1. 类的线程安全

我们经常说类是线程安全的,类是线程不安全的。那么什么样的类才是线程安全的?

1.1 定义

多线程环境下,不管不同的线程如何使用和调度这个类,这个类总是表现出正确的行为。那么这个类就是线程安全的。
类的线程安全有两个关键点:
1.操作的原子性
2.内存的可见性。

如果在多个线程中共享状态,当同步机制不正确时,就会出现线程不安全的情况。

简单的程序应该不会有线程安全问题吧?

Q:什么情况下会有线程安全问题

A:当某个实现多线程的线程类中有实例变量时

ps:有状态,无状态对象是什么概念

有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。

无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例变量的对象 .不能保存数据,是不变类,是线程安全的。

为什么有线程安全问题?必须要先了解计算机原理

当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题。但是做读操作是不会发生数据冲突问题。

举个例子

从内存读取1M数据 250微妙 = 250000纳秒
CPU读取一次内存 100纳秒

问:从内存中读取1M的int型数据由CPU进行累加,耗时要多久?

答:
1M的数据,Java里int型为32位,4个字节
共有1024*1024/4 = 262144个整数
CPU 计算耗时:262144 *0.6 = 157 286 纳秒

262144个整数从内存读取到CPU,需要耗时
内存读取耗时:262144*100+250000 = 26 464 400 纳秒

怎么解决线程安全问题?

线程安全问题,归根到底一句话:在多线程之间修改共享数据引起的

并发编程——从入门到成仙

为了让大家更好的理解学习线程并发,在这里给大家推荐一个由华为资深架构师Mark老师讲授的《并发编程——从入门到入仙》专题课程!从Java线程入门,到原子操作CAS与显式锁,再到并发安全,三天快速掌握并发编程核心知识,成为并发大神!

你以为这样就完了?更多并发相关资料,一并奉上!

最后

笔者已经把面试题和答案整理成了面试专题文档,有想获取到借鉴参考的朋友:点赞关注后,戳这里即可免费领取

]

[外链图片转存中…(img-e1wd3dKn-1622785620780)]

[外链图片转存中…(img-cqKKaWzN-1622785620781)]

“金三银四”春招指南!在线javascript相关推荐

  1. “金三银四”春招指南之“性能调优”:MySQL+Tomcat+JVM,看完还怕面试官的轰炸?

    春招指南之"性能调优":MySQL+Tomcat+JVM,还怕面试官的轰炸? 01 MySQL性能调优 1.1 MySQL性能调优问题有哪些?怎么学? 关于这个,给大家看一份学习大 ...

  2. “金三银四”春招指南!mysql修改表字段名称

    什么是 Arthas? Arthas 是一款开源在线诊断工具,采用命令行交互模式,支持 web 端在线诊断,同时提供丰富的 Tab 自动补全功能,进一步方便进行问题的定位和诊断.这是一款开源一年多 G ...

  3. 2020程序员VS码农,“金三银四”春招指南

    从代码实现层面看,在功能刚开始开发时,这两个设计区别不是很大,但随着系统演进.越来越多的功能加入,继承关系带来的耦合会导致模块之间关系越来越复杂,牵一发而动全身,终究有一天哪怕只做很小的改动,也将成为 ...

  4. “金三银四”春招指南!java语言程序设计第二版答案朱庆生

    正文 这次写一下springboot与redis的结合,这里使用的是redis集群模式(主从),主从环境的搭建,请参考redis集群搭建 搭建完redis集群环境后,开始springboot之旅 1. ...

  5. “金三银四”春招旺季,HR如何快速抢人才?

    职场中,一直有"金三银四""金九银十"的说法,而3月作为春季招聘旺季,对于跳槽白领.应届毕业生,甚至是受互联网裁员潮波及的失业人员来说,都是个不容错过的机会.据 ...

  6. 金三银四春招特供|高质量面试攻略

  7. 2021年金三银四春招实习回顾

    好久没写博客了,没有消失哦,只是准备春招实习去了,哈哈,一下子两个月就过去了,春招经历了很多,面试了多家公司,下面说一下百度,腾讯,好未来者三家公司的面试经历! 一:百度一二面 这是我第一次经历面试, ...

  8. 2023金三银四应届生求职面试指南

    一.应届生优势 划重点,一定要走校招;千万不要等毕业之后再想着找工作,在毕业前就要敲定落实;否则,就真的该焦虑了.要知道应届生的身份是一个很吃香的身份;只有应届生可以走校园招聘. 1.那校园招聘跟社会 ...

  9. 保驾护航金三银四,使用指南

    前言 作为一个程序员,当然总是期望自己的代码能「一次编写,四处运行」,但真实经验往往是「一处修改,百处填坑」,依赖落后了好几个版本了想要升级.老代码已经看着很不爽了打算重构,都需要下坚决的决心,毕竟哪 ...

最新文章

  1. git init 与 git init --bare 区别
  2. Scrum中文网-疫情之下2021敏捷年度状态报告十大看点
  3. boundingRect函数
  4. billibilli html5播放,Thousands of people online are involved in ef...
  5. 左神算法:反转单向和双向链表(Java版)
  6. jdbc thin连接oracle10,setSavepoint方法报错解决办法
  7. 检测custom settype assign的UI view name
  8. C语言事实上不简单:sizeof
  9. SpringBoot 自动装配原理
  10. 第八章 ---- 枚举注解
  11. 有人说清华本科含金量最高,研究生的含金量就低了,这是为什么?
  12. 大数据平台分析发挥哪些作用
  13. 如何在 iPhone 和 Mac 上的 Apple Notes 中使用智能文件夹?
  14. vs2008的永久破解安装
  15. DirectX诊断工具怎么打开?怎么查看当前电脑所支持的DirectX版本?
  16. 自学考试计算机实践课,河南大学自学考试计算机实践课考试须知
  17. 骨传导耳机品牌排行榜前十名,目前最好的几款骨传导耳机推荐
  18. 跟我一起写Shell脚本之十八--常用命令(head)
  19. 设计师专属的导航网站
  20. 深入JavaWeb技术世界15:通过项目逐步深入了解Mybatis(二)

热门文章

  1. 厨房炒锅行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  2. 做游戏,学编程(C语言) 4 flappy bird
  3. oracle 12c权限设置,如何设置 Oracle 数据库权限
  4. 勒索过苹果的黑客REvil又来了?这次是7000万美元赎金!
  5. 当你使用微信和QQ时,请不要忘记ICQ这个伟大的公司!
  6. 西门子大中华区总裁兼CEO赫尔曼:智能自主制造将重塑工业格局!
  7. 30 道 MySQL 面试题全放送!
  8. 软件工程师如何应对面试的可怕“反乌托邦世界”?
  9. 清华博导尹首一, 带你吃透 AI 芯片来龙去脉!
  10. 免费 | 开源操作系统年度盛会最新日程曝光,邀您一同开启烧脑模式!