月薪25k程序猿面试必备基本技能

279 阅读6分钟

领域驱动主要核心概念

www.cnblogs.com/rgqancy/p/1…

juejin.cn/post/684516…

Map

m.zhipin.com/mpa/html/ge… jdk1.7 扩容头插法 jdk1.8 做出了优化,直接插入列表尾部 在 jdk1.7 中,在多线程环境下,扩容时会造成环形链或数据丢失。 在 jdk1.8 中,在多线程环境下,会发生数据覆盖的情况。

线程

锁与CAS机制

blog.csdn.net/weixin_4390…

syncronize和lock底层原理?是哪一个层面的JVM还是JDK

www.cnblogs.com/aspirant/p/… synchronized是在软件层面依赖JVM,而j.u.c.Lock给出的答案是在硬件层面依赖特殊的CPU指令。 线程状态

线程池原理

www.cnblogs.com/lveyHang/p/…

image.png

image.png

image.png

线程状态

image.png

MySQL

Mysql数据库性能优化有哪些?

m.zhipin.com/mpa/html/ge…

MySQLsql优化原则

常见的简化规则如下: 1.不要有超过5个以上的表连接(JOIN) 2.考虑使用临时表或表变量存放中间结果。 3.少用子查询 4.视图嵌套不要过深,一般视图嵌套不要超过2个为宜。 5.连接的表越多,其编译的时间和连接的开销也越大,性能越不好控制。 6.最好是把连接拆开成较小的几个部分逐个顺序执行。 7.优先执行那些能够大量减少结果的连接。 8.拆分的好处不仅仅是减少SQL Server优化的时间,更使得SQL语句能够以你可以预测的方式和顺序执行

索引原理

zhuanlan.zhihu.com/p/27789389

MySQL为什么使用B+数

那么为什么mysql索引要用b+树原因如下: B+树能显著减少IO次数,提高效率 B+树的查询效率更加稳定,因为数据放在叶子节点 B+树能提高范围查询的效率,因为叶子节点指向下一个叶子节点

MyISAM和INNODB区别

一张表最多可以建多少个索引(16个)

dev.mysql.com/doc/refman/… innoDB: 最多创建1017列, 最多64个二级索引, 单个索引最多包含16列, 索引最大长度767字节(其实行格式为REDUNDANT,COMPACT最高为767字节,但行格式为DYNAMIC,COMPRESSED最高可达为3072字节), 行大小最大65536字节 mysiam: 最多4096列, 最多64个二级索引, 单个索引最多包含16列, 索引最大长度1000字节, 行大小最大65536字节

分库分表中间件原理对比

m.zhipin.com/mpa/html/ge…

Redis

为什么选择Redis

Redis为什么这么快(什么时候单线程)

Redis高可用

Redis集群

Redis持久化

RDB+AOF

缓存穿透、缓存击穿、缓存雪崩区别和解决方案

blog.csdn.net/kongtiao5/a…

基于redis的布隆过滤器

blog.csdn.net/qq_35072466…

数据删除淘汰策略、主从复制流程、哨兵模式、集群结构、企业级解决方案

blog.csdn.net/weixin_4519…

SpringCloud(微服务)

Hystrix实现限流

blog.csdn.net/qq_36031640…

Hystrix的服务熔断和服务降级

www.jianshu.com/p/01efebbfc…   服务雪崩:当A调用微服务B,B调C,和其他微服务,这是扇出,当扇出链路上某个微服务调用响应时间过长或者不可用,对微服务的A的调用就会占用越来越多的系统资源,导致系统崩溃,所谓的雪崩效应   服务熔断:一般是某个服务异常引起的,相当于“保险丝”,当某个异常条件被触发,直接熔断整个服务,不是等到此服务超时   服务降级:降级一般是从整体负荷考虑,当某个服务熔断之后,服务器将不再被调用,客户端可自己准备一个本地的fallback回调,返回一个缺省值,虽然服务水平下降,当能用,比直接挂掉要强

使用RocketMQ的事务消息机制优化事务的处理逻辑

blog.csdn.net/fenglibing/…

微服务网关Zuul和Gateway的区别

blog.csdn.net/qq_18671415…

注册中心的作用&原理

原文链接:blog.csdn.net/weixin_3968… 一、概念 注册中心这一概念在面向服务设计的架构中起着举足轻重的作用,不论是在SOA架构还是微服务架构之中,注册中心的作用一句话概括就是存放和调度服务,实现服务和注册中心,服务和服务之间的相互通信。注册中心可以说是微服务架构中的”通讯录“,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址,进行调用。 二、注册中心原理 主要包括三个角色:服务提供者、服务消费者、注册中心。运行原理差不多是:1.、微服务在启动时,将自己的网络地址等信息注册到注册中心,注册中心存储这些数据。2、服务消费者从注册中心查询服务提供者的地址,并通过该地址调用服务提供者的接口。3、各个微服务与注册中心使用一定机制(例如心跳)通信。如果注册中心与某微服务长时间无法通信,就会注销该实例。4、微服务网络地址发送变化(例如实例增加或IP变动等)时,会重新注册到注册中心。这样,服务消费者就无需人工修改提供者的网络地址了。 三、注册中心作用 服务注册后,如何被及时发现;服务宕机后,如何及时下线;服务如何有效的水平扩展;服务发现时,如何进行路由;服务异常时,如何进行降级;注册中心如何实现自身的高可用等问题,目前市场上得到注册中心基本实现了在:服务端(注册中心服务):提供服务注册接口、提供服务下线接口、管理服务地址列表、服务下线通知。客户端(注册中心接入端):获取服务列表信息、服务负载均衡选择、服务心跳发送等功能。具体得到实现可自己看源码或其他文章。

有了 HTTP 协议,为何还要 RPC 协议,二者有什么区别?

www.shangmayuan.com/a/be3f4e9e2…

Spring Cloud Alibaba 分布式事务中间件Seata

blog.csdn.net/xia296/arti…

Dubbo的扩展点

blog.csdn.net/m0_37135421…

Dubbo服务暴露原理

blog.csdn.net/wangchengmi…

image.png

Spring

Spring的优点(AOP、IOC)

Spring的IOC原理(反射)

www.cnblogs.com/superjt/p/4…

MQ

RabbitMQ消费消息的两种模式:推和拉

www.cnblogs.com/hzcya1995/p…

Linux常用命令

ps 查看当前终端下的命令

top 查看所有的进程(是动态的,查看cpu使用率)

JVM

JVM内存模型和使用

mp.weixin.qq.com/s/lryDeCfia…

JVM调优基本步骤

java线上内存溢出问题排查步骤

blog.csdn.net/u010430495/…

内存溢出排查过程和工具

www.debug8.com/java/t_5568…

java内存溢出排查jstack_Java命令行监控工(jmap,jstack,jstat,jinfo,jps)

blog.csdn.net/weixin_3321…

QPS、TPS、并发用户数、吞吐量关系

juejin.cn/post/684490…

int和Integer的区别

www.cnblogs.com/guodongdidi…

Elasticsearch的使用场景

www.jianshu.com/p/2f264754c…