Face面试题-基础篇
文章平均质量分 90
一些简单的面试题
Alan0517
...
展开
-
面试题篇-17-K8s相关面试题
负载均衡是什么?负载均衡是由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无需其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求按照某种策略分配到服务器集合的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡解决了大量并发访问服务问题,其目的就是用最少的投资获得接近于大型主机的性能。Kubernetes 具有强大的副本控制能力,能保证在任意副本(Pod)挂掉时自动从其他机器启动一个新的,还可以动态扩容等。通俗地说,这个 Pod 可能在原创 2024-03-10 14:58:15 · 922 阅读 · 0 评论 -
面试题篇-16-大数据相关
如果需要一个高性能的环境,而且能够容忍一定的数据丢失,那完全可以考虑使用Redis。HBase写快读慢,HBase的读取时长通常是几毫秒,而Redis的读取时长通常是几十微秒。下面基于读写性能、数据类型、数据量、部署难易、数据可靠性、应用场景、两者的结合等多个维度来比较一下两者。Redis支持的数据量通常受内存限制,而HBase没有这个限制,可以存储远超内存大小的数据。HBase部署需要依赖hadoop、zookeeper等服务,而Redis的部署非常简单。但是在适用场景上,两者还是有比较明显的区别的。原创 2024-03-10 14:56:59 · 363 阅读 · 0 评论 -
面试题篇-15-Es相关面试题
这里我们假设是最简单的部署架构,es的节点A接收到查询请求后,会把请求转发到其他datanode,然后每个datanode接收到数据后,会在本机进行数据查询,然后将查询结果id,score返回节点A,然后由节点A对所有返回结果再进行排序和分页,然后节点A再去各个datanode,依据id拿到原始数据合并后返回给用户。mysql组合索引的问题是建立组合索引,是要按照顺序的,而且执行的时候是从左到右匹配执行的,一旦查询条件不符合索引组合次序,或者查询条件多变,组合索引就会毫无用处。原创 2024-01-18 14:44:33 · 383 阅读 · 0 评论 -
面试题篇-14-业务场景相关面试题
但是如果我们有几千万甚至上亿的数据的时候{如图},虽然可以通过不同的数据结构来优化数据检索的时间复杂度,但是整体的效率依然很慢,而且会占用非常多的内存空间,这个问题该怎么解决呢?同样的道理,当发布的服务节点重新启动以后,注册中心也同样会收到通知,于是,把本地长连接池里面的长连接销毁,并重新建立新的连接出发新的 reblance 平衡即可。扫码登录的本质是,通过已经登录过的 App 应用,扫描未登录的 Web 端程序中的二维码, 通过某种机制触发登录凭证的写入从而实现 Web 端自动登录的过程。原创 2023-07-04 23:33:23 · 525 阅读 · 0 评论 -
面试题篇-13-Kafka相关面试题
消息队列Message Queue,简称MQ。是一种应用间的通信方式,主要由三个部分组成。生产者:Producer消息的产生者与调用端主要负责消息所承载的业务信息的实例化是一个队列的发起方代理:Broker主要的处理单元负责消息的存储、投递、及各种队列附加功能的实现是消息队列最核心的组成部分消费者:Consumer一个消息队列的终端也是消息的调用端,具体是根据消息承载的信息,处理各种业务逻辑。异步处理主要应用于对实时性要求不严格的场景,原创 2023-07-04 22:58:58 · 2332 阅读 · 0 评论 -
面试题篇-12-Netty相关面试题
第一:Netty 是一个 基于NIO 模型的高性能网络通信框架,其实可以认为它是对NIO 网络模。型的封装,提供了简单易用的API,我们可以利用这些封装好的 API 快速开发自己的网络程序。第二:Netty 在NIO 的基础上做了很多优化,比如零拷贝机制、高性能无锁队列、内存池等,因此性能会比NIO 更高。第三:Netty 可以支持多种通信协议,如Http、WebSocket 等,并且针对数据通信的拆包黏包问题,Netty 内置了拆包策略。原创 2023-06-24 23:45:16 · 208 阅读 · 0 评论 -
面试题篇-11-Mybatis相关面试题
为了避免每次都去查数据库,Mybatis 把查询出来的数据保存到SqlSession 的本地缓存中,后续的SQL 如果命中缓存,就可以直接从本地缓存读取了。那么一级缓存就无法实现了,因此在 Mybatis 里面引入了二级缓存,就是当多个用户。最大的区别在于,前者是动态参数,后者是占位符, 动态参数无法防止 SQL注入的问题,所以在实际应用中,应该尽可能的使用#号占位符。首先,Mybatis 提供到的#号占位符和$号占位符,都是实现动态SQL 的一种方式,通过这两种方式把参数传递到 XML 之后,原创 2023-06-23 00:39:54 · 209 阅读 · 0 评论 -
面试题篇-10-Zookeeper相关面试题
zookeeper 采用了全局递增的事务 Id 来标识,所有的 proposal(提议)都在被提出的时候加上了 zxid,zxid 实际上是一个 64 位的数字,高 32 位是 epoch( 时期;当新产生 proposal 的时候,会依据数据库的两阶段过程,首先会向其他的 server 发出事务执行请求,如果超过半数的机器都能执行并且能够成功,那么就会开始执行。但是,Zookeeper 工作时,是有一个节点为Leader,其他则为Follower,Leader是通过内部的选举机制临时产生的。原创 2023-06-04 10:58:39 · 199 阅读 · 0 评论 -
面试题篇-09-RocketMQ相关面试题
零拷贝页缓存(PageCache)RocketMQ 采用顺序读写,期间借助 mmap,和页缓存 达到快的原因;页缓存的不确定性和 mmap 惰性加载(访问时缺页中断才会真正加载数据),用了文件预先分配和文件预热即每页写入一个0字节,然后再调用mlock 和 madvise(MADV_WILLNEED)原创 2023-06-03 21:58:57 · 2106 阅读 · 0 评论 -
面试题篇-08-网络相关面试题
IO 多路复用机制,核心思想是让单个线程去监视多个连接,一旦某个连接就绪,也就是触发了读/写事件。就通知应用程序,去获取这个就绪的连接进行读写操作。也就是在应用程序里面可以使用单个线程同时处理多个客户端连接,在对系统资源消耗较少的情况下提升服务端的链接处理数量。原创 2023-06-03 11:53:33 · 70 阅读 · 0 评论 -
面试题篇-07-Rabbitmq相关面试题
一旦channel进入confirm模式,所有在该信道上面发布的消息都将会被指派一个唯一的ID(从1开始),一旦消息被投递到所有匹配的队列之后,rabbitMQ就会发送一个Ack给生产者(包含消息的唯一ID),这就使得生产者知道消息已经正确到达目的队列了.如果rabiitMQ没能处理该消息,则会发送一个Nack消息给你,你可以进行重试操作。2.再比如,你拿到这个消息做redis的set的操作,那就容易了,不用解决,因为你无论set几次结果都是一样的,set操作本来就算幂等操作。生产者把消息发布到交换器上;原创 2023-06-02 23:42:51 · 77 阅读 · 0 评论 -
面试题篇-06-Mysql相关面试题
幻读是指在同一个事务中,前后两次查询相同的范围时,得到的结果不一致(侧重于增删第一个事务里面我们执行了一个范围查询,这个时候满足条件的数据只有一条;第二个事务里面,它插入了一行数据,并且提交了;接着第一个事务再去查询的时候,得到的结果比第一查询的结果多出来了一条数据。所以,幻读会带来数据一致性问题。虽然InnoDB 中通过间隙锁的方式解决了幻读问题,但是加锁之后一定会影响到并发性能,因此,如果对性能要求较高的业务场景中,可以把隔离级别设置成RC这个级别中不存在间隙锁。原创 2023-06-02 21:33:57 · 320 阅读 · 0 评论 -
面试题篇-05-Redis相关面试题
想了解更多关于redis的文章,可以查看redis基础篇(入口),这里只是分享一些常见的redis面试题使用Zset和List做分布式限流,可以完美的解决动态滑动窗口,但是弊端是数据量大的时候,要额外的去做失效机制处理;使用incr做分布式限流,就不能真正意义上解决动态滑动时间窗口的限流,而是粗略的限流,但是站在业务角度,有时候是可以容忍这种粗略的限流发生,毕竟都是为了保护接口;String类型的值大于10kb;hash,list, set, zset 元素个数超过5000个;采用异步删除法。原创 2023-06-01 23:12:27 · 213 阅读 · 0 评论 -
面试题篇-04-Spring以及SpringBoot以及SpringCloud生态相关面试题
在微服务架构下,由于数据库和应用服务的拆分,导致原本一个事务单元中的多个 DML 操作,变成了跨进程或者跨数据库的多个事务单元的多个 DML 操作,而传统的数据库事务无法解决这类的问题,所以就引出了分布式事务的概念。分布式事务本质上要解决的就是跨网络节点的多个事务的数据一致性问题,业内常见的解决方法有两种a.强一致性就是所有的事务参与者要么全部成功,要么全部失败,全局事务协调者需要知道每个事务参与者的执行状态,再根据状态来决定数据的提交或者回滚!b.最终一致性。原创 2023-06-01 21:36:21 · 272 阅读 · 0 评论 -
面试题篇-02-Java-Juc相关面试题
ConcurrentHashMap 在JDK 1.7 中使用的数组 加 链表的结构,其中数组分为两类,大树组Segment 和 小数组 HashEntry,而加锁是通过给Segment 添加ReentrantLock 重入锁来保证线程安全的。ConcurrentHashMap 在JDK1.8 中使用的是数组 加 链表 加 红黑树的方式实现,它是通过CAS或者来保证线程安全的,并且缩小了锁的粒度,查询 性能也更高。JMM。原创 2023-06-01 21:33:40 · 466 阅读 · 0 评论 -
面试题篇-03-Java-Jvm相关面试题
Safe PointMinor GC后, 救助空间容纳不了剩余对象,将要放入老年带,老年带有碎片或者不能容纳这些对象,就产生了concurrent mode failure, 然后进行stop-the-world的Serial Old收集器。-XX:UseCMSCompactAtFullCollection -XX:CMSFullGCBeforeCompaction=5 或者 调大新生代或者救助空间。原创 2023-06-01 21:34:10 · 147 阅读 · 0 评论 -
面试题篇-01-Java基础相关面试题
本栏目收集了市面上一些常见的 Java基础相关面试题, 不涉及Juc和Jvm范畴.目的是为了辅助面试.快速了解核心首先是异常的本质受检异常和非受检异常,都是继承自 Throwable 这个类中,分别是 Error 和Exception, Error 是程序报错,系统收到无法处理的错误消息,它和程序本身无关。Excetpion 是指程序运行时抛出需要处理的异常信息如果不主动捕获,则会被jvm 处理。对受检异常和非受检异常的定义前面说过受检异常和非受检异常均派生自 Exception 这个类。原创 2023-06-01 21:30:41 · 226 阅读 · 0 评论