面试八股文系列
文章平均质量分 91
面试必备!内容包含:Java基础、Java框架、JVM、Git、Redis、消息队列、数据库、多线程、JMM、微服务等等。
程序员小白条
拿到过腾讯实习 offer,个人原创网站:xbt.xiaobaitiao.top 可提供相关简历和就业路线指导,分享一些面试必备的八股文知识!有面试需求的可以关注一下,一定会有所收获
内容包含:Java基础、Java框架、Git命令、JVM、多线程、消息队列、微服务、Linux、数据库、Redis缓存、算法等等。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
面试计算机网络八股文十问十答第十期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-06-17 14:29:43 · 1174 阅读 · 0 评论 -
面试计算机网络八股文十问十答第九期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-06-16 13:29:38 · 1204 阅读 · 0 评论 -
面试计算机网络八股文十问十答第八期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-06-11 18:43:28 · 868 阅读 · 0 评论 -
面试 Redis 八股文十问十答第五期
渐进式 rehash 是 Redis 在进行哈希表扩容或者收缩时采取的一种策略。当哈希表的负载因子超过一定阈值或者下降到一定程度时,Redis 会触发 rehash 操作,即对哈希表进行扩容或者收缩,以保证哈希表的性能和空间利用率。而渐进式 rehash 则是指 Redis 在进行 rehash 操作时,将整个操作分解成多个小步骤逐步进行,而不是一次性完成。原创 2024-06-09 18:34:44 · 980 阅读 · 0 评论 -
面试 Redis 八股文十问十答第四期
缓存击穿是指一个存在的key在缓存失效的时刻,同时有大量的并发请求访问这个key,这些请求会击穿缓存直接访问数据库,导致数据库压力过大。缓存穿透是指查询一个不存在的数据,由于缓存没有命中,导致请求直接访问数据库。这种情况通常是因为恶意攻击或者错误的业务逻辑导致的。缓存雪崩是指在某个时间段,大量的缓存数据同时失效,导致大量的请求直接访问数据库,造成数据库压力过大,甚至宕机的现象。这些问题在缓存系统设计中都是需要考虑和预防的。原创 2024-06-07 09:13:41 · 1255 阅读 · 0 评论 -
面试 Redis 八股文十问十答第三期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-06-06 07:52:49 · 1081 阅读 · 0 评论 -
面试 Redis 八股文十问十答第二期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-06-04 09:56:17 · 749 阅读 · 0 评论 -
面试数据库八股文十问十答第十期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-06-03 20:44:37 · 816 阅读 · 0 评论 -
面试数据库八股文十问十答第九期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-29 08:59:18 · 1132 阅读 · 0 评论 -
面试数据库八股文十问十答第八期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-28 10:51:42 · 1269 阅读 · 0 评论 -
面试数据库八股文十问十答第七期
MVCC(Multi-Version Concurrency Control,多版本并发控制)是一种用于实现数据库的并发控制的技术。在 MVCC 中,每个事务在读取数据时会看到一个固定版本的数据,并且事务之间的修改操作不会互相影响。MVCC 的主要思想是为每个事务创建一个可见性视图,该视图定义了事务可以看到哪些数据版本。当事务开始时,MVCC 会为该事务创建一个时间戳,并在事务执行过程中使用该时间戳来确定事务可以看到的数据版本。当事务提交或者回滚时,MVCC 会更新事务的时间戳,并清理过期的数据版本。原创 2024-05-27 09:27:46 · 610 阅读 · 0 评论 -
面试数据库八股文十问十答第六期
回表指的是当通过索引查询获取到了行的主键或聚簇索引,但是需要进一步到数据页中查找其他的列数据时的操作。如果一个查询不能完全通过索引满足,需要通过主键或聚簇索引再去数据页中查询数据,这个过程就称为回表。回表会增加额外的IO操作,影响查询性能,因此在设计索引时需要考虑覆盖索引等优化手段来避免回表操作。最左匹配原则是指,在多列索引中,如果查询条件涉及到了多个列,并且使用了联合索引,那么查询时只能使用索引中的最左边连续的列。也就是说,如果查询条件中使用了索引的前缀列,索引可以被用到;原创 2024-05-26 12:03:54 · 653 阅读 · 0 评论 -
面试 Java 框架八股文十问十答第七期
循环依赖指的是在对象之间形成了循环的依赖关系,导致无法完成对象的初始化。例如,类 A 依赖类 B,而类 B 又依赖类 A,这样就形成了循环依赖。在 Spring 容器中,循环依赖通常指的是单例 Bean 之间的循环依赖,因为 Spring 默认情况下会尽可能地创建单例 Bean,并且在创建 Bean 的过程中解决循环依赖是比较复杂的。Spring 通过提前暴露尚未完全初始化的 Bean 实例来解决循环依赖问题,但是如果循环依赖链过长或者存在复杂的构造函数依赖关系,可能会导致循环依赖无法解决而抛出异常。原创 2024-05-22 08:28:59 · 776 阅读 · 0 评论 -
面试 Java 框架八股文十问十答第六期
IOC(Inversion of Control,控制反转)是一种软件设计原则,它将对象的创建和管理权利从应用程序代码转移到了外部容器中。在传统的编程模型中,应用程序类通常会负责自己的依赖项的创建和管理,而在 IOC 容器中,这些依赖项的创建和管理由容器来完成。这意味着应用程序类不再负责创建它们所依赖的对象,而是通过外部容器来注入它们。DI(Dependency Injection,依赖注入)是一种实现 IOC 的方式,它是通过外部容器来注入一个对象的依赖关系,而不是在对象内部创建或查找依赖关系。原创 2024-05-21 13:25:50 · 962 阅读 · 0 评论 -
面试 JVM 八股文十问十答第九期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-20 10:09:25 · 700 阅读 · 0 评论 -
面试 JVM 八股文十问十答第八期
当CMS垃圾收集器发生concurrent mode failure时,它会触发一次Full GC以尝试解决老年代空间不足的问题。稳定性和可控性:在Java虚拟机中,Full GC通常会导致较长的停顿时间,因此采用单线程执行可以更好地控制和管理这个过程,避免出现并发问题或竞态条件。简化实现:使用单线程执行Full GC可以简化实现,减少并发情况下的复杂性。这样可以降低出错的可能性,并且更容易保证Full GC的正确性和稳定性。保证可达性分析的准确性。原创 2024-05-19 15:59:41 · 789 阅读 · 0 评论 -
面试 JVM 八股文十问十答第七期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-17 14:12:22 · 626 阅读 · 0 评论 -
面试 JVM 八股文十问十答第七期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-15 09:32:17 · 413 阅读 · 0 评论 -
面试 JVM 八股文十问十答第六期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-14 10:35:38 · 380 阅读 · 0 评论 -
面试 Java 并发编程八股文十问十答第十六期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-13 12:16:44 · 868 阅读 · 0 评论 -
面试 Java 并发编程八股文十问十答第十五期
在多线程编程中,当一个线程试图获取一个被其他线程持有的锁时,它可能会发生阻塞,等待锁被释放。在一些情况下,等待锁的时间很短,此时采用自旋等待可能更有效率。自旋等待是指线程在尝试获取锁时不会立即进入阻塞状态,而是会反复检查锁是否可用,这样可以减少线程从用户态到内核态的切换开销。自适应自旋是一种锁优化技术,它根据锁的历史获取情况动态地调整自旋等待的策略。如果锁的获取频率较低,那么自旋等待的时间可以适当延长,以减少线程阻塞和唤醒的开销;原创 2024-05-11 20:44:23 · 1138 阅读 · 0 评论 -
面试 Java 并发编程八股文十问十答第十四期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-10 10:24:33 · 982 阅读 · 0 评论 -
面试 Java 并发编程八股文十问十答第十二期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-09 19:31:05 · 672 阅读 · 0 评论 -
面试 Java 并发编程八股文十问十答第十二期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-08 09:09:19 · 1129 阅读 · 0 评论 -
面试 Java 基础八股文十问十答第三十一期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-07 18:47:41 · 1014 阅读 · 0 评论 -
面试 Java 基础八股文十问十答第三十期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-06 08:13:47 · 747 阅读 · 2 评论 -
面试 Java 基础八股文十问十答第二十九期
Java 的集合类是用于存储和操作对象的数据结构。它们提供了一种更加灵活、高效的方式来管理数据集合,相比传统的数组,集合类具有更多的功能和操作。Java 中常见的集合类包括 List、Set、Map 等,它们都位于java.util包中。允许存储重复元素,并且有序。常见的实现类有 ArrayList、LinkedList、Vector 等。不允许存储重复元素,通常用于存储不重复的对象集合。常见的实现类有 HashSet、LinkedHashSet、TreeSet 等。存储键值对,键是唯一的,值可以重复。原创 2024-05-05 18:23:35 · 1034 阅读 · 0 评论 -
面试 Java 基础八股文十问十答第二十八期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-05-04 18:28:36 · 1235 阅读 · 0 评论 -
面试 Java 基础八股文十问十答第二十七期
内部类是定义在其他类内部的类,可以访问外部类的成员变量和方法。内部类可以分为四种类型:成员内部类、局部内部类、匿名内部类和静态内部类。成员内部类:定义在外部类的成员位置,可以直接访问外部类的成员,常用于实现某个功能的辅助类或者某个类的辅助类。局部内部类:定义在方法内部的类,作用域仅限于该方法内部,常用于解决一些局部性的问题。匿名内部类:没有类名的内部类,通常用于创建临时性的、一次性的类实例。原创 2024-04-30 09:58:01 · 850 阅读 · 2 评论 -
面试 Java 基础八股文十问十答第二十六期
序列化是指将对象转换为字节序列的过程,以便将其保存到文件、数据库或者通过网络进行传输。在 Java 中,通过实现接口,可以将对象序列化为字节流,然后可以通过反序列化将字节流还原为对象。反序列化是指将字节序列转换为对象的过程,从而可以从文件、数据库或者网络中恢复对象。在 Java 中,通过读取字节流并使用类的方法,可以将字节流反序列化为对象。反序列化的对象与序列化之前的对象相同,包括其状态和数据。不可变类(Immutable Class)是指一旦创建一个对象后,该对象的状态(即属性值)将不能被修改。原创 2024-04-29 20:18:28 · 993 阅读 · 1 评论 -
面试 Python 基础八股文十问十答第七期
Tkinter是Python的标准图形用户界面(GUI)工具包,它提供了创建桌面应用程序的基本组件和功能。Tkinter是Python内置的库,因此不需要额外安装即可使用。Tkinter基于Tk GUI工具包,Tk是用于构建跨平台GUI应用程序的工具包,它最初是为Tcl编程语言设计的,但后来也被Python所采用。Tkinter提供了诸如按钮、标签、文本框、滚动条等常见的GUI组件,开发者可以使用这些组件构建用户友好的应用程序界面。原创 2024-04-26 08:27:03 · 1284 阅读 · 1 评论 -
面试 Python 基础八股文十问十答第七期
在Python中,连接(concatenation)是指将两个或多个字符串合并成一个新的字符串的过程。你可以使用运算符来连接字符串。print(s3) # 输出:Hello world除了使用运算符外,你还可以使用str.join()方法来连接字符串。这种方法更加高效,尤其是当你需要连接大量字符串时。print(s3) # 输出:Hello world在编程中,函数是一段可重复使用的代码块,用于执行特定任务或计算,并且可以接受输入参数和返回输出结果。原创 2024-04-25 21:22:53 · 909 阅读 · 1 评论 -
面试 Python 基础八股文十问十答第六期
在 Python 中,切片是一种用于从序列(如列表、元组、字符串等)中获取子序列的方法。start表示起始索引(包含在切片中)。stop表示结束索引(不包含在切片中)。step表示步长(可选参数,默认为1)。切片操作返回一个新的序列,包含原始序列中指定范围内的元素。切片可以用于列表、元组、字符串等任何序列类型。# 获取索引 1 到索引 3 的子列表(不包括索引 3)# 获取从索引 0 开始的奇数位置元素namedtuple是 Python 标准库中。原创 2024-04-24 08:29:40 · 791 阅读 · 1 评论 -
面试 Python 基础八股文十问十答第五期
相信看了本文后,对你的面试是有一定帮助的!关注专栏后就能收到持续更新!⭐。原创 2024-04-23 10:17:03 · 757 阅读 · 0 评论 -
面试 Python 基础八股文十问十答第四期
猴子补丁(Monkey Patching)是指在运行时动态修改类或模块的行为的一种技术。在 Python 中,由于其动态特性,可以在运行时修改已加载的类或模块的属性或方法,以实现特定的需求或修复 bug。猴子补丁常用于测试、调试或临时性修改代码,但过度使用可能导致代码难以理解和维护,因此应谨慎使用。在 Python 中,负索引是指从序列末尾开始计数的索引。通常,序列的第一个元素的索引是 0,而倒数第一个元素的索引是 -1,倒数第二个元素的索引是 -2,依此类推。原创 2024-04-22 08:29:36 · 687 阅读 · 0 评论 -
面试 Python 基础八股文十问十答第三期
Flask 是一个轻量级的 Python Web 应用框架,它由 Armin Ronacher 在 2010 年创建。Flask 是基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎构建的,它使用简单且易于学习的方式来构建 Web 应用程序。Flask 提供了 URL 路由、模板引擎、请求和响应对象等功能,同时也支持扩展,可以轻松地添加额外的功能,如表单验证、数据库集成等。原创 2024-04-21 18:39:06 · 1278 阅读 · 0 评论 -
面试 Python 基础八股文十问十答第二期
迭代器是一种对象,它能够逐个地访问集合中的元素而不暴露其内部的实现方式。迭代器对象通常通过调用iter()函数来创建,然后使用next()方法逐个访问元素,直到遍历完所有元素或发生 StopIteration 异常。生成器是一种特殊的迭代器,它可以在迭代过程中动态地生成值,而不需要在内存中保存完整的集合。生成器函数是使用关键字yield来定义的函数,每次调用生成器函数时,会返回一个迭代器对象,然后可以通过迭代器的next()方法来获取生成的值。原创 2024-04-20 21:12:36 · 1033 阅读 · 0 评论 -
面试 Python 基础八股文十问十答第一期
鸭子类型是动态类型语言中的一种多态方式,它关注的是对象的行为而不是对象的类型。鸭子类型的思想源自于“如果它走起路来像鸭子,叫起来也像鸭子,那么它就是鸭子”。在Python中,鸭子类型的概念表现为,一个对象的适用性不是由其类型确定,而是由其具备的方法和属性决定。例如,一个对象如果具有quack()和walk()方法,那么它就可以被视为鸭子,无论它是否是通过继承自某个鸭子类或者实现某个特定接口。原创 2024-04-18 08:33:16 · 1326 阅读 · 0 评论 -
面试 Java 基础八股文十问十答第二十五期
在 Java 中,静态方法和非静态方法有着不同的调用方式和作用域。静态方法属于类级别,可以直接通过类名调用,而非静态方法则属于对象级别,需要通过对象实例调用。在静态方法内部,无法直接访问非静态成员(例如非静态字段或者非静态方法),因为在静态方法调用时,并没有对象实例与之关联,而非静态成员属于对象的状态和行为,需要通过对象实例才能访问。如果在静态方法内部尝试调用非静态成员,编译器会报错,因为在静态方法内部无法确定要访问的对象实例。原创 2024-04-17 13:31:13 · 756 阅读 · 0 评论 -
面试 Java 基础八股文十问十答第二十四期
Java虚拟机(Java Virtual Machine,JVM)是Java程序运行的环境,它负责将Java字节码解释或编译成特定平台上的机器指令,并管理程序的内存、线程等资源。JVM实现了Java语言规范,是Java跨平台特性的关键。Java被称作“平台无关的编程语言”,主要是因为Java程序在编译时生成的是字节码(Bytecode),而不是特定平台上的机器码。这些字节码可以在任何支持Java虚拟机的平台上运行,而无需重新编译。原创 2024-04-13 10:30:32 · 763 阅读 · 0 评论
分享