面试--java基础
Java基础
- Java 中的几种基本数据类型了解么?
- 基本类型和包装类型的区别?
- 包装类型的缓存机制了解么?
- 成员变量与局部变量的区别?
- 静态变量有什么作用?
- 静态方法为什么不能调用非静态成员?
- 重载和重写有什么区别?
- 面向对象和面向过程的区别
- 面向对象三大特征
- 接口和抽象类有什么共同点和区别?
- 深拷贝和浅拷贝区别了解吗?什么是引用拷贝?
- == 和 equals() 的区别
- String、StringBuffer、StringBuilder 的区别?
- Exception 和 Error 有什么区别?
- 什么是序列化和反序列化?
- 序列化协议对应于 TCP/IP 4 层模型的哪一层?
- 谈谈反射机制的优缺点
- JDK 动态代理和 CGLIB 动态代理对比
- 静态代理和动态代理的对比
集合
- ArrayList 与 LinkedList 区别?
- 比较 HashSet、LinkedHashSet 和 TreeSet 三者的异同
- HashMap 和 Hashtable 的区别
- HashMap 和 TreeMap 区别
- HashMap 的长度为什么是 2 的幂次方
- ConcurrentHashMap 和 Hashtable 的区别
- JDK 1.7 和 JDK 1.8 的 ConcurrentHashMap 实现有什么不同?
- ConcurrentHashMap 能保证复合操作的原子性吗?
并发/线程
- Java 线程和操作系统的线程有啥区别?
- 程序计数器为什么是私有的?
- 虚拟机栈和本地方法栈为什么是私有的?
- 如何创建线程?
- 说说线程的生命周期和状态?
- 什么是线程上下文切换?
- Thread#sleep() 方法和 Object#wait() 方法对比
- 可以直接调用 Thread 类的 run 方法吗?
- 并发与并行的区别
- volatile如何保证变量的可见性?/防止 JVM 的指令重排序/不能保证对变量的操作是原子性的
- 乐观锁(实现使用版本号机制或 CAS 算法)和悲观锁
- CAS 算法存在哪些问题?/ ABA 问题/循环时间长开销大/只能保证一个共享变量的原子操作
- synchronized 底层原理了解吗?/ synchronized 同步语句块的实现使用的是 monitorenter 和
monitorexit 指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit
指令则指明同步代码块的结束位置。synchronized 修饰的方法并没有 monitorenter 指令和 monitorexit
指令,取而代之的是 ACC_SYNCHRONIZED 标识,该标识指明了该方法是一个同步方法。不过两者的本质都是对对象监视器
monitor 的获取。 - 公平锁和非公平锁有什么区别?
- 可中断锁和不可中断锁有什么区别?
- 共享锁和独占锁有什么区别?
- ThreadLocal 原理了解吗?
- ThreadLocal 内存泄露问题是怎么导致的?
- 如何创建线程池?
- 线程池常见参数有哪些?如何解释?
- 为什么不推荐使用内置线程池?/ Executors 返回线程池对象的弊端
- 线程池处理任务的流程了解吗?
- AQS 是什么?/抽象队列同步器AbstractQueuedSynchronizer
- AQS 的原理是什么?
- Semaphore 的原理是什么?
- CountDownLatch 的原理是什么?
IO
- 字节流InputStream(字节输入流)/ OutputStream(字节输出流)
- 字符流Reader(字符输入流)/ Writer(字符输出流)
- 字节缓冲流BufferedInputStream(字节缓冲输入流)/ BufferedOutputStream(字节缓冲输出流)
- 字符缓冲流BufferedReader (字符缓冲输入流)/BufferedWriter(字符缓冲输出流)
- Java IO 设计模式总结/装饰器模式/适配器模式/工厂模式/观察者模式
- Java 中 3 种常见 IO 模型/ BIO (Blocking I/O)/ NIO (同步非阻塞 IO/ I/O 多路复用)/
AIO (Asynchronous I/O) - NIO 核心组件/ Buffer(缓冲区)/ Channel(通道)/ Selector(选择器)
- NIO 零拷贝
JVM
- 线程私有的:程序计数器/虚拟机栈(栈帧:局部变量表、操作数栈、动态链接、方法返回地址)/本地方法栈
- 线程共享的:堆(新生代内存(Young Generation: Eden 区、两个 Survivor 区 S0 和
S1)/老生代(Old Generation)/永久代(Permanent Generation)
Metaspace(元空间))/方法区/直接内存 (非运行时数据区的一部分) - 对象的创建过程
- 对象的内存布局(对象头(Header)、实例数据(Instance Data)和对齐填充(Padding))
- 对象的访问定位(使用句柄、直接指针)
- 死亡对象判断方法(引用计数法/可达性分析算法)
- 引用类型总结(强引用/软引用/弱引用/虚引用)
- 垃圾收集算法(标记-清除算法/复制算法/标记-整理算法/分代收集算法)
- 垃圾收集器(Serial 收集器/ ParNew 收集器/ Parallel Scavenge 收集器/ Serial Old 收集器/
Parallel Old 收集器/ CMS 收集器/ G1 收集器/ ZGC 收集器) - 类的生命周期(加载(Loading)、验证(Verification)、准备(Preparation)、解析(Resolution)、初始化(Initialization)、使用(Using)和卸载(Unloading))
- 双亲委派模型
- JVM参数
网络
- OSI 七层模型是什么?每一层的作用是什么?
- TCP/IP 四层模型是什么?每一层的作用是什么?
- 应用层有哪些常见的协议?
- 传输层有哪些常见的协议?
- 网络层有哪些常见的协议?
- 从输入 URL 到页面展示到底发生了什么?
- HTTP 和 HTTPS 有什么区别?
- HTTP 是不保存状态的协议, 如何保存用户状态?
- Cookie 和 Session 有什么区别?
- WebSocket 和 HTTP 有什么区别?
- WebSocket 的工作过程是什么样的?
- TCP 与 UDP 的区别
- TCP 三次握手和四次挥手
操作系统
- 什么是用户态和内核态?
- 为什么要有用户态和内核态?只有一个内核态不行么?
- 用户态切换到内核态的 3 种方式/系统调用/中断/异常
- 系统调用的过程了解吗?
- 什么是进程和线程?
- 进程和线程的区别是什么?
- 线程间的同步的方式有哪些?
- PCB 是什么?包含哪些信息?
- 进程有哪几种状态?
- 进程间的通信方式有哪些?
- 进程的调度算法有哪些?
- 什么是僵尸进程和孤儿进程?
- 什么是死锁?
- 产生死锁的四个必要条件是什么?
- 解决死锁的方法
- 内存管理主要做了什么?
- 什么是内存碎片?
- 常见的内存管理方式有哪些?
- 什么是虚拟内存?有什么用?
- 什么是虚拟地址和物理地址?
- 虚拟地址与物理内存地址是如何映射的?
- 文件系统主要做了什么?
- 常见的磁盘调度算法有哪些?
相关文章:
面试--java基础
Java基础 Java 中的几种基本数据类型了解么?基本类型和包装类型的区别?包装类型的缓存机制了解么?成员变量与局部变量的区别?静态变量有什么作用?静态方法为什么不能调用非静态成员?重载和重写有什么区别?…...

NLP自然语言处理
计算机视觉和图像处理 Tensorflow入门深度神经网络图像分类目标检测图像分割OpenCVPytorchNLP自然语言处理 NLP自然语言处理 一、NLP简介二、文本预处理2.1 文本预处理简介2.2 文本处理的基本方法2.3 文本张量表示方法2.3.1 onehot编码2.3.2 word2vec编码 2.4 文本数据分析2.5…...

web自动化测试基础(从配置环境到自动化实现登录测试用例的执行,vscode如何导入自己的python包)
接下来的一段时间里我会和大家分享自动化测试相关的一些知识希望大家可以多多支持,一起进步。 一、环境的配置 前提安装好了python解释器并配好了环境,并安装好了VScode 下载的浏览器和浏览器驱动需要一样的版本号(只看大版本)。 1、安装浏览器 Chro…...

鸿蒙 Next 实战: 电子木鱼
前言 正所谓:Hello Word 是程序员学任何一门语言的第一个程序实践。这其实也是一个不错的正反馈,那如何让学习鸿蒙 Next 更有成就感呢?下面就演示一下从零开发一个鸿蒙 Next 版的电子木鱼,主打就是一个抽象! 实现要点…...
SQLite SQL调优指南及高级SQL技巧
记忆已更新 以下是《SQLite SQL调优指南及高级SQL技巧》文章的完整输出,字数目标为30000字,详细介绍并结合2024年最新技术趋势和优化策略。代码部分不计入字数统计。 SQLite SQL调优指南及高级SQL技巧 SQLite 是广泛使用的嵌入式数据库,因其…...

WordPress 6.7即将发布的新功能(和截图)
我们一直在密切关注 WordPress 6.7 的开发并测试该版本的测试版,它将带来一些令人兴奋的更新和几个新功能。 例如,我们很高兴地发现即将发布的版本将附带全新的默认主题,并对块编辑器和站点编辑体验进行大规模改进。 在本文中,我…...

SpringBoot整合QQ邮箱
SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件.... 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,…...

低质量数据的多模态融合方法
目录 多模态融合 低质量多模态融合的核心挑战 噪声多模态数据学习 缺失模态插补 平衡多模态融合 动态多模态融合 启发式动态融合 基于注意力的动态融合 不确定性感知动态融合 论文 多模态融合 多模态融合侧重于整合多种模态的信息,以实现更准确的预测,在自动驾驶、…...

计算机毕业设计 基于Django的在线考试系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档
🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点…...

Shell脚本linux登录自动检查
.bashrc 用于设置用户的 Bash shell 环境,在每次打开一个新的终端窗口或启动一个新的 Bash 会话时被执行 代码 login_check.sh #!/bin/bash clear LogFileNamepolling.$(date %F-%T) EchoFormat$(for (( i0; i<30; i )); do echo -n ""; done)# 显示…...

Golang | Leetcode Golang题解之第450题删除二叉搜索树的节点
题目: 题解: func deleteNode(root *TreeNode, key int) *TreeNode {var cur, curParent *TreeNode root, nilfor cur ! nil && cur.Val ! key {curParent curif cur.Val > key {cur cur.Left} else {cur cur.Right}}if cur nil {retur…...

Linux 之 Linux应用编程概念、文件IO、标准IO
Linux应用编程概念、文件IO、标准IO 学习任务: 1、 学习Linux 应用开发概念,什么是系统调用,什么是库函数 2、 学习文件IO:包括 read、write、open、close、lseek 3、 深入文件IO:错误处理、exit 等 4、 学习标准IO&a…...

PDF处理技巧:Windows电脑如何选择合适的 PDF 编辑器
您可以阅读本文以了解用于在 PC 上编辑 PDF 的顶级免费软件,而无需花费任何费用即可轻松进行快速编辑、拆分、合并、注释、转换和共享您的 PDF。 PDF 或可移植文档文件是由 Adobe 创建的一种多功能文件格式。它可以帮助您轻松可靠地交换文档,无论相关方…...

【c++】初步了解类和对象2
1、类的作用域 类定义了一个新的作用域,类的所有成员都在类的作用域中。在类体外定义成员时,需要使用 :: 作用域操作符指明成员属于哪个类域。 如图,此时在类内声明了函数firstUniqChar(),在类外进行了函数体的具体定义。 但是却…...
Python库pandas之四
Python库pandas之四 输入/输出read_json函数应用实列 输入/输出 read_json 函数 词法:pandas.read_json(path_or_buf, *, orientNone, typ‘frame’, dtypeNone, convert_axesNone, convert_datesTrue, keep_default_datesTrue, precise_floatFalse, date_unitNo…...
网络攻防技术--第三次作业
文章目录 第三次作业一、通过搜索引擎搜索自己在因特网上的足迹,并确认是否存在隐私和敏感信息泄露问题。如果有信息泄露,提出解决方法。二、结合实例总结web搜索和挖掘的方法。三、网络扫描有哪几种类型?分别有什么作用?利用一种…...

带隙基准Bandgap电路学习(一)
一、原理图 Bandgap中的运放(折叠式Cascode)采用P输入对,是因为运放输入端接的PNP三极管发射极端的电位,电压小,为了确保输入对管能够饱和工作,故采用P输入对管。此外,P管作为输入管,…...
[前端][easyui]easyui select 默认值
function initRegion(key, val) {$(#Region).combobox({url: path /getTypeVaule.do?itemregion&key key "&value" val,editable: false, //不可编辑状态cache: false,valueField: TEMID,textField: TEMID,loadFilter: function (data) {data.unshift({…...
项目开发--大模型--个人问答知识库--chain控制
背景 1、langchain当中的chain prompt | llm | output_parser这个链能更长吗? 在 LangChain 中,链(chain)可以根据需要变得非常长,并且可以包含多种不同类型的组件。链的目的是将多个步骤串联起来,以便以…...

STM32—SPI通讯协议
前言 由于I2C开漏外加上拉电阻的电路结构,使得通信线高电平的驱动能力比较弱,这就会号致,通信线由候电平变到高电平的时候,这个上升沿耗时比较长,这会限制I2C的最大通信速度, 所以,I2C的标准模…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

令牌桶 滑动窗口->限流 分布式信号量->限并发的原理 lua脚本分析介绍
文章目录 前言限流限制并发的实际理解限流令牌桶代码实现结果分析令牌桶lua的模拟实现原理总结: 滑动窗口代码实现结果分析lua脚本原理解析 限并发分布式信号量代码实现结果分析lua脚本实现原理 双注解去实现限流 并发结果分析: 实际业务去理解体会统一注…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Spring是如何解决Bean的循环依赖:三级缓存机制
1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间互相持有对方引用,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...

视觉slam十四讲实践部分记录——ch2、ch3
ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...