news 2026/6/10 14:53:19

1.13草花互动面试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
1.13草花互动面试

1.浏览器输入网址到服务器的完整流程(从 DNS 解析到页面渲染)

怎么答:

“当我在浏览器输入一个网址(比如https://www.example.com)并回车后,整个过程大致是这样的:

  1. DNS 解析:浏览器把域名解析成 IP 地址(先查本地缓存,再问 DNS 服务器);
  2. 建立连接:通过 TCP 三次握手建立连接,如果是 HTTPS,还要做 TLS/SSL 握手加密;
  3. 发送请求:浏览器构造 HTTP 请求,发给服务器;
  4. 服务器处理:比如 Nginx 接收后转发给 Spring Boot 应用,执行业务逻辑(查数据库、调缓存等);
  5. 返回响应:服务器生成 HTML 或 JSON 响应,返回给浏览器;
  6. 页面渲染:浏览器解析 HTML/CSS/JS,最终展示页面。

在我们‘瞬览购书’项目中,用户请求就是先到 Gateway 网关,再路由到具体微服务,整个链路依赖这个流程。”


2.Java 的数据类型有哪些?

怎么答:

“Java 的数据类型分为两大类:基本数据类型引用数据类型

基本数据类型有 8 种

  • 整型:byteshortintlong
  • 浮点型:floatdouble
  • 字符型:char
  • 布尔型:boolean

它们直接存储值,效率高。

引用数据类型包括:类(如String)、接口、数组、枚举等,它们存储的是对象的引用(地址),实际对象存在堆内存里。

特别注意:String虽然用起来像基本类型,但它其实是引用类型。”


3.进程和线程的区别

怎么答:

“进程是操作系统资源分配的最小单位,每个进程有独立的内存空间;
线程是CPU 调度的最小单位,同一个进程内的多个线程共享内存,只拥有自己的栈。

所以:

  • 通信:进程间通信复杂(需管道、消息队列等),线程可直接共享变量;
  • 开销:创建/切换进程比线程慢得多;
  • 稳定性:一个进程崩溃不影响其他进程,但一个线程崩溃可能拖垮整个进程。

在 Java 中,一个 JVM 是一个进程,里面可以跑很多线程——比如 Tomcat 就用线程池处理并发请求。”


4.常见的鉴权方式有哪些?

怎么答:

“我了解的主要有几种:

  • JWT:无状态,Token 自包含用户信息,适合微服务;
  • Session-Cookie:有状态,服务端存 Session,浏览器带 Cookie,适合传统 Web;
  • OAuth2.0:用于第三方登录或单点登录,比如用微信登录;
  • 自定义 Token:服务端生成随机 Token 存 Redis,客户端携带验证。

我们项目用的是JWT,因为它无状态、易扩展,特别适合分布式架构。”


5.JWT 无状态鉴权的具体实现(结合您的项目)

怎么答:

“在‘瞬览购书平台’中,用户登录后,认证服务会签发一个 JWT Token。
后续请求,前端把这个 Token 放在请求头里。
我们在Gateway 网关层统一校验 Token—— 检查签名、有效期等。
校验通过后,把用户 ID 存到ThreadLocal里。
这样,后面的微服务(比如商品、订单)就不用重复解析 Token,直接从 ThreadLocal 拿用户 ID,既安全又高效。”


6.“无状态鉴权”是什么意思?

怎么答:

“‘无状态’意思是:服务端不需要记住用户是否登录过
每次请求只要 Token 合法(没过期、签名正确),就认为用户已认证。

而像 Session 方式是有状态的——服务端必须保存用户的登录记录。
无状态的好处是:容易水平扩展,天然适合微服务,不需要共享 Session 存储。”


7.Session 和 Cookie 的关系:它们是否可以/需要一起使用?

怎么答:

“其实它们本来就是配合使用的
用户登录后,服务端创建 Session,并生成一个 Session ID。
这个 ID 通常通过Set-Cookie发给浏览器,浏览器后续自动带上这个 Cookie。
服务端靠它找回 Session,识别用户身份。

所以可以说:Cookie 是 Session ID 的‘运输工具’
虽然 Session 也能用 URL 传 ID,但几乎都用 Cookie,因为更方便安全。”


8.单点登录(SSO)如何实现?

怎么答:

“单点登录的核心是让多个系统信任同一个登录状态
我项目用的是基于 JWT 的方案

  • 用户在一个系统(如用户中心)登录,拿到 JWT Token;
  • 访问其他系统时,前端主动带上这个 Token;
  • 其他系统用相同密钥验证 Token,有效就认为已登录。

另一种是中心化认证(如 OAuth2.0):所有系统跳转到统一登录页,登录一次后,认证中心颁发凭证,实现跨系统免登。”


9.Java 面向对象的四大特性

怎么答:

“Java 面向对象有四大特性:

  1. 封装:用private隐藏内部细节,通过方法提供安全访问(比如用户密码不能直接改);
  2. 继承:子类复用父类代码(如Dog extends Animal),减少重复;
  3. 多态:父类引用调用子类方法(如Animal a = new Dog(); a.speak()实际执行 Dog 的逻辑),让代码更灵活;
  4. 抽象:通过接口或抽象类定义规范,不关心具体实现(比如Payment接口,Alipay 和 WechatPay 各自实现)。

在‘瞬览购书’项目中,我们就用多态实现了多种支付方式,用封装保护了敏感数据。”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 14:37:25

AUTOSAR架构图基础讲解:手把手认识经典平台结构

手把手拆解AUTOSAR架构图:从分层逻辑到实战落地你有没有遇到过这样的场景?接手一个ECU项目,代码里满是直接操作寄存器的裸机风格函数,换颗MCU就得重写大半;或者多个供应商交付的模块集成时接口对不上,调试几…

作者头像 李华
网站建设 2026/6/10 12:00:08

sbit入门必看:51单片机特殊功能寄存器定义详解

从点亮一个LED开始:深入理解51单片机中的sbit位定义你有没有过这样的经历?在调试一段51单片机代码时,看到别人用P1_0 1;就能直接控制某个引脚的电平,而自己还在写P1 | 0x01;和P1 & ~0x01;来翻转位状态。更奇怪的是——人家的…

作者头像 李华
网站建设 2026/6/10 11:52:52

STM32CubeMX安装教程:手把手带你完成开发环境搭建

从零开始搭建STM32开发环境:手把手教你搞定CubeMX安装与配置 你是不是也经历过这样的场景?刚买来一块STM32开发板,兴致勃勃地打开电脑准备点个LED,结果卡在第一步——连开发工具都装不起来。查了一堆教程,有的说要先装…

作者头像 李华
网站建设 2026/6/10 1:30:03

PCBA元件选型与封装匹配:项目应用指南

PCBA元件选型与封装匹配:从设计到量产的实战指南在一块PCB上,成百上千个元器件各司其职,协同工作。但你有没有遇到过这样的情况——原理图画得完美无缺,仿真结果也令人满意,可第一版打样回来,贴片厂却告诉你…

作者头像 李华
网站建设 2026/6/10 12:02:17

基于域名的动态数据源切换实现教程

概述这是一个基于Spring Boot的多数据源动态切换方案,通过解析请求的域名自动选择对应的数据源。核心组件实现1. 会话上下文管理 (SessionContext)使用 TransmittableThreadLocal 实现线程间数据传递提供统一的键值对存储接口在请求开始时清理旧数据,在结…

作者头像 李华
网站建设 2026/6/9 23:19:07

SPI控制器功能验证实践:基于iverilog的端到端流程

SPI控制器功能验证实践:从零构建基于Icarus Verilog的开源仿真流程 你有没有遇到过这样的场景?手头有个SPI控制器的RTL代码,想快速跑个仿真看看时序对不对,结果发现公司没有VCS许可证,ModelSim又太重启动慢&#xff0c…

作者头像 李华