测试题(一)

01 TCP 和 UDP 的区别

TCP 是面向连接的协议,传输可靠,保证数据按顺序到达并且不丢包,适用于网页浏览、文件传输、邮件通信、数据库连接等需要高可靠性的场景。

UDP 是无连接协议,不保证数据一定送达、不保证顺序,但速度快、延迟低,适合视频会议、直播、实时游戏等对实时性要求高的场景。

02 IO 密集型与 CPU 密集型线程模型

CPU 密集型任务主要消耗 CPU 运算,线程数一般设置为核心数+1,避免过多切换。

IO 密集型任务大量时间在等待 IO,例如读写文件、网络请求,因此 CPU 经常空闲,线程数需要远大于核心数,常用公式是:核心数×(1+IO耗时/CPU耗时),提升总体并发。

03 submit 与 execute 的区别

execute 方法只能执行 Runnable,没有返回值。

submit 不仅能执行 Runnable,也能执行 Callable,并且能返回 Future 获取结果或异常信息。submit 是更常用、更灵活的任务提交方法。

04 拥塞控制的作用

拥塞控制防止发送方速度过快导致网络过载,引发丢包、延迟升高等问题。

它通过调整发送窗口大小,使得发送速率与网络承载能力匹配,让整个网络稳定运行。

05 String 常用方法

length 获得长度;charAt 取字符;substring 截取;indexOf 查找子串;contains 判断包含;equals 比较内容;equalsIgnoreCase 忽略大小写比较;toLowerCase 全部转小写;trim 去掉首尾空格;split 按规则分割成数组。

06 String、StringBuffer、StringBuilder 区别

String 内容不可变,每次修改都会产生新对象。

StringBuffer 可变且线程安全,适合多线程。

StringBuilder 可变但线程不安全,性能最高,适合单线程频繁拼接。

Buffer 和 Builder 内部通过可变数组提高效率。

07 常见 HTTP 请求头

Host:访问的主机名或 IP。

User-Agent:浏览器类型、系统信息、设备信息。

Content-Type:请求体格式,例如 application/json、multipart/form-data 等。

08 Exception 与 Error

Exception 是可处理异常,包括受检异常(必须捕获)和运行时异常(可不捕获)。Error 是严重错误,例如栈溢出、内存溢出,无法通过程序恢复。

09 获取 Class 对象的方法

Class.forName:动态加载类。

对象.getClass:通过实例获得类类型。

类名.class:最直接方式。

Class 对象是反射的入口,可用来创建对象、访问属性与方法。

10 静态代理与动态代理

静态代理需要手动编写代理类,结构固定。

动态代理在运行时生成代理对象,不需要写代理类,常见的有 JDK 动态代理和 CGLIB。Spring AOP 的底层实现就是动态代理。

相关推荐
邪修king几秒前
Re:Linux系统篇(二十五):文件系统(一):磁盘硬件底层原理:从物理结构到 CHS/LBA 寻址,搞懂硬盘数据的定位逻辑
java·linux·运维·gpt
驭渊的小故事2 分钟前
Spring Boot 注解详解01
java·前端·spring boot
泡海椒3 分钟前
jquick-pdf 超详细入门教程:Java 轻量级 HTML 模板生成 PDF 工具
java·开发语言
蛋先生DX7 分钟前
Java和Go都拍胸脯说"内存我包了",可它们到底是怎么下手的?
java·go·编程语言
SimonKing10 分钟前
阅后即焚的加密便签:Cryptgeon,你口袋里的秘密信使
java·后端·程序员
ss27323 分钟前
Java全栈实战 | 1.3-03 索引原理:联合索引 (a,b,c) 只查 b 走不了索引?B+ 树一图讲透所有索引玄学
java·数据库
前端初见33 分钟前
Java+AI零基础入门到大牛
java·spring boot·spring·java-ee·intellij-idea
猫猫不是喵喵.36 分钟前
两个不同应用Session能互相访问解决
java
带多刺的玫瑰41 分钟前
Leecode#35刷题之搜索插入位置
java·python·算法
一条泥憨鱼43 分钟前
苍穹外卖【day10| 来电提醒和客户催单】
java·后端·websocket·苍穹外卖