猿来如此

猿来如此

【面试题119】看完这篇,再也不怕面试被问HashMap了~

总所周知 HashMap 是面试中经常问到的一个知识点,也是判断一个候选人基础是否扎实的标准之一,因为通过 HashMap 可以引出很多知识点,比如数据结构(数组、链表、红黑树)、equals 和 hashcode 方法。 除此之外还可以引出线程安全的问题,HashMap 是我在初学阶段学到的设计的

【面试题118】IO多路复用中select、poll、epoll之间的区别

(1)select==>时间复杂度O(n) 它仅仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),我们只能无差别轮询所有流,找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。 (

【面试题117】你说使用过ZooKeeper,那来说说他的基本原理吧

ZooKeeper简介 ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。 ZooKeeper设计目的 最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要

【面试题116】消息队列面试连环炮

目录 项目里怎么样使用 MQ 的? 为什么要使用消息队列? 消息队列有什么优点和缺点? kafka,activemq,rabbitmq,rocketmq 都有什么去呗? 如何保证消息队列高可用? 如何保证消息不被重复消费? 如何保证消息的可靠性传输? 如何保证消息的顺序性? 写一个消息队列架构设计?

【面试题115】举例说明消息队列应用场景及ActiveMQ、RocketMQ、Kafka等的对比

在之前的业务中,使用了Kafka和RabbitMQ两种消息队列,这篇文章来做一个总结。 消息队列中间件是分布式系统中重要的组件,主要实现异步消息,应用解耦,流量削峰及消息通讯等功能。 下面举例说明在实际应用中消息队列是如何使用的。 消息队列应用场景 1、异步处理 以用户注册,并且需要注册邮件和短信为

【面试题114】谈谈微服务的数据库设计思路吧

单独的数据库 微服务设计的一个关键是数据库设计,基本原则是每个服务都有自己单独的数据库,而且只有微服务本身可以访问这个数据库。它是基于下面三个原因。 优化服务接口:微服务之间的接口越小越好,最好只有服务调用接口(RPC或消息),没有其他接口。如果微服务不能独享自己的数据库,那么数据库也变成了接口的一

【面试题113】一文搞定那些难缠的并发面试题

1、Object 的 wait()和notify() 方法 下图为线程状态的图: Object 对象中的 wait()和notify()是用来实现实现等待 / 通知模式。其中等待状态和阻塞状态是不同的。等待状态的线程可以通过notify() 方法唤醒并继续执行,而阻塞状态的线程则是等待获取新的锁。

【面试题112】谈谈几个SpringCloud常见面试题及答案

全文目录 什么是微服务? 微服务之间如何独立通讯的? SpringCloud 和 Dubbo 有哪些区别? SpringBoot 和 SpringCloud 之间关系? 什么是熔断?什么是服务降级? 微服务的优缺点是什么?说下你在项目中碰到的坑。 eureka和zookeeper都可以提供服务注册与

【面试题111】什么是熔断?什么是服务降级?

服务熔断 服务熔断的作用类似于我们家用的保险丝,当某服务出现不可用或响应超时的情况时,为了防止整个系统出现雪崩,暂时停止对该服务的调用。 服务降级 服务降级是从整个系统的负荷情

【面试题110】谈谈什么是微服务?

注:本文以面试应答目的为主,深入学习请自行查阅其他资料,后续会汇总一些微服务相关面试题 什么是微服务 微服务架构的系统是一个分布式的系统,按业务进行划分为独立的服务单元,解决单体系统的不足,同时也满足越来越复杂的业务需求。 一.单体架构 1.1什么是单体架构 在软件设计的时候经常提到和使用经典的3层

【面试题109】谈谈在项目中,如何应对高并发流量

前言 应对大流量的一些思路 限流的常用方式 限流神器:Guava RateLimiter 分布式场景下的限流 前言 在实际项目中,曾经遭遇过线上5W+QPS的峰值,也在压测状态下经历过10W+QPS的大流量请求,本篇博客的话题主要就是自己对高并发流量控制的一点思考。 应对大流量的一些思路 “

【面试题108】你真的清楚 i = i++和 i = ++i 的区别吗?

写在前面:前些天看完了JVM的内存结构,自以为自己是懂了,心里想想不就是分线程共享和线程私有嘛,然后又怎么怎么分怎么怎么的嘛… 直到遇到了这道题目。说句实话,曾经自己做这种运算题目,完全是靠脑子空想,然后拿上笔颤抖的写下一个自己都不知道正不正确的答案。不过过了今天,我终于能确定它的答案了。 为此,我

【面试题107】熟悉JVM吗?为什么新生代内存需要有两个Survivor区?

1 为什么要有Survivor区 先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Minor

【面试题106】MySQL索引优缺点、何时需要/不需要创建索引、索引及sql语句的优化

一、什么是索引? 索引是对数据库表中的一列或多列值进行排序的一种结构,使用索引可以快速访问数据库表中的特定信息。 二、索引的作用? 索引相当于图书上的目录,可以根据目录上的页码快速找

【面试题105】TCP协议面试10连问,总会用得到,建议收藏~

001. 能不能说一说 TCP 和 UDP 的区别? 首先概括一下基本的区别: TCP是一个面向连接的、可靠的、基于字节流的传输层协议。 而UDP是一个面向无连接的传输层协议。(就这么简单,其它TCP的特性也就没有了)。 具体来分析,和 UDP 相比,TCP 有三大核心特性: 面向连接。所谓的连接,

【面试题104】中高级开发,面试不会点儿 Docker 真的不行!

注:近年来,Docker越来越火,毫无疑问的会成为未来的趋势。同样的越来越多的公司重视Docker,不学习Docker,出去都不敢说自己热爱技术~。我司招人的话,对于中级以上,基本的Docker是必须要了解的,否则基本不怎么考虑。对于初级,更侧重基础和编码的能力,但是会点儿Docker绝对是加分项。

【面试题103】四连问:API 接口应该如何设计?如何保证安全?如何签名?如何防重?

在实际的业务中,难免会跟第三方系统进行数据的交互与传递,那么如何保证数据在传输过程中的安全呢(防窃取)?除了https的协议之外,能不能加上通用的一套算法以及规范来保证传输的安全性呢? 下面我们就来讨论下常用的一些API设计的安全方法,可能不一定是最好的,有更牛逼的实现方式,但是这篇是我自己的经验分

【面试题102】为什么选择B+树作为数据库索引结构?谈谈你的理解

背景 首先,来谈谈B树。为什么要使用B树?我们需要明白以下两个事实: 【事实1】 不同容量的存储器,访问速度差异悬殊。以磁盘和内存为例,访问磁盘的时间大概是ms级的,访问内存的时间大概是ns级的。有个形象的比喻,若一次内存访问需要1秒,则一次外存访问需要1天。所以,现在的存储系统,都是分级组织的。