平时收集的java八股文,只收集高频和经典,无偿分享

简介: 平时收集的java八股文,只收集高频和经典,无偿分享

前言:

技术世界日新月异,Java 作为一门卓越的编程语言,不仅融合了面向对象的经典思想,还不断演进,引入了许多令人振奋的新特性。本篇博客将带领读者深入探讨 Java 领域的一些重要概念和技术,涉及面向对象特征、集合类的选择、并发编程、JDK1.8 新特性等多个方面。

  1. 面向对象特征
    在面向对象编程中,我们常常听说封装、继承和多态这三大特征。它们分别是:

封装: 封装是将对象的状态和行为封装在一个类中,防止外部直接访问对象内部的实现细节。

继承: 继承是一种代码复用机制,子类可以继承父类的属性和方法,并且可以通过重写方法来修改或扩展父类的行为。

多态: 多态性允许一个对象在不同的情境下具有不同的行为。通过继承和接口实现,我们可以实现多态性,提高代码的灵活性和可扩展性。

2. ArrayList与LinkedList

ArrayList:数组,LinkedList:双向链表

3. 高并发的集合有哪些问题

Collections中的synchronizedList(),synchronizedMap()方法等做安全的使用

  1. JDK1.8新特性
    JDK 1.8 引入了许多新特性,包括:

接口默认方法: 允许在接口中定义默认方法的实现。

Lambda 表达式: 简化代码编写,提供更紧凑的语法。

新的类: 引入了新的类如 LocalDate,提供更丰富的日期和时间处理功能。

多层注解: 允许在一个元素上使用多个注解,增加了灵活性。

5. java的接口和抽象类

语法:

语义:抽象类->有概念的(动物,交通工具…);接口->特征(一类事物具有一定特征)

6. 对象在内存中存储分布

●markwork-》64系统 / 8 = 8字节 里面有锁信息

●class pointer 4字节

●Object o = new Object();用了16字节(8+4+4)注:(不到8的倍数,加4补齐)

7. 对象怎么定位?

直接定位和间接定位

8. DCL(Dobule check Lock)单例需不需要volatile

需要,单例的双重检测锁可能会出现指令重排,volatile能保障线程之间可见性,并且禁止指令从排序。

9. mysql的隔离级别

读取提交内容,读取不提交内容,可重复度,可串行化

10. Mysql的复制原理

  1. 聚簇索引(innodb)和非聚簇索引(myisam)聚簇索引
  2. Springboot 自动装配原理
    ●自动装配就是通过 @EnableAutoConfiguration 注解找到Spring提供的自动配置总文件 spring.factories中的 所有自动装配类并对其进行加载,这个文件是一组组的 key=value的形式,包含了key为EnableAutoConfiguration的全类名,value是一个xxxxAutoConfiguration类名的 列表,以逗号分隔;
    ●这也是JavaConfig形式的IOC容器配置类,在每个value所指的类中,都有 @ConditionalOnxxxx 这种类型的注解,会根据这种类型的注解决定判断条件(在该注解后面的圆括号内)是否满足,条件满足才进行自动装配;
    ●每个自动配置类上都有一个 @Configuration和该类的每个方法上面都有一个 @Bean,@Configuration可理解为用spring的时候beans.xml里面的beans标签,作用是告诉SpringBoot这是一个配置类;@Bean可理解为用spring的时候beans.xml里面的bean标签,@Bean标签的作用是给容器中添加组件,以@Bean所标记的方法的方法名作为组件的id名,返回类型就是组件类型,方法返回的值就是组件在容器中的实例;
    ●每个自动配置类上面又都有 @EnableConfigurationProperties注解,通过这个注解将封装好的bean导入到Spring的IOC容器中;
    ●在 @EnableConfigurationProperties 注解注入的bean中,每个bean 都有 @ConfigurationProperties 注解,该注解负责将配置文件中的属性绑定到对应的xxxxProperties配置实体类上封装为一个具体的bean;
    ●全局配置(application.properties)文件中的属性,也是通过 @ConfigurationProperties 注解指定的 前缀prefix绑定到对应的 xxxxPropertie 配置实体类上封装为一个bean,然后再通过 @EnableConfigurationProperties注解导入到Spring的IOC容器中。在全局配置文件中,如果需要到的属性没有进行配置,则使用默认的(自动装配的)组件中的属性,这也是约定大于配置的体现(SpringBoot都进行了约定(配置好了),开发人员能配置得更少,更直接地开发项目,写业务逻辑代码),待完成总配置文件的属性绑定和注入之后,SpringBoot完成最终的自动装配。
  3. spring的Bean的生命周期
    bean实例化,属性注入,
    调用BeanNameAware的setBeanName方法,
    调用BeanFactoryAware的setBeanFactory方法,
    调用ApplicationContextAware的setApplicationContext方法,
    调用BeanPostProcessor的postProcessorBeforeInitialization方法,
    调用自定义初始化方法,
    调用InitializingBean的afterPropertiesSet方法,
    调用BeanPostProcessor的postProcessorAfterInitialization方法,
    调用DisposableBean的destroy,
    调用自定义销毁方法
  4. JVM 内存模型

Java 的世界博大而精深,不断学习和探索,将会让我们在编程的路上走得更远。感谢你的阅读,如果有任何问题或建议,欢迎留言讨论。让我们共同迎接 Java 技术的未来,不断挑战更高的技术高峰!

相关文章
|
6月前
|
Java 调度 Windows
JAVA面试八股文之多线程基础知识
JAVA面试八股文之多线程基础知识
|
消息中间件 人工智能 Java
面试了一个前阿里P7,Java八股文与架构核心知识简直背得炉火纯青
前几天,跟个老朋友吃饭,他最近想跳槽去大厂,觉得压力很大,问我能不能分享些所谓的经验套路。 每次有这类请求,都觉得有些有趣,不知道你发现没有大家身边真的有很多人不知道怎么面试,也不知道怎么准备面试,哪怕是一些工龄比较长的“老开发”: 有的人明知道有些问题肯定会被问,面试前还不好好准备,结果要么回答得模棱两可,要么答非所问; 有的人则是不知道怎么包装自己的项目经历,结果明明还不错的项目却看上去平平无奇,过后就被面试官忘了; 更有甚者,简历写得花里胡哨,结果一问三不知,简历和经历完全对不上。
191 0
|
3月前
|
NoSQL Java 数据库
2022年整理最详细的java面试题、掌握这一套八股文、面试基础不成问题[吐血整理、纯手撸]
这篇文章是一份详尽的Java面试题总结,涵盖了从面向对象基础到分布式系统设计的多个知识点,适合用来准备Java技术面试。
2022年整理最详细的java面试题、掌握这一套八股文、面试基础不成问题[吐血整理、纯手撸]
|
设计模式 算法 NoSQL
阿里巴巴官方上线!号称国内Java八股文天花板(终极版)首次开源
金九银十已经过半了,但还是有很多Java程序员没有找到工作或者成功跳槽,跳槽成功的也只是从一个坑中,跳入另一个坑中……
|
4月前
|
存储 缓存 前端开发
Java八股文面试之多线程篇
Java八股文面试之多线程篇
115 0
Java八股文面试之多线程篇
|
6月前
|
Java
Java面试挂在线程创建后续,不要再被八股文误导了!创建线程的方式只有1种
Java面试挂在线程创建后续,不要再被八股文误导了!创建线程的方式只有1种
49 1
|
6月前
|
存储 缓存 Oracle
Java线程池,白话文vs八股文,原来是这么回事!
一、线程池原理 1、白话文篇 1.1、正式员工(corePoolSize) 正式员工:这些是公司最稳定和最可靠的长期员工,他们一直在工作,不会被解雇或者辞职。他们负责处理公司的核心业务,比如生产、销售、财务等。在Java线程池中,正式员工对应于核心线程(corePoolSize),这些线程会一直存在于线程池中。他们负责执行线程池中的任务,如果没有任务,他们会等待新的任务到来。 1.2、所有员工(maximumPoolSize) 所有员工:这些是公司所有的员工,包括正式员工和外包员工。他们共同组成了公司的团队,协作完成公司的各种业务。在Java线程池中,所有员工对应于所有线程(maxim
|
6月前
|
消息中间件 Dubbo Java
24年国内头条最牛的Java面试八股文1000集,不接受反驳!
年后这个时间段, 找工作面试不要停!! 很多朋友据我了解,技术水平和工作经验都很不错,但是面试频频败北。 大家复盘下来发现问题不严重,但是很普遍,10个人里面8个都存在,那就是面试前不做准备。 技巧和避坑先不论,面试题型就不熟悉,没有系统过下大厂真题和必问项目,真正对线上面试官时被打的措手不及。 想要从容应对,就要提前建立把握和自信,这不但来自自身的技术能力水平,更来源于对面试时将要发生的各种情况有预判,做到心中有数。 这里整理了一套跳槽涨薪大厂Java知识点解析及面试题解析,涵盖20个技术栈的大厂面试题及详解文档,各大厂技术重点、面试难点、进阶要点,帮助大家“临阵磨枪”,如有需要的
|
6月前
|
消息中间件 人工智能 Java
面试了一个前阿里P7,Java八股文与架构核心知识简直背得炉火纯青
前几天,跟个老朋友吃饭,他最近想跳槽去大厂,觉得压力很大,问我能不能分享些所谓的经验套路。 每次有这类请求,都觉得有些有趣,不知道你发现没有大家身边真的有很多人不知道怎么面试,也不知道怎么准备面试,哪怕是一些工龄比较长的“老开发”: 有的人明知道有些问题肯定会被问,面试前还不好好准备,结果要么回答得模棱两可,要么答非所问; 有的人则是不知道怎么包装自己的项目经历,结果明明还不错的项目却看上去平平无奇,过后就被面试官忘了; 更有甚者,简历写得花里胡哨,结果一问三不知,简历和经历完全对不上。
|
11月前
|
存储 设计模式 Java
八股文-如何理解Java中的多态
多态是面向对象编程的一个重要概念,它允许一个对象以不同的形式表现。也就是说,在父类中定义的属性和方法,在子类继承后,可以有不同的数据类型或表现出不同的行为。这可以使得同一个属性或方法,在父类及其各个子类中,可能会有不同的表现或含义。主要包括两种类型:编译时多态(静态多态)和运行时多态(动态多态)。
127 1
八股文-如何理解Java中的多态