讲一讲并行和并发
进程的线程的区别
进程是资源分配的最小单位,线程是程序执行的最小单位。
进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
进程间通信的有哪几种方式
管道(Pipe)及有名管道(named pipe):
信号量
共享内存
信号(Signal)
报文(Message)队列(消息队列)
套接字
线程间资源可以共享吗,进程间呢
Java并发,说一说了解哪些,volatie个synchronized的
volatile本质是告诉JVM当前变量在寄存器中的值是不确定的,需要从主存中读取。synchronized则是锁定当前变量,只有当前线程可以访问该变量,其它线程被阻塞。
volatile仅能使用在变量级别,synchronized则可以使用在变量、方法。
volatile仅能实现变量修改的可见性,而synchronized则可以保证变量修改的可见性和原子性。《Java编程思想》上说,定义long或double时,如果使用volatile关键字(简单的赋值与 返回操作),就会获得原子性。(常规状态下,这两个变量由于其长度,其操作不是原子的)
volatile不会造成线程阻塞,synchronized会造成线程阻塞。
使用volatile而不是synchronized的唯一安全情况是类中只有一个可变的域。
说一说抽象类和接口的区别,平时哪个使用最多
抽象类要被子类继承,接口要被类实现。
接口只能做方法声明,抽象类中可以作方法声明,也可以做方法实现。
接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
接口是设计的结果,抽象类是重构的结果
Restful了解吗说一说Get和Post请求有什么区别
GET请求在URL中传送的参数是有长度限制的,而POST没有。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET在浏览器回退时是无害的,而POST会再次提交请求。
==和equals()区别
"=="是判断两个变量或实例是不是指向同一个内存空间。
"equals"是判断两个变量或实例所指向的内存空间的值是不是相同。
"equals"在JAVA中是一个方法。
"=="在JAVA中只是一个运算符合。
构造器是否可以被重写
构造器就是构造方法,能够被重载(同类中不同参数列表的构造器),不能够被重写(子类使用super方法可以调用)。
不能说能被继承,因为能够调用,但是不能重写
static修饰的变量内存中怎么存放
多态实现原理
Java 对于方法调用动态绑定的实现主要依赖于方法表,但通过类引用调用和接口引用调用的实现则有所不同。
总体而言,当某个方法被调用时,JVM 首先要查找相应的常量池,得到方法的符号引用,并查找调用类的方法表以确定该方法的直接引用,
最后才真正调用该方法。
springboot自动配置原理
spring的bean有哪几种生命周期
给定一个有序递增数据,一个值K,找到最先等于k的下标(不用遍历的方法做出来)
可重入锁怎么实现
TCP的特点与UDP区别?
1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
单核单线程CPU是否可以运行多线程程序?多线程与CPU单线程区别(系统线程和用户线程)?
线程的状态
数据库如何保证事务的可串行化。
事物a 执行读写操作时,会锁定检索的数据行范围(范围锁),这种锁会阻止其他事物在本范围内的一切操作,
只有事物a执行完毕,提交事物后,才会释放范围锁,这样就避免了幻读。
事务隔离级别有什么?通过什么来实现的?分别解决了什么问题?
Redis如何实现集群和高可用?redis分布式锁的加锁解锁详细实现?
Redis和mysql区别是什么?有哪些持久化方式?区别呢?
你了解哪些收集器?CMS和G1。详细谈谈G1的优点
TCP如何保证可靠传输
TCP的流量控制,当接收方的接收窗口为0的时候该怎么办
TCP的拥塞控制(慢启动,拥塞避免,超时间间隔传输及其快速重传,快速恢复)
流量控制和拥塞控制有什么区别
HTTP状态码类型有哪些,及其作用
HTTP1.0 HTTP1.1 HTTP2.0,这三个有什么区别及其改进
1.0与1.1 :长连接 节约带宽 HOST域
1.1与2.0 多路复用 数据压缩 服务器推送
中断机制,isInterrupted和interrupted的区别,哪些状态可以中断并抛出InterruptedException
intertrupte()在阻塞状态抛出异常,再补货后修改变量。
isinterrupted用来判断状态。
-
进程是资源分配的最小单位,线程是程序执行的最小单位。
-
进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。
-
线程之间的通信更方便,同一进程下的线程共享全局变量、静态变量等数据,而进程之间的通信需要以通信的方式(IPC)进行。不过如何处理好同步与互斥是编写多线程程序的难点。
-
但是多进程程序更健壮,多线程程序只要有一个线程死掉,整个进程也死掉了,而一个进程死掉并不会对另外一个进程造成影响,因为进程有自己独立的地址空间。
来源:https://www.cnblogs.com/HHHzhihao/p/12578947.html