
Java面试相关
关于Java方面的面试题
超级圈
这个作者很懒,什么都没留下…
展开
-
如何解决高并发秒杀的超卖问题
众所周知,秒杀最大的一个问题就是解决超卖的问题。 第一种解决超卖如下方式如下 update goods set num = num - 1 WHERE id = 1001 and num > 0我们假设现在商品只剩下一件了,此时数据库中num = 1;但有100个线程同时读取到了这个num = 1,所以100个线程都开始减库存了。但你会最终会发觉,其实只有一个线程减库存成功,其他99个线程全部失败。为何?这就是MySQL中的排他锁起了作用。排他锁又称为写锁...原创 2020-05-18 23:02:30 · 2908 阅读 · 1 评论 -
七、操作系统
进程的通信方式?效率最高的通信方式是什么?管道:管道是单向的、先进先出的、无结构的、固定大小的字节流,它把一个进程的标准输出和另一个进程的标准输入连接在一起。写进程在管道的尾端写入数据,读进程在管道的道端读出数据。信号量:信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一 种锁机制,防止某进程正在访问共享资源时,其它进程也访问该资源。因此,主要作为 进程间以及同一进程内不同线程之间的同步手段。消息队列:是一个在系统内核中用来保存消息的队列,它在系统内核中是以消息链表的形式出现的原创 2020-05-17 22:49:53 · 207 阅读 · 0 评论 -
六、数据库
➢数据库事务的四大特性原子性:要么都做,要么都不做。一致性:转账为例。用户A和B两者的钱总共是2000,那么他们两个之间无论怎么转账,最后总金额都是2000。隔离性:多个事务并发执行时,互不影响持久性:事务一旦提交对数据库的修改永久保存➢事务隔离级别以及各级别下的并发访问问题事务并发访问引起的问题及如何避免:1、更新丢失:事务A在对数据进行更新操作,事务B也在对同一数据更新操作并完成了提交,然后事务A遇到异常进行回滚导致事务B的更新丢失。解决办法: MySQL所有事务隔离级..原创 2020-05-13 11:16:04 · 608 阅读 · 0 评论 -
五、计算机网络
目录OSI七层协议TCP的三次握手和四次挥手TCP和UDP的区别TCP 第三次握手失败的情况 TCP 是如何处理的?为什么连接的时候是三次握手,关闭的时候却是四次握手?TCP 是如何保证可靠传输数据的?HTTPget和post请求的区别?从一个 URL 到获取页面的过程HTTP1.0和HTTP1.1HTTP状态码HTTPSHTTP和HTTPS的区别Cookie和Session的区别session 和 cookie 的关系?禁用 cookie 后对原创 2020-05-17 14:04:16 · 596 阅读 · 0 评论 -
三、容器类和集合框架面试题
目录HashMap什么是HashMap?HashMap的数据结构HashMap的扩容机制HashMap的工作原理HashMap的线程安全问题为什么要使用ConcurrentHashMap?ConcurrentHashMap的结构?HashMap 为什么引入红黑树?JDK1.8 的 HashMap 有哪些优化?HashMap什么是HashMap?HashMap是一个散列表,它存储的内容是键值对(key-value)映射。它的key、value都可以为空,此外原创 2020-05-16 21:40:09 · 442 阅读 · 0 评论 -
四、多线程和锁
进程和线程线程和进程的区别?进程是资源分配的最小单位,线程是 CPU 调度的最小单位。 进程有自己的独立地址空间,线程没有 进程和线程通信方式不同 (线程之间的通信比较方便。同一进程下的线程共享数据,比如全局变量,静态变量,通过这些数据来通信不仅快捷而且方便,当然如何处理好这些访问的同步与互斥正是编写多线程程序的难点。而进程之间的通信只能通过进程通信的方式进行。) 进程上下文切换开销大,线程开销小;对进程进程操作一般开销都比较大,对线程开销就小了 一个进程挂掉了不会影响其他进程,而线程挂掉了原创 2020-05-17 10:15:25 · 978 阅读 · 0 评论 -
二、JVM面试题
Java内存模型Java虚拟机中共有五大内存区域程序计数器,Java虚拟机栈,本地方法栈,java堆,方法区程序计数器:是一块很小的内存空间,用于存储当前线程执行字节码文件的行号指示器。虚拟机栈:是描述Java方法执行过程的内存模型,每个方法被执行时都会创建一个栈桢,栈桢中存储了局部变量表,操作数栈,动态链接,方法出口等。本地方法栈:和虚拟机栈作用类似,区别是虚拟机栈为Java方法服务,本地方法栈为Native方法服务。Java堆:JVM运行过程中创建的对象和生成的数据都存储在堆原创 2020-05-16 18:05:24 · 243 阅读 · 0 评论 -
一、Java基础面试题
目录1. == 和 equals 的区别?2. 拆箱和装箱分别是什么?分别应用在什么场景?3.Java基础类型与封装类型的区别4. Stringstr="abc" 与 Stringstr=newString(“abc”) 一样吗?为什么?5.Java面向对象的特征6.java中重载与重写的区别7. throw 和 throws 的区别?8.编译时异常与运行时异常的区别9.深拷贝和浅拷贝区别是什么?10.值传递和引用传递的区别是什么?11.什么是 java 序列化?原创 2020-05-16 14:18:22 · 722 阅读 · 0 评论 -
设计模式面试题
什么是单例模式?单例模式是一种常用的软件设计模式,在应用这个模式时,单例对象的类必须保证只有一个实例存在,整个系统只能使用一个对象实例。优点:不会频繁地创建和销毁对象,浪费系统资源。使用场景:IO 、数据库连接、Redis 连接等。代码实现/*饿汉式*///内部提供一个唯一的实例private static Singleton instance = new Singlet...原创 2020-04-01 22:11:37 · 218 阅读 · 0 评论 -
Redis
redis是什么 ? redis是一个key-value的nosql数据库.先存到内存中,会根据一定的策略持久化到磁盘,即使断电也不会丢失数据。支持的数据类型比较多。 主要用来做缓存数据库的数据和web集群时当做中央缓存存放seesion。简单说一下redis的使用场景?缓存:把经常需要查询的、很少修改数据,放到读速度很快的空间(内存),以便下次访问...原创 2020-03-23 10:55:48 · 179 阅读 · 0 评论