1、上下文切换

上下文定义

cpu发生进程或者线程切换时,所依赖的数据集合,比如一个函数有外部变量,函数运行时,必须获取外部变量,这些变量值的集合就是上下文。

引发问题

对于CPU密集型任务,多线程处理会发生上下文切换,会影响到执行速度,如果时IO密集型,多线程技术优点尽显。

如何减少上下文切换

  • 无锁并发编程,锁的获取与释放会发生上下文切换,多线程时会影响效率。无锁并发编程就是将数据分块,每个线程处理各自模块。比如LongAdder中部分代码。
  • CAS算法,并发编程时通过CAS算法更新数据,而不必加锁。如Java的atomic包下的工具类。
  • 使用最少线程,减少不必要的线程创建,自定义线程池。
  • 使用协程,在单线程中维护多任务调度,处理任务间切换,Golang对于协程的使用很强大。

2、死锁

死锁定义

死锁是进程死锁的简称,是由Dijkstra于1965年研究银行家算法时首先提出来的。
系统发生死锁现象不仅浪费大量的系统资源,甚至导致整个系统崩溃,带来灾难性后果。

产生死锁原因

  • 系统资源不足
  • 进程推进顺序不当
  • 资源分配不合理

死锁产生的必要条件

  • 互斥条件:一个资源只能被一个进程或者线程使用。
  • 请求和保持条件:一个进程或者线程,请求资源的时候发生阻塞,对已经获取的资源保持不放。
  • 不可剥夺条件:进程或者线程以获得的资源,在未使用完成时,不能强行剥夺。
  • 循环等待条件:若干进程或者线程形成一种头尾相接的循环等待的资源关系。

这四分条件是死锁产生的必要条件,只要发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。

如何避免死锁

  1. 以确定的顺序获得锁
  2. 加锁时限

Lock接口提供了boolean tryLock(long time, TimeUnit unit) throws InterruptedException方法,该方法可以按照固定时长等待锁,因此线程可以在获取锁超时以后,主动释放之前已经获得的所有的锁。

总结

虽然面试套路众多,但对于技术面试来说,主要还是考察一个人的技术能力和沟通能力。不同类型的面试官根据自身的理解问的问题也不尽相同,没有规律可循。

上面提到的关于这些JAVA基础、三大框架、项目经验、并发编程、JVM及调优、网络、设计模式、spring+mybatis源码解读、Mysql调优、分布式监控、消息队列、分布式存储等等面试题笔记及资料都是免费分享的,有需要学习的小伙伴可以直接点点点点点这里免费下载

习的小伙伴可以直接点点点点点这里免费下载**

有些面试官喜欢问自己擅长的问题,比如在实际编程中遇到的或者他自己一直在琢磨的这方面的问题,还有些面试官,尤其是大厂的比如 BAT 的面试官喜欢问面试者认为自己擅长的,然后通过提问的方式深挖细节,刨根到底。

全网最具深度的三次握手、四次挥手讲解,深夜思考相关推荐

  1. 干货分享!全网最具深度的三次握手、四次挥手讲解,看这一篇就够了!

    安卓基础知识 安卓基础知识确实很多,如果日常积累不够的话确实比较头晕,比如我承认我只在 APP 升级的时候搞过一个前台的 Service,但是面试的时候就会问你 Service 生命周期,如何绑定,如 ...

  2. 全网最具深度的三次握手、四次挥手讲解,知乎上已获万赞

    越来越多的人在提"移动端的下半场"."Android 开发的焦虑"之类的,也有人在喊"技术天天在变,学也学不完","昨天 Kotl ...

  3. 程序员如何解决中年危机?全网最具深度的三次握手、四次挥手讲解,附面试题答案

    前言 今天我给大家再次分享一下,我最近的一些读书的感想,思考起来,确实能够给自己带来一些真实的帮助和启发,希望大家在平时的工作学习中,也能够认清楚学习的一些本质. 如果我们的学习是在不断掌握应对具体工 ...

  4. 面试学习!全网最具深度的三次握手、四次挥手讲解,已拿到offer

    前言 "金三银四"再过几天就到了,又到了一年一度的大型**"程序猿跳槽大会"**.作为大龄IT从业者的我们,每到这个时候就会想起年轻时的自己,为了能搞定面试官, ...

  5. 全网最具深度的三次握手、四次挥手讲解,稳进大厂

    如何学习TCP/IP? <TCP/IP核心解读>是一份介绍互联网核心协议TCP/IP知识的科普性读物,内容不仅包括TCP/IP的起源.组成.规则.应用.路由协议.常用命令.主流技术,还涵盖 ...

  6. go tcp客户端自动重连_阿里面试: HTTP、HTTPS、TCP/IP、三次握手四次挥手过程?(附全网最具深度讲解)

    前言 这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-.-,蹭蹭就蹭蹭 :) 事实上我在阿里面试的时候确实被问到了这个问题,HTTP.HTTPS.TC ...

  7. ssh协议是osi_TCP/IP协议和三次握手四次挥手

    计算机网络体系结构 在计算机网络的基本概念中,分层次的体系结构是最基本的.计算机网络体系结构的抽象概念较多,在学习时要多思考.这些概念对后面的学习很有帮助. 网络协议是什么? 在计算机网络要做到有条不 ...

  8. 在深谈TCP/IP三步握手四步挥手原理及衍生问题—长文解剖IP

    如果对网络工程基础不牢,建议通读<细说OSI七层协议模型及OSI参考模型中的数据封装过程?> 下面就是TCP/IP(Transmission Control Protoco/Interne ...

  9. java锁一次交互二次握手_Java后台开发面试实战(二):TCP三次握手四次挥手

    感谢牛客网网友提供的面试经验! 1. 解释一下TCP三次握手四次挥手 图片来源于微信公众号:码农求职小助手 答: 嗯(稍作思考)- 三次握手简单来说,在数据传输开始前: 第一次握手:客户端向服务端发送 ...

最新文章

  1. 漫画说算法--动态规划算法三(绝对通俗易懂,非常棒)
  2. java文件名大小_java 比较指定文件夹内.txt文件名的大小
  3. Django套用现成模板,导入css,js,images等文件【转】
  4. 清除浏览器缓存之后为什么还是显示旧的html页面_Web缓存控制策略详解
  5. .NET Core中使用Razor模板引擎
  6. pandas的apply函数解析
  7. hystrix 页面_《SpringCloud微服务之Hystrix组件》
  8. CCF201803-4 棋局评估(100分)【博弈+DFS】
  9. 51-高级路由:BGP community属性:local-as
  10. 罗马时钟代码html,用Html实现炫酷罗马时钟
  11. JAVA商城系统开发 VS PHP商城系统开发
  12. Eplan教学视频合集-百度网盘-收集于网络,供参考
  13. 小米mix2安兔兔html5跑分,小米MIX 2S跑分多少?高通骁龙845安兔兔跑分实测 (全文)...
  14. 互联网日报 | 京东健康提交赴港上市招股书;荣耀联合美团推出“共享笔记本”服务;携程获第三方支付牌照...
  15. 使用科大讯飞SDK实现语音功能
  16. 苹果cms新手快速入门常见问题汇总及解决教程
  17. RACV2022观点集锦 | 视觉基础模型
  18. 【C# Opencv机器视觉】 Opencv水位检测、液体高度检测、卡尺高度检测
  19. Simulink导出FMU方法
  20. 【万字长文】——作者底层逻辑辨析【自组织场景宣言】,拉开未来序幕!

热门文章

  1. Mybatis问题解释?
  2. pytorch scatter_函数学习笔记
  3. 动态卷积超进化!通道融合替换注意力,减少75%参数量且性能显著提升 | ICLR 2021
  4. android camera之nv21旋转
  5. log_softmax
  6. Please use HDF reader for matlab v7.3 files
  7. python opencv 视频剪辑
  8. UnicodeEncodeError: 'ascii' codec can't encode character '\xe3' in position 0: ordinal not in range
  9. numpy.core.multiarray failed to import
  10. Win32 OpenGL标准例子