java开发实战经典答案百度云,含面试题+答案
1、上下文切换
上下文定义
cpu发生进程或者线程切换时,所依赖的数据集合,比如一个函数有外部变量,函数运行时,必须获取外部变量,这些变量值的集合就是上下文。
引发问题
对于CPU密集型任务,多线程处理会发生上下文切换,会影响到执行速度,如果时IO密集型,多线程技术优点尽显。
如何减少上下文切换
- 无锁并发编程,锁的获取与释放会发生上下文切换,多线程时会影响效率。无锁并发编程就是将数据分块,每个线程处理各自模块。比如LongAdder中部分代码。
- CAS算法,并发编程时通过CAS算法更新数据,而不必加锁。如Java的atomic包下的工具类。
- 使用最少线程,减少不必要的线程创建,自定义线程池。
- 使用协程,在单线程中维护多任务调度,处理任务间切换,Golang对于协程的使用很强大。
2、死锁
死锁定义
死锁是进程死锁的简称,是由Dijkstra于1965年研究银行家算法时首先提出来的。
系统发生死锁现象不仅浪费大量的系统资源,甚至导致整个系统崩溃,带来灾难性后果。
产生死锁原因
- 系统资源不足
- 进程推进顺序不当
- 资源分配不合理
死锁产生的必要条件
- 互斥条件:一个资源只能被一个进程或者线程使用。
- 请求和保持条件:一个进程或者线程,请求资源的时候发生阻塞,对已经获取的资源保持不放。
- 不可剥夺条件:进程或者线程以获得的资源,在未使用完成时,不能强行剥夺。
- 循环等待条件:若干进程或者线程形成一种头尾相接的循环等待的资源关系。
这四分条件是死锁产生的必要条件,只要发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
如何避免死锁
- 以确定的顺序获得锁
- 加锁时限
Lock接口提供了boolean tryLock(long time, TimeUnit unit) throws InterruptedException方法,该方法可以按照固定时长等待锁,因此线程可以在获取锁超时以后,主动释放之前已经获得的所有的锁。
最后
针对最近很多人都在面试,我这边也整理了相当多的面试专题资料,也有其他大厂的面经。希望可以帮助到大家。
下面的面试题答案都整理成文档笔记。也还整理了一些面试资料&最新2021收集的一些大厂的面试真题(都整理成文档,小部分截图),有需要的可以戳这里免费领取
最新整理电子书
[外链图片转存中…(img-7iOtNfLv-1624947253361)]
最新整理电子书
java开发实战经典答案百度云,含面试题+答案相关推荐
- 李兴华java视频在线观看_李兴华Java开发实战经典视频教程_IT教程网
资源名称:李兴华Java开发实战经典视频教程 资源目录: [IT教程网]010201_[第2章:简单Java程序]_简单Java程序 [IT教程网]010301_[第3章:Java基础程序设计]_Ja ...
- 李兴华java实战经典视频_李兴华Java开发实战经典视频教程
资源名称:李兴华Java开发实战经典视频教程 资源目录:[一品资源网]010201_[第2章:简单Java程序]_简单Java程序[一品资源网]010301_[第3章:Java基础程序设计]_Java ...
- 吃一堑长一智!java开发实战经典答案百度云
第一个:Alibaba[搜索推荐] 一面:算法题:长度为n的数组里放了n+1个大小在[1,n]的数,必然至少有一个重复的数,找出来 二面:概率题:求一根绳子被切两刀能组成一个三角形的概率. 三面主管面 ...
- Java开发实战经典 目录
目录 第1部分 Java基础程序设计 第1章 Java概述及开发环境搭建 2 视频讲解:35分钟 1.1 认识Java 2 1.1.1 什么是Java 2 1.1.2 Java语言的特点 3 ...
- GitHub上标星75k+超牛的《Java面试突击版》,java开发实战经典第二版答案
运筹帷幄之后,决胜千里之外!不打毫无准备的仗,我觉得大家可以先从下面几个方面来准备面试: 1.自我介绍.(你可千万这样介绍: "我叫某某,性别,来自哪里,学校是哪个,自己爱干什么" ...
- Java开发实战经典第二版,小白也能看明白
数据库 2.1 池化技术:如何减少频繁创建数据库连接的性能损耗? 2.2 数据库优化方案(一):查询请求增加时,如何做主从分离? 2.3 数据库优化方案(二):写入数据量增加时,如何实现分库分表? 2 ...
- java开发实战经典第二版网课,成功收获美团,小米offer
一.公务员都不要35岁以上的,何况大公司 这让很多人感到惶恐,现在职场上有一种现象:很多用人单位会在招聘信息上明确标注,年龄需在35岁以下.为什么有经验.有人脉的职场中年人会如此遭"嫌弃&q ...
- java开发实战经典学习笔记第2部分
18. 面向对象的三大特征:继承,封装,多态. 19. 多态分方法重载和对象多态. 20. 对象使用前必须实例化,堆栈内存空间的开辟(new关键字),一个栈内存只能指向一个堆内存. 21. 构造方法: ...
- java开发实战经典(第二版)P452 12-3
12.3 从键盘传入多个字符串到程序中,并将他们按逆序输出在屏幕上. package book;import java.util.Scanner;public class JiOu {public ...
最新文章
- 太狠!33岁年薪50万:“复工第一天,谢谢裁掉我!” 网友:有底气!
- 京东AI一把手周伯文被曝离职创业,曾任技术委员会主席,毕业于中科大少年班...
- “计量确认”与“检定”之区别
- mysql新增阵列df_DF学Mysql(二)——数据表的基本操作
- mysql as_mysql AS子句
- Python 3.9 beta2 版本发布了,看看这 7 个新的 PEP 都是什么?
- Codeforces Round #686 (Div. 3) E. Number of Simple Paths 基环树 + 容斥
- i/o timeout , 希望你不要踩到这个net/http包的坑
- C#热血传奇游戏服务端再次开源更新
- svm手写数字识别python_SVM之Mnist手写数字识别
- “真功夫”与“花拳绣腿”
- wifidog 整体分析
- pip安装的依赖不在虚拟环境中
- 基于Android的火灾报警
- linux如何批量操作,linux批量操作命令锦集
- 如何用开源飞控PIXHAWK进行二次开发?
- Android Telephony纲要
- XILINX FPGA 7K325T 烧录MCS文件后无法自启动的问题
- DHTML中重要的属性方法 (献给DHTML初学者)
- HBuilder开发词典app(一)--基本页面布局
热门文章
- Java中的异常栈轨迹和异常链
- c#获取系统时间的方法
- oracle数据库swap占用率高,物理内存空余很多,swap被持续占用的问题
- jenkins pipeline api获取stage的详细信息_Jenkins + Docker 助力 Serverless 应用构建与部署...
- uniapp弹出框_uniApp上拉刷新,下拉加载,以及筛选功能
- java string对象创建对象_Java String 创建了几个对象
- 电子科大专科c语言作业1,电子科大15春《C语言(专科)》在线作业试卷.docx
- php绘制一个三角形,如何利用css或html5画出一个三角形?两种不同的制作三角形方法(代码实例)...
- mysql启动时执行sql server_常见 mysql 启动、运行.sql 文件错误处理
- 字符串连接“+”int、char、string