Java八股文(斩获 Offer 的面试宝典)

文章目录

    • 一、Java基础篇
      • 1.接口和抽象类的区别
      • 2.重载和重写的区别
      • 3.==和equals的区别
      • 4.异常处理机制
      • 5.HashMap原理
      • 6.想要线程安全的HashMap怎么办?
      • 7.ConcurrentHashMap原如何保证的线程安全?
      • 8.HashTable与HashMap的区别
      • 9.ArrayList和LinkedList的区别
      • 10.如何保证ArrayList的线程安全?
      • 11.String、StringBuffer、StringBuilder的区别
      • 12.hashCode和equals
      • 13.面向对象和面向过程的区别
      • 14.深拷贝和浅拷贝
      • 15.多态的作用
      • 16.什么是反射?
      • 17.Java创建对象得五种方式?
    • 二.Java多线程篇
      • 1.进程和线程的区别,进程间如何通信
      • 2.什么是线程上下文切换
      • 3.什么是死锁
      • 4.死锁的必要条件
      • 5.Synchrpnized和lock的区别
      • 6.什么是AQS锁?
      • 7.为什么AQS使用的双向链表?
      • 8.有哪些常见的AQS锁
      • 9.sleep()和wait()的区别
      • 10.yield()和join()区别
      • 11.线程池七大参数
      • 12.Java内存模型
      • 13.保证并发安全的三大特性?
      • 14.volatile
      • 15.线程使用方式
      • 16.ThreadLocal原理
      • 17.什么是CAS锁
      • 18.Synchronized锁原理和优化
      • 19.如何根据 CPU 核心数设计线程池线程数量
      • 20.AtomicInteger的使用场景
    • 三.JVM篇
      • 1.JVM运行时数据区(内存结构)
      • 2.什么情况下会内存溢出?
      • 3.JVM有哪些垃圾回收算法?
      • 4.GC如何判断对象可以被回收?
      • 5.典型垃圾回收器
      • 6.类加载器和双亲委派机制
      • 7.JVM中有哪些引用?
      • 8.类加载过程
      • 9.JVM类初始化顺序
      • 10..对象的创建过程
      • 11.对象头中有哪些信息
      • 12.JVM内存参数
      • 13.GC的回收机制和原理
    • 四.Mysql篇
      • 1.MyIsAm和InnoDB的区别
      • 2.mysql事务特性
      • 3.事务靠什么保证
      • 4.事务的隔离级别
      • 5.什么是快照读和当前读
      • 6.MVCC是什么
      • 7.MySQL有哪些索引
      • 8.聚簇索引和非聚簇索引的区别
      • 9.MySQL如何做慢SQL优化
      • 10.为什么要用内连接而不用外连接?
      • 11.MySQL整个查询的过程
      • 12.执行计划中有哪些字段?
      • 13.哪些情况索引会失效
      • 14.B和B+数的区别,为什么使用B+数
      • 15.MySQL有哪些锁
      • 16.Mysql内连接、左连接、右连接的区别
      • 17.sql执行顺序
      • 18.如何设计数据库?
      • 19.where和having的区别?
      • 20.三大范式
      • 21.char和varchar的区别
      • 22.InnoDB 什么情况下会产生死锁
      • 23.MySQL 删除自增 id,随后重启 MySQL 服务,再插入数据,自增 id 会从几开始?
      • 24.MySQL插入百万级的数据如何优化?
    • 五.常用开发框架系列
      • 1.什么是Spring?
      • 2.IOC是什么?
      • 3.AOP是什么?
      • 4.如何定义一个全局异常处理类?
      • 5.如何使用aop自定义日志?
      • 6.循环依赖是什么,怎么解决的?
      • 7.Bean 的作用域
      • 8.Bean 生命周期
      • 9.Spring 事务原理?
      • 10.spring事务失效场景
      • 11.spring事务的隔离级别
      • 12.spring事务的传播行为
      • 13.Spring IoC
      • 12.spring用了哪些设计模式
      • 14.SpringMV工作原理
      • 15.springboot自动配置原理
      • 16.springboot常用注解
      • 17.spring的bean是线程安全的吗?
      • 18.springcloud主要解决什么问题?
      • 19.CAP理论
      • 20.为什么不能同时保证一致性和可用性呢?
      • 21.熔断限流的理解?
      • 22.常用限流算法
    • 六.Redis系列
      • 1.redis为什么快?
      • 2.redis持久化机制
      • 3.Redis如何实现key的过期删除?
      • 4.Redis数据类型
      • 5.Redis缓存穿透如何解决?
      • 6.Redis如何解决缓存击穿?
      • 7.Redis如何解决缓存雪崩?
      • 8.Redis分布式锁的实现原理
      • 9.Redis集群方案
      • 10.Redis集群主从同步原理
      • 11.Redis缓存一致性解决方案
      • 12.Redis内存淘汰策略
    • 七.计算机网络系列
      • 1.TCP/IP模型
      • 2.浏览器输入地址后做了什么?
      • 3.TCP三次握手
      • 4.为什么TCP不能两次握手
      • 5.TCP四次挥手
      • 6.为什么要进入时间等待状态?
      • 7.TCP 滑动窗口
      • 8.TCP拥塞控制
      • 9.TCP超时重传
      • 10.TCP可靠传输的实现
      • 11.TCP报头有哪些信息
      • 12.状态码
      • 13.http与https的区别
      • 14.socket通信流程
    • 八.linux系列
      • 1.linux常用命令
      • 2.linux的io模型
      • 3.io模型:
      • 4.IO多路复用详解
      • 5.epoll的LT和ET模式
    • 九.场景题
      • 1.Java如何实现统计在线人数的功能?
      • 2.电商网站可以分成哪些模块(或订单模块要完成哪些功能)?
    • 十.其他(RabitMQ、数据结构与算法、nginx、git、jwt登录等...)
      • 1.RabbitMQ如何保证消息不丢失?
      • 2.RabbitMQ如何保证消费顺序
      • 3.设计模式六大原则
      • 4.设计模式分类
      • 5.排序算法的时间复杂度
      • 6.大量数据排名,采用什么数据结构
      • 7.二叉树和堆之间联系或区别
      • 8.平衡二叉树不平衡如何调整?
      • 9.hash表冲突的解决方法
      • 10.cookie和session的联系
      • 11.Nginx反向代理是什么,负载均衡算法有哪些?
    • 十一.秒杀项目相关问题:
      • 1.项目流程
      • 2.提升qps的操作
    • 微学院相关问题
      • 1.如何用springSecurity做的认证授权?
      • 2.前后端联调经常遇到的问题:
    • 实习中供应链项目的收获
      • 1.熟悉了代码开发规范

一、Java基础篇

1.接口和抽象类的区别

相似点:

(1)接口和抽象类都不能被实例化

(2)实现接口或继承抽象类的普通子类都必须实现这些抽象方法

不同点:

(1)抽象类可以包含普通方法和代码块,接口里只能包含抽象方法,静态方法和默认方法,

(2)抽象类可以有构造方法,而接口没有

(3)抽象类中的成员变量可以是各种类型的,接口的成员变量只能是 public static final 类型的,并且必须赋值

2.重载和重写的区别

重载发生在同一个类中,方法名相同、参数列表、返回类型、权限修饰符可以不同

重写发生在子类中,方法名相、参数列表、返回类型都相同,权限修饰符要大于父类方法,声明异常范围要小于父类方法,但是final和private修饰的方法不可重写

3.==和equals的区别

==比较基本类型,比较的是值,==比较引用类型,比较的是内存地址

equlas是Object类的方法,本质上与==一样,但是有些类重写了equals方法,比如String的equals被重写后,比较的是字符值,另外重写了equlas后,也必须重写ha

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/644163.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sulfo Cy3 hydrazide,磺化-Cy3-酰肼,可用于与生物分子的羰基衍生物偶联

您好,欢迎来到新研之家 文章关键词:Sulfo-Cyanine3-hydrazide,Sulfo Cy3 hydrazide,Sulfo Cyanine3 HZ,磺化 Cy3 酰肼,磺化-Cy3-酰肼 一、基本信息 产品简介:Sulfo-Cyanine3-hydrazide能够与…

【GitHub项目推荐--人脸识别】【转载】

01 带有移动应用程序的人脸识别库 OpenFace 作为用于人脸识别的通用库,能够实现瞬态和移动人脸识别,目前在 GitHub 上斩获 14291 Star。以下为 LFW 数据集 Sylvestor Stallone 输入单个图像的流程。 项目地址:https://github.com/cmusatya…

用python写一个双色球中奖模拟器

先说规则: 一等奖:投注号码与当期开奖号码全部相同(顺序不限,下同),即中奖; 二等奖:投注号码与当期开奖号码中的6个红色球号码相同,即中奖; 三等奖&#xf…

ai智能写作软件有分享吗?分享4款解放双手的软件!

随着人工智能技术的不断发展,AI智能写作软件逐渐成为内容创作者们的新宠。这些软件不仅能够帮助我们快速生成高质量的文本内容,还能在优化搜索引擎排名等方面发挥重要作用。本文将为大家介绍几款常用的AI智能写作软件,让您轻松提升内容创作效…

科技发展趋势,墨水屏电子桌牌将发挥更重要作用

随着科技的不断发展,电子桌牌作为信息展示和宣传的新型设备,逐渐在各个行业得到广泛应用。在国企单位、政府部门、大企业、外企等,墨水屏电子桌牌作为一种新型的数字化展示工具,也已经得到了越来越多的应用。下面,中科…

2023年智能可穿戴行业市场分析(电商数据查询分析):智能手表销额增长21%,手环明显下滑

近年来,随着技术的进步,智能可穿戴设备在社交网络、医疗保健、导航等诸多领域有着非常广泛的应用,这为大众生活带来了诸多便利。 当前的可穿戴产品形态纷繁多样,主要包括智能手表、智能眼镜、智能手环、健康穿戴和体感控制等等&am…

“接口”公共规范的遵守者

👨‍💻作者简介:👨🏻‍🎓告别,今天 📔高质量专栏 :☕java趣味之旅 欢迎🙏点赞🗣️评论📥收藏💓关注 💖衷心的希…

1.准确率-机器学习模型性能常用的评估指标

选择正确的工具对问题的解决非常关键,而深度学习,即大型模型,只是机器学习技术广泛范围中的一种方法。因此,我们有必要了解机器学习。而机器学习中,最重要的是找到一个好的评估指标来评估机器学习模型的性能。它可以帮…

基于springboot+vue的IT技术交流和分享平台系统(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 研究背景…

thinkphp5向数据表插入数据并且获得id

$id db(数据表名)->insertGetId([status>1]); 直接...打印$id就是这条插入的数据的id了

微信小程序跳转第三方网站链接

很简单&#xff0c;先定义一个跳转外网的页面&#xff0c;利用 web-view 标签&#xff0c;通过src设置你要跳转的外网地址 <web-view src"https://www.baidu.com"></web-view>然后在你的跳转按钮写跳转函数即可 wx.navigateTo({url: /pages/webView/inde…

【Py/Java/C++三种语言详解】LeetCode每日一题240122【贪心】LeetCode670、最大交换

文章目录 题目链接题目描述解题思路为什么是贪心一个带图的例子 代码pythonjavacpp时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目链接 LeetCode670、最大交换 题目描述 给定一个非负整数数组 nums 和一个整数 k &#xff0c;你需要将这个数组分成 k 个非空的连…

【知识---OpenCV库中的读写图像的基本操作--cv::imread、cv::imwrite】

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言cv::imread案例 cv::imwrite案例 总结 前言 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一款开源的计算机视觉和机器学习软件库。它…

电信联通5G共建共享方案实施及验证

一、情况概述 随着2019年9月9日中国电信集团与联通签署《5G网络共建共享框架合作协议书》&#xff0c;电信与联通在全国范围内合作共建5G接入网络。根据合作协议&#xff0c;联通运营公司将与中国电信在全国范围内合作共建一张5G接入网络, 双方划定区域&#xff0c;分区建设&a…

【Python】GNN for 化学分子性质

目录 图和图神经网络 图卷积和池化层 Pytorch代码实现 1、使用RDKit创建图 2、在生成

C++-QT-QString -CString -string 互转

网上常用的函数在环境&#xff08;VS2022 ATL包含QT库的项目&#xff09;中转换不了。 1.QString 转String std::string str qstr.toStdString(); //不行 QString qstr "Hello, world!";//1. 将QString转换为std::string 不行 //std::string str qstr.toSt…

分享多种vcruntime140_1.dll丢失修复办法,vcruntime140_1.dll文件下载

vcruntime140_1.dll是Windows操作系统中的一个重要系统文件&#xff0c;它与C运行库相关。当计算机上缺少或损坏了vcruntime140_1.dll文件时&#xff0c;可能会导致一系列问题和错误。出现这文件错误&#xff0c;应该很多小伙伴都会想到重新下载vcruntime140_1.dll&#xff0c;…

GitHub 打不开问题解决

1、找到记事本&#xff0c;以管理员身份运行 2、打开记事本后点击左上角文件下的打开&#xff0c;然后找到 C:\Windows\System32\drivers\etc 文件夹下的 hosts 文件 这里需要注意的是右下角文件类型要选择所有文件类型才能看到 hosts 文件。 3、打开文件后&#xff0c;在最下…

AI智能绘图

AI智能绘图是一种创新的图像生成技术&#xff0c;它使用人工智能算法来根据用户输入的文本描述或参考图片自动生成艺术作品。这种技术分为两个方面&#xff1a;文生图和图生图。 首先我们需要浏览器搜索“固乔科技”官网&#xff0c;先下载并安装固乔智创助手软件。完成后&…

源码实现简介

本系列所有代码在文章底部&#xff0c;每一章节代码可独立编译运行 随着科技的飞速发展&#xff0c;自动驾驶技术正逐渐成为现实。而在自动驾驶技术中&#xff0c;感知是至关重要的一个环节。通过感知&#xff0c;自动驾驶车辆能够识别和理解周围环境&#xff0c;进而做出相应…