2026-10-31 11:59:15
泰隆银行Java一面可能涉及的知识点及解析如下:
一、算法相关常见排序算法及复杂度
快速排序:基于分治思想,通过选取基准值将数组分为两部分,递归排序。平均时间复杂度为O(nlogn),最坏情况(如数组已有序)为O(n2),空间复杂度为O(logn)(递归栈开销)。
冒泡排序:通过相邻元素比较交换,将最大值逐步“冒泡”至数组末尾。时间复杂度为O(n2),空间复杂度为O(1),适用于小规模数据或教学场景。
其他常见算法:如归并排序(稳定,O(nlogn))、插入排序(对小规模或部分有序数据高效)、堆排序(适合实现优先队列)等。
快排与冒泡排序对比
快排通过分治和递归优化效率,适合大规模数据;冒泡排序通过简单交换实现,代码易理解但效率低。
快排不稳定(相同元素可能因分区改变顺序),冒泡排序稳定。
WebSocket与HTTP的区别
连接方式:HTTP为短连接(每次请求需重新建立TCP连接),WebSocket为长连接(单次握手后保持通信)。
数据传输:HTTP为单向请求-响应模式;WebSocket支持全双工通信(客户端/服务端可主动推送数据)。
协议头:HTTP头较大(含Cookie、User-Agent等),WebSocket头较小(仅需少量标识)。
适用场景:HTTP适合静态资源加载、RESTful API;WebSocket适合实时应用(如聊天、股票行情)。
浏览器输入URL到页面展示的全过程
DNS解析:将域名转换为IP地址(可能涉及本地缓存、递归查询)。
TCP连接:通过三次握手建立与服务器的连接。
HTTP请求:发送请求报文(含方法、路径、头信息等)。
服务器处理:解析请求、查询数据库或调用服务、生成响应。
HTTP响应:返回状态码、响应头、HTML内容。
渲染页面:浏览器解析HTML/CSS/JS,构建DOM树、渲染树,最终绘制页面。
断开连接:HTTP/1.1默认保持连接(Keep-Alive),完成后通过四次挥手释放TCP连接。
网络不通的排查步骤
物理层检查:确认网线、Wi-Fi、路由器等硬件连接正常。
本地配置检查:使用ipconfig(Windows)或ifconfig(Linux)查看IP、子网掩码、网关是否配置正确。
连通性测试:通过ping命令测试目标IP是否可达(若被防火墙拦截可能失败)。
端口与协议检查:使用telnet或nc测试目标端口是否开放(如telnet example.com 80)。
路由跟踪:使用tracert(Windows)或traceroute(Linux)定位网络节点故障。
服务状态检查:确认目标服务器应用(如Web服务、数据库)是否运行。
网络模型与协议分层
OSI七层模型:物理层→数据链路层→网络层→传输层→会话层→表示层→应用层。
TCP/IP四层模型:网络接口层→网络层(IP)→传输层(TCP/UDP)→应用层(HTTP、FTP等)。
HTTP与TCP所属层级:HTTP属于应用层,TCP属于传输层。
索引优化:为常用查询字段(如WHERE、JOIN条件)添加索引,避免全表扫描。
SQL语句优化:减少子查询、避免使用SELECT *、使用EXPLAIN分析执行计划。
数据库配置调优:调整innodb_buffer_pool_size(缓存池大小)、query_cache_size(查询缓存)等参数。
硬件与架构优化:升级服务器CPU/内存、使用读写分离、分库分表。
乐观锁:假设并发冲突少,通过版本号(Version)或时间戳实现。更新时检查版本是否变化(如UPDATE table SET value=1 WHERE id=1 AND version=0),适用于读多写少场景(如评论点赞)。
悲观锁:假设并发冲突多,通过数据库锁(如SELECT ... FOR UPDATE)或Java同步机制(如synchronized)实现。适用于写多读少场景(如银行转账)。
Spring的两大核心特性
IoC(控制反转):将对象创建与依赖管理交给Spring容器,降低耦合度(通过@Autowired或XML配置实现)。
AOP(面向切面编程):通过动态代理实现横切关注点(如日志、事务)的模块化,减少代码重复(如@Transactional注解)。
JVM内存模型
堆(Heap):存储对象实例,由年轻代(Eden、Survivor)和老年代组成,垃圾回收(GC)主要区域。
方法区(Metaspace):存储类信息、常量、静态变量(JDK8后移至元空间,使用本地内存)。
栈(Stack):存储方法调用栈帧(局部变量表、操作数栈等),线程私有。
程序计数器:记录当前线程执行的字节码指令地址,唯一不会OOM的区域。
本地方法栈:支持Native方法调用。