![](https://img-blog.csdnimg.cn/direct/7badc72a52a44556b74bab105ee93f78.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
面试突击
文章平均质量分 83
888888
留不住的人
PHP是世界上最美的语言
展开
-
抽象类(abstract class)和接口(interface)有什么区 别
抽象类是自下而上的抽象过程,抽象类提供了通用实现,是对某一类事物的抽象。我们在写实现类的时候,发现某些实现类具有几乎相同的实现,因此我们将这些相同的实现抽取出来成为抽象类,然后如果有一些差异点,则可以提供抽象方法来支持自定义实现。接口是自上而下的抽象过程,接口规范了某些行为,是对某一行为的抽象。我需要这个行为,我就去实现某个接口,但是具体这个行为怎么实现,完全由自己决定。接口像干爹,可以给你指引方法,但是做成啥样得你自己努力实现。抽象类像叔伯,有一部分会给你,还能指导你做事的方法。原创 2024-02-13 00:17:21 · 366 阅读 · 0 评论 -
存储 MD5 的值应该用 VARCHAR 还是 CHAR
char 类型是固定长度的字符串,varchar 是可变长度字符串。而 MD5 是一个固定长度的字符,不管数据怎么修改,长度不变,这个点很符合 char类型。另外,由于是固定长度,所以在数据变更的时候,不需要去调整存储空间大小,在效率上会比 varchar 好。原创 2023-05-23 17:17:09 · 124 阅读 · 0 评论 -
static 和 final 的区别
static 方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而 static 方法是编译。static 方法跟类的任何实例都不相关,所以概念上不适用。原创 2023-05-22 14:08:33 · 45 阅读 · 0 评论 -
Spring源码面试题
Spring 是一个开源的应用程序框架,它起源于 Rod Johnson 在其著名的 Spring Framework 专著中提出的一个轻量级框架的观念。自从 2003 年发布以来,Spring Framework 在 Java 开发社区中变得越来越流行,并成为了多个企业级应用开发的首选框架之一。原创 2023-03-30 00:21:56 · 72 阅读 · 0 评论 -
微服务架构设计面试题
我认为你们在了解了整个微服务架构之后,需要能够明白,微服务架构重点在于架构二字,这个内容搞清楚了,其实任何的架构,任何的手段都是一个工具,如何去利用这些工具解决一些问题才是最重要的。架构的本质:用最简单的手段解决复杂的问题。系统整理是复杂的没错,然而80%(数字只是一个比喻,表示大多数)的用户和80%的场景都是简单的,架构的目的就是首先保证80%的简单性问题能够得到真正简单的处理,然后再构建复杂的专家级的应用去处理真正复杂的事情。系统复杂度增加的原因:原创 2023-03-30 00:18:12 · 277 阅读 · 0 评论 -
微服务面试题
EurekaRibbonFeignHystrixConfig等组件组成。NacosSentinelSeata等组件组成。Apollo 携程、SkyWalking 吴晟(shèng)国产开源的。原创 2023-03-22 23:44:24 · 203 阅读 · 0 评论 -
Redis面试题-3
缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,于是这个请求就可以随意访问数据库,这个就是缓存穿透,缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。造成缓存穿透的基本原因有两个。第一,自身业务代码或者数据出现问题,比如,我们数据库的 id 都是1开始自增上去的,如发起为id值为 -1 的数据或 id 为特别大不存在的数据。原创 2023-03-22 23:40:27 · 115 阅读 · 0 评论 -
Redis面试题-2
HyperLogLog基于概率论中伯努利试验并结合了极大似然估算方法,并做了分桶优化。实际上目前还没有发现更好的在大数据场景中准确计算基数的高效算法,因此在不追求绝对准确的情况下,使用概率算法算是一个不错的解决方案。概率算法不直接存储数据集合本身,通过一定的概率统计方法预估值,这种方法可以大大节省内存,同时保证误差控制在一定范围内。目前用于基数计数的概率算法包括:举个例子来理解HyperLogLog算法,有一天李瑾老师和马老师玩打赌的游戏。原创 2023-03-22 23:36:55 · 129 阅读 · 0 评论 -
Redis面试题-1
Redis 中的事务是一组命令的集合,是 Redis 的最小执行单位。它可以保证一次执行多个命令,每个事务是一个单独的隔离操作,事务中的所有命令都会序列化、按顺序地执行。服务端在执行事务的过程中,不会被其他客户端发送来的命令请求打断。它的原理是先将属于一个事务的命令发送给 Redis,然后依次执行这些命令。Redis 事务的注意点有哪些?需要注意的点有:Redis 事务是不支持回滚的,不像 MySQL 的事务一样,要么都执行要么都不执行;原创 2023-03-22 23:35:58 · 115 阅读 · 0 评论 -
并发编程面试题
单例模式中的懒汉机制中,就存在一个这样的问题。懒汉为了保证线程安全,一般会采用DCL的方式。但是单单用DCL,依然会有几率出现问题。线程可能会拿到初始化一半的对象去操作,极有可能出现NullPointException。(初始化对象三部,开辟空间,初始化内部属性,指针指向引用)在Java编译.java为.class时,会基于JIT做优化,将指令的顺序做调整,从而提升执行效率。在CPU层面,也会对一些执行进行重新排序,从而提升执行效率。这种指令的调整,在一些特殊的操作上,会导致出现问题。原创 2023-03-22 23:31:46 · 119 阅读 · 0 评论 -
JVM面试(三)
当我们进行young gc时,我们的gc roots除了常见的栈引用、静态变量、常量、锁对象、class对象这些常见的之外,如果老年代有对象引用了我们的新生代对象,那么老年代的对象也应该加入gc roots的范围中,但是如果每次进行young gc我们都需要扫描一次老年代的话,那我们进行垃圾回收的代价实在是太大了,因此我们引入了一种叫做记忆集的抽象数据结构来记录这种引用关系。记忆集是一种用于记录从非收集区域指向收集区域的指针集合的数据结构。原创 2023-03-22 23:28:08 · 83 阅读 · 0 评论 -
JVM面试(二)
Stop-The-World 简称 STW该回收的对象没有被回收不该回收的对象被回收了在STW状态下,所有的线程都是停止运行的 - >垃圾回收线程除外当STW发生时,出了GC所需要的线程,其他的线程都将停止工作,中断了的线程知道GC线程结束才会继续任务STW是不可避免的,垃圾回收算法的执行一定会出现STW,而我们最好的解决办法就是减少停顿的时间GC各种算法的优化重点就是为了减少STW,这也是JVM调优的重点。当我们进行young gc时,我们的。原创 2023-03-22 23:23:56 · 114 阅读 · 0 评论 -
JVM面试(一)
*那一个线程执行的状态如何维护?这样的关系怎么维护呢?**使用G1收集器时,Java堆的内存布局与就与其他收集器有很大差别,它将整个Java堆划分为多个大小相等的独立区域(Region),虽然还保留有新生代和老年代的概念,但新生代和老年代不再是物理隔离的了,它们都是一部分Region(不需要连续)的集合。(1)虚拟机栈是一个线程执行的区域,保存着一个线程中方法的调用状态。换句话说,一个Java线程的运行状态,由一个虚拟机栈来保存,所以虚拟机栈肯定是线程私有的,独有的,随着线程的创建而创建。原创 2023-03-22 23:19:42 · 213 阅读 · 0 评论 -
Java基础面试题(三)
为了更好地促进互联网的研究和发展,国际标准化组织ISO在1985 年指定了网络互联模型。OSI 参考模型(Open System Interconnect ReferenceModel),具有 7 层结构应用层:各种应用程序协议,比如HTTP、HTTPS、FTP、SOCKS安全套接字协议、DNS域名系统、GDP网关发现协议等等。表示层:加密解密、转换翻译、压缩解压缩,比如LPP轻量级表示协议。会话层。原创 2023-03-09 13:42:34 · 255 阅读 · 0 评论 -
Java基础面试题(二)
start方法是我们开启一个新的线程的方法,但是并不是直接开启,而是告诉CPU我已经准备好了,快点运行我,这是启动一个线程的唯一入口。void start() // 导致此线程开始执行;Java虚拟机调用此线程的run方法。生命周期:对象从创建到销毁的全过程线程的生命周期:线程对象(Thread)从开始到销毁的全过程创建 Thread对象就绪状态 执行start方法后线程进入可运行的状态运行状态 CPU运行阻塞状态 运行过程中被中断(等待阻塞,对象锁阻塞,其他阻塞)原创 2023-03-09 13:36:36 · 236 阅读 · 0 评论 -
Java基础面试题(一)
基本类型大小(字节)默认值封装类byte1(byte)0Byteshort2(short)0Shortint40Integerlong80lLongfloat40.0fFloatdouble80.0dDoublebooleanfalseBooleanchar2Characterboolean: int 4个字节int是基本数据类型,Integer是int的封装类,是引用类型。原创 2023-03-09 13:35:29 · 409 阅读 · 0 评论