面经总结
总结常见的java,测试开发相关面试题
杨钢dust
网易java工程师
展开
-
面试题:操作系统临界区,临界资源,信号量
信号量就是一个变量,用来记录系统中某种资源的数量。可以用p,v操作,操作信号量。一个时间段内只允许一个进程访问的资源称为临界资源。访问临界资源的代码称为临界区。原创 2022-08-21 10:23:06 · 714 阅读 · 1 评论 -
juc中什么是锁的公平性
synchronize是非公平锁,lock是默认非公平锁,可以设置成公平锁。当锁释放的时候,线程如果按进入阻塞队列的顺序获取资源,则称为公平锁。如果一拥而上,谁抢到算谁的,就称为非公平锁。原创 2022-08-14 16:35:18 · 379 阅读 · 0 评论 -
面试题:物理层,数据链路层,网络层分别有那些设备,以及传输数据的基本单位
物理层:集线器,中继器数据链路层:网桥,二层交换机网络层:路由器原创 2022-05-19 11:26:07 · 868 阅读 · 0 评论 -
JMM内存模型
原创 2021-06-30 15:53:49 · 77 阅读 · 0 评论 -
jvm虚拟机结构
堆和方法区是所有线程共享的,而栈,本地方法栈和程序技术器是每个线程独享的。原创 2021-06-29 09:31:46 · 80 阅读 · 0 评论 -
面试题:什么是cas的ABA问题以及如何解决
1.什么是ABA问题2.如何解决加入版本号比较版本,我们在compare阶段不仅要比较期望值A和地址V中的实际值,还要比较变量的版本号是否一致原创 2021-12-11 20:45:11 · 218 阅读 · 0 评论 -
面试题:OSI七层模型的各层作用
1.物理层利用传输介质为数据链路层提供物理连接,实现比特流的透明传输2.数据链路层在物理层提供的比特流的基础上,通过差错控制、流量控制方法,使有差错的物理线路变为无差错的数据链路,3.网络层从而向传输层提供最基本的端到端的数据传输服务4.数据链路层向用户提供可靠的端到端的差错和流量控制,保证报文的正确传输,同时向高层屏蔽下层数据通信的细节,即向用户透明地传送报文。5.会话层组织和协调两个会话进程之间的通信 ,并对数据交换进行管理6.表示层处理用户信息的表示问题,如编码、数据格式转换.原创 2021-12-12 19:42:20 · 2543 阅读 · 1 评论 -
面试题:https的原理和过程
1.客服端连接到https的443端口(http端口是80)2.服务端将CA数字证书中(包含公钥和其他信息)发给客户端3.客服端验证证书,如果没问题利用证书中公钥对一个随机码KEY进行加密发送给服务端4.服务端将收到的随机码KEY利用私钥解密,并将这个随机码KEY对称加密要传输的数据发给客服端5.客户端收到数据使用同样的秘钥(随机码KEY)解密数据。6.双方利用对称加密进行通信...原创 2021-12-11 17:09:38 · 415 阅读 · 0 评论 -
面试题:Redis中的哨兵选举
1.什么是哨兵选举?当主服务挂掉以后,哨兵自动选择从服务器上位2.哨兵选举策略1.优先选择优先级靠前的2.优先选择偏移量最大3.优先选择runid最小的备注:原创 2021-12-11 16:52:17 · 365 阅读 · 0 评论 -
面试题:线程池的7大参数以及4种拒绝策略
一,七大参数二,四大拒绝策略原创 2021-12-12 15:41:10 · 264 阅读 · 0 评论 -
面试题:tcp如何保证可靠传输
原创 2021-12-12 20:51:24 · 2049 阅读 · 0 评论 -
面试题:基本类型和包装类型的区别
1.基本类型不能为null,包装类型可以2.包装类型可以作为泛型3.基本类型比包装类型更高效。基本类型在栈中直接存储的具体数值,而包装类型则存储的是堆中的引用。原创 2021-12-14 09:08:33 · 93 阅读 · 0 评论 -
面试题:关系型数据和非关系型数据库的区别
7.关系型数据库支持事务处理,非关系型不支持原创 2021-12-12 09:19:19 · 773 阅读 · 0 评论 -
面试题:ConcurrentHashMap底层结构以及put,get方法
一.JDK7中1.底层数据结构2.put方法3.get方法(1)将 key 通过 hash 之后定位到具体的 Segment,再通过一次 hash 定位到具体的元素上(2)由于 HashEntry 中的 value 属性是用 volatile 关键词修饰的,保证了其内存可见性二.JDK8中1.底层数据结构2.put方法3.get方法(1)根据计算出来的 hash 值寻址,如果在桶上直接返回值(2)如果是红黑树,按照树的方式获取值(3)如果是链表,按链表的方式遍历获取值..原创 2021-12-12 09:00:03 · 275 阅读 · 0 评论 -
面试题场景题:mysql运行很慢怎么办
情况①:偶尔很慢,可能是数据库在查询脏页,或者没拿到锁情况②:一直很慢,可能是没有索引,或者有索引但没走索引,或者表数据量太大需要分库分表原创 2021-12-11 20:35:56 · 116 阅读 · 0 评论 -
面试题:如果Redis宕机如何恢复
答:使用Redis持久化机制,RDB和AOF原创 2021-12-12 08:35:14 · 455 阅读 · 0 评论 -
面试题:什么是泛型
泛型是 JDK1.5 的一个新特性,泛型就是将类型参数化,其在编译时才确定具体的参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。原创 2021-12-14 09:11:02 · 111 阅读 · 0 评论 -
面试题:get和post请求的区别
以及推荐一个文章感觉写的很好原创 2021-12-11 17:34:00 · 245 阅读 · 0 评论 -
面试题:http中常见状态码
原创 2021-12-11 17:20:23 · 572 阅读 · 0 评论 -
面试题:什么是布隆过滤器
这篇博客关于布隆过滤器说的很好原创 2021-12-10 09:40:58 · 417 阅读 · 0 评论 -
面试题:什么是cookie和session以及有何区别
原创 2021-12-13 11:01:05 · 202 阅读 · 0 评论 -
面试题:数据库的乐观锁和悲观锁
原创 2021-12-11 20:49:58 · 313 阅读 · 0 评论 -
面试题:进程的通信方式
一.分类二.共享存储三.消息传递四.管道五.总结原创 2021-12-12 11:07:16 · 125 阅读 · 0 评论 -
面试题:MySQL中where和having的区别
1.where是一个约束声明,使用where来约束来自数据库的数据;having是在查询返回结果集以后,对查询结果进行的过滤操作;2.where不能使用聚合函数,having可以使用聚合函数3.where执行顺序早于group by,早于having...原创 2021-12-12 09:43:41 · 155 阅读 · 0 评论 -
面试题:如何理解缓存击穿,缓存穿透,缓存雪崩
1.缓存穿透1.现象①应用服务器压力变大②redis缓存命中率降低,一直查询数据库③出现很多非正常url访问2.原因:黑客攻击3.解决方法①对空值缓存②使用bitmaps类型定义访问白名单③布隆过滤器④进行实时监控,和运维人员配合排查访问对象和访问数据设置黑名单限制服务2.缓存击穿1.现象①数据库访问压力瞬间增大②redis里面没有出现大量key过期③redis正常运行2.原因Redis某个key过期了,但是这段时间内大量访问了这个key3.解决方案3.缓存雪崩1原创 2021-12-11 20:33:16 · 386 阅读 · 0 评论 -
面试题:读写锁以及其实现
原创 2021-12-14 17:40:12 · 194 阅读 · 0 评论 -
面试题:物理地址和逻辑地址区别
原创 2021-12-16 14:54:13 · 191 阅读 · 0 评论 -
面试题:命名管道和匿名管道的区别
1.匿名管道只能是具有血缘关系的进程之间通信,命名管道可能实现任意两个进程之间的通讯2.匿名管道只能半双工通讯,命名管道可以全双工通讯原创 2021-12-17 21:38:01 · 541 阅读 · 0 评论 -
面试题:微服务的优缺点
优点:逻辑清晰这个特点是由微服务的单一职责的要求所带来的。一个仅负责一项很明确业务的微服务,在逻辑上肯定比一个复杂的系统更容易让人理解。逻辑清晰带来的是微服务的可维护性,在我们对一个微服务进行修改时,能够更容易分析到这个修改到底会产生什么影响,从而通过完备的测试保证修改质量。简化部署在一个单块系统中,只要修改了一行代码,就需要对整个系统进行重新的构建、测试,然后将整个系统进行部署。而微服务则可以对一个微服务进行部署。这样带来的一个好处是,我们可以更频繁的去更改我们的软件,通过很低的集成成本,快速原创 2021-12-15 20:30:45 · 1145 阅读 · 0 评论 -
面试题:创建线程的四种方式
参考这篇博客原创 2021-12-14 09:32:00 · 81 阅读 · 0 评论 -
面试题:==和equals的区别
1.==对于基础类型是比较两个的值,对于引用类型是比较对象的地址值是否相等2.equals()因为是Object的方法,所以只能用于比较两个对象。如果equals没有重现的话,效果和 ==一样原创 2021-12-15 20:27:58 · 230 阅读 · 0 评论 -
面试题:如何优化一个查询慢的语句
原创 2021-12-20 11:10:04 · 151 阅读 · 0 评论 -
面试题:什么是用户态和内核态
由用户态变为内核态称为trap(内陷指令)原创 2021-12-20 11:12:27 · 275 阅读 · 0 评论 -
面试题:说说你说遇到的异常
1.刷题时候遇到的(1)java.lang.ArrayIndexOutOfBoundsException:数组索引越界异常。当对数组的索引值为负数或大于等于数组大小时抛出。(2)java.lang.IndexOutOfBoundsException:索引越界异常。当访问某个序列的索引值小于0或大于等于序列大小时,抛出该异常。(3)java.lang.NullPointerException:空指针异常。当应用试图在要求使用对象的地方使用了null时,抛出该异常。譬如:调用null对象的实例方法、访问n原创 2021-12-14 09:51:33 · 176 阅读 · 0 评论 -
面试题:synchronized 和 volatile 的区别是什么
volatile 本质是在告诉 JVM 当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized 则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。volatile 仅能使用在变量级别;synchronized 则可以使用在 变量. 方法. 和类级别的volatile 仅能实现变量的修改可见性,不能保证原子性;而synchronized 则可以 保证变量的修 改可见性和原子性volatile 不会造成线程的阻塞;synchronized 可能会造成线.原创 2021-12-20 10:55:05 · 211 阅读 · 0 评论 -
面试题:MySQL优化
原创 2021-12-19 09:37:41 · 522 阅读 · 0 评论 -
面试题:自定义类加载器
原创 2021-12-20 10:48:18 · 124 阅读 · 0 评论 -
面试题:sleep和wait的区别
原创 2021-12-15 10:49:30 · 140 阅读 · 0 评论 -
面试题:runnable和callable创建线程的区别
原创 2021-12-15 10:05:19 · 99 阅读 · 0 评论 -
面试题:socket的流程
先从服务器端说起。服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。...原创 2021-12-16 08:57:12 · 1439 阅读 · 0 评论