一、公司是做什么业务的?

二、介绍一下自己会用的,熟悉的技术栈?

三、“在 Spring 应用中,当你发起一个 RESTful API 请求时(例如 GET /api/users/1),计算机系统是如何知道这个请求的?请结合计算机网络(从客户端到服务器的传输过程)和 Spring 框架(服务器端的处理流程)详细说明这个过程。”

四、动态规划和贪心算法的异同点

五、假设利用贪心算法解决背包问题的话,怎么判断当前结果最优?

六、上学期学了什么课?

七、路由器是网络中用于路径选择的设备,那路由器之间通常会使用哪些协议来构建它的路由表?怎么构建这个路由的数据包?

八、TCP如何控制网络的包让传输的链路是可靠的?

九、学了哪些流量控制的算法?

十、理不理解SpringCloud用来干什么的?

十一、假设现在有1000条数据,对它进行排序但是有一个现实条件就是在内存里面最多只能放十条数据,在这个内存受限的情况下,那么你觉得如何去把这1000条数据进行排序?

一、公司是做什么业务的?

相当于一个网上商城

二、介绍一下自己会用的,熟悉的技术栈?(就这些就没了?)

spring,spring boot ,spring mvc, mysql, mybatis,redis,docker 

三、“在 Spring 应用中,当你发起一个 RESTful API 请求时(例如 GET /api/users/1),计算机系统是如何知道这个请求的?请结合计算机网络(从客户端到服务器的传输过程)和 Spring 框架(服务器端的处理流程)详细说明这个过程。”

回答思路(分阶段说明)

1. 客户端发起请求(计算机网络层面)
  1. 应用层

    • 客户端(浏览器、Postman 等)通过 HTTP 协议发送请求(如 GET /api/users/1)。
    • 请求包含:URL、HTTP 方法、请求头(如 Content-Type)、请求体(如 JSON 数据)。
  2. 传输层

    • 客户端通过 TCP 协议建立与服务器的连接(默认端口 80/443)。
    • TCP 协议将 HTTP 请求分割为多个数据包,并添加源 / 目标端口号。
  3. 网络层与数据链路层

    • IP 协议为数据包添加源 / 目标 IP 地址,通过路由器转发至服务器。
    • 数据链路层将数据包转换为物理信号(如电信号、光信号)传输。
  4. 服务器接收请求

    • 服务器网卡接收物理信号,逐层解析(数据链路层 → 网络层 → 传输层),最终还原为 HTTP 请求。
2. 服务器接收请求(Spring 框架层面)
  1. Tomcat 容器处理

    • 服务器上的 Web 容器(如 Tomcat)监听指定端口(如 8080),接收 HTTP 请求。
    • Tomcat 将请求封装为 ServletRequest 对象,传递给 Spring MVC 框架。
  2. Spring MVC 前端控制器(DispatcherServlet)

    • DispatcherServlet 作为入口,接收所有请求。
    • 根据 HandlerMapping 找到处理该请求的 Controller 方法(如 @GetMapping("/api/users/{id}"))。
  3. 拦截器(Interceptor)处理

    • 在请求到达 Controller 前,执行注册的拦截器(如 LoginInterceptor)。
    • 拦截器可进行权限校验、日志记录等预处理,通过 preHandle 方法控制请求是否继续。
  4. Controller 处理请求

    • 匹配到的 Controller 方法被调用(如 UserController.getUserById(Long id))。
    • 方法参数通过 @PathVariable@RequestBody 等注解绑定请求数据。
  5. Service 与 DAO 层处理

    • Controller 调用 Service 层处理业务逻辑(如查询用户)。
    • Service 调用 DAO 层(如 UserRepository)访问数据库。
  6. 数据持久化

    • DAO 通过 JPA、MyBatis 等 ORM 框架执行 SQL 查询,获取数据。
3. 响应返回客户端
  1. Controller 返回数据

    • Controller 方法返回数据(如 User 对象),被 @ResponseBody 注解转换为 JSON/XML。
  2. 视图解析与消息转换

    • HttpMessageConverter 将 Java 对象转换为 HTTP 响应体(如 JSON)。
  3. 响应头与状态码

    • 设置响应头(如 Content-Type: application/json)和状态码(如 200 OK)。
  4. 通过网络返回客户端

    • 响应数据通过 Tomcat 封装为 HTTP 响应,经网络层、传输层返回客户端。
    • 客户端解析响应,渲染数据(如浏览器显示 JSON 结果)。

总结(关键技术点)

  • 计算机网络:HTTP 协议、TCP/IP 分层模型、数据包传输。
  • Spring 框架DispatcherServletHandlerMapping、拦截器、@RestControllerHttpMessageConverter

这个过程体现了 “请求 - 拦截 - 处理 - 响应” 的完整流程,也是 Spring MVC 框架的核心工作机制。

四、动态规划和贪心算法的异同点

  • 相同点:均用于求解优化问题,通过分解子问题简化计算。
  • 不同点
    • 动态规划:考虑子问题的所有可能解,存储中间结果(重叠子问题),通过全局最优解推导(最优子结构),适用于多阶段决策问题(如背包问题、最长公共子序列)。
    • 贪心算法:每步选择局部最优解(不回溯),不存储中间结果,仅适用于局部最优能推出全局最优的场景(如哈夫曼编码、活动选择问题)。

五、假设利用贪心算法解决背包问题的话,怎么判断当前结果最优?

仅当背包问题满足 **“物品可分割(分数背包)” 且价值密度(价值 / 重量)单调递减 ** 时,贪心算法(优先选价值密度最高的物品)的结果才是最优的。若为 0-1 背包(物品不可分割),贪心算法无法保证最优,需用动态规划。

六、上学期学了什么课?

计算机网络、编译原理

七、路由器是网络中用于路径选择的设备,那路由器之间通常会使用哪些协议来构建它的路由表?怎么构建这个路由的数据包?

  • 协议
    • 动态路由协议:内部网关协议(IGP,如 RIP、OSPF)、外部网关协议(EGP,如 BGP);
    • 静态路由:手动配置,非协议。
  • 路由数据包构建:协议通过交换 “路由更新报文”(含目标网络、距离 / 代价、下一跳等信息),路由器根据协议规则(如 OSPF 的链路状态、RIP 的跳数)计算最优路径,更新本地路由表。

 

八、TCP如何控制网络的包让传输的链路是可靠的?

  • 机制包括:三次握手建立连接、四次挥手断开连接;
  • 数据传输中通过序号与确认应答(ACK)、超时重传流量控制(滑动窗口)、拥塞控制(慢启动、拥塞避免)、校验和(检错)、重排序与去重(处理乱序 / 重复包)实现可靠传输。

九、学了哪些流量控制的算法?

TCP 滑动窗口协议(基于接收方缓冲区大小动态调整发送窗口);

十、理不理解SpringCloud用来干什么的?

SpringCloud 是基于 SpringBoot 的微服务架构工具集,用于解决分布式系统问题,提供服务注册与发现(Eureka/Consul)、负载均衡(Ribbon)、熔断降级(Hystrix)、API 网关(Gateway)、配置中心(Config)等组件,简化微服务的开发与治理。

十一、假设现在有1000条数据,对它进行排序但是有一个现实条件就是在内存里面最多只能放十条数据,在这个内存受限的情况下,那么你觉得如何去把这1000条数据进行排序?

 

外部排序:分而治之

外部排序:的核心是 分而治之:先将大文件分割成内存可处理的小片段,分别排序后再合并成最终有序文件。

具体步骤

1. 拆分阶段(生成 “有序子文件”)
  • 从原始数据中分批读取数据,每次读入 10 条(内存最大容量)。
  • 对这 10 条数据用内存排序算法(如快速排序、归并排序)进行排序,生成一个 “有序子文件”(如temp1.txt),写入磁盘。
  • 重复上述过程,直到 1000 条数据全部分批处理完毕。
    • 1000 条数据 → 每次 10 条 → 共生成 100 个有序子文件(每个子文件含 10 条有序数据)。
2. 合并阶段(多路归并排序)
  • 采用k 路归并(这里 k=10,即每次从 10 个子文件中取数据),利用内存作为 “缓冲区” 合并子文件:
    1. 从 100 个有序子文件中,各读取 1 条数据到内存缓冲区(共 10 条,不超过内存限制)。
    2. 从缓冲区的 10 条数据中,选出最小值,写入最终结果文件(result.txt)。
    3. 从该最小值所在的子文件中,再读取 1 条数据补充到缓冲区(保持缓冲区始终有 10 条数据)。
    4. 重复步骤 2-3,直到所有子文件的数据都被读取完毕。
    5. 若子文件数量超过 10 个(如 100 个),则分多轮合并:
      • 第一轮:100 个子文件 → 10 轮合并(每轮合并 10 个)→ 生成 10 个 “二级有序子文件”。
      • 第二轮:10 个二级子文件 → 1 轮合并 → 生成最终的有序文件。

关键技术点

  • 缓冲区管理:内存始终只存 10 条数据(用于临时存储各子文件的当前待比较数据),避免内存溢出。
  • 多路归并优化:通过败者树(Loser Tree) 或堆(Heap) 高效选出最小值,减少每次比较的次数(从 k-1 次降至 log₂k 次),提升合并效率。

总结

整个过程分为 “拆分(局部排序)” 和 “合并(全局排序)” 两步,核心是利用磁盘存储中间结果,通过内存作为缓冲区实现多轮归并。这是数据库、大数据处理等场景中处理超大规模数据的基础思想,体现了 “内存有限时,用磁盘换空间,用分治换效率” 的设计思路。

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

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

相关文章

我是怎么设计一个订单号生成策略的(库存系统)

我是怎么设计一个订单号生成策略的(库存系统)一、背景 最近我在做一套自研的库存管理系统,其中有一个看似简单、实则很关键的功能:订单号生成策略。 订单号不仅要全局唯一,还要有一定的可读性和业务含义,比…

问津集 #1:Rethinking The Compaction Policies in LSM-trees

文章目录引言正文结束语引言 陪女朋友出门,我大概有两个小时左右的空闲时间,遂带上电脑,翻了下论文列表,选择了这篇文章做一个简读。 因为这一年负责时序系统的存储引擎和计算引擎演进,而Compaction又是串联读写的核心…

数据产品结构:从数据接入到可视化的完整架构指南

在数据驱动决策的时代,一套高效的数据产品结构是企业挖掘数据价值的基础。无论是巨头企业自建的完整体系,还是中小企业依赖的第三方工具,其核心逻辑都是实现 “数据从产生到呈现” 的全链路管理。本文将拆解数据产品的五层架构,对…

python学智能算法(二十三)|SVM-几何距离

引言 前序学习文章中,已经探究了电荷超平面的距离计算方法,相关文章为点与超平面的距离。 在这片文章中,我们了解到计算距离的公式: Fmin⁡i1...myi(w⋅xib)F\min_{i1...m}y_{i}(w\cdot x_{i}b)Fi1...mmin​yi​(w⋅xi​b) 计算…

[每日随题11] 贪心 - 数学 - 区间DP

整体概述 难度:1000 →\rightarrow→ 1400 →\rightarrow→ 1600 P3918 [国家集训队] 特技飞行 标签:贪心 前置知识:无 难度:橙 1000 题目描述: 输入格式: 输出格式: 样例输入:…

Elasticsearch 9.x 搜索执行流程(源码解读)

1. 搜索执行流程概述 Elasticsearch的搜索执行是一个分布式过程,涉及协调节点和数据节点之间的多阶段交互 #mermaid-svg-QGh2GjrUKcs5jzQp {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-QGh2GjrUKcs5jzQp .error…

暑期训练8

E. G-C-D, Unlucky!题目要求判断是否存在一个长度为 n 的数组 a,使得p[i] 是 a[0..i] 的前缀 GCDs[i] 是 a[i..n-1] 的后缀 GCD思路前缀 GCD 非递增后缀 GCD 非递减首尾 GCD 一致桥梁条件成立对于每个位置 i,gcd(p[i], s[i1]) 必须等于整个数组的 GCD&am…

深入解析Hadoop HDFS高可用性:原理、故障切换与元数据同步

Hadoop HDFS高可用性(HA)概述在分布式存储领域,Hadoop分布式文件系统(HDFS)作为Hadoop生态系统的核心存储组件,其高可用性(HA)设计一直是架构师们关注的焦点。传统HDFS架构中,NameNode作为单一主节点管理整个文件系统的元数据,这种…

Freertos源码分析:任务创建/删除

任务创建/删除流程1.简介FreeRTOS 中任务创建通过 xTaskCreate() 或 xTaskCreateStatic() 实现。动态创建(xTaskCreate)会自动分配任务栈和TCB(任务控制块),静态创建(xTaskCreateStatic)需用户预…

warning: _close is not implemented and will always fail

相关问题: 一、undefined reference to _exit undefined reference to ‘end‘ warning: _close is not implemented and will always fail 一、环境: ubuntu24.04实体机、 arm-none-eabi-gcc gcc version 13.2.1 20231009 (15:13.2.rel1-2) 二…

MyBatis之缓存机制详解

MyBatis之缓存机制详解一、MyBatis缓存的基本概念1.1 缓存的核心价值1.2 MyBatis的两级缓存体系二、一级缓存(SqlSession级别缓存)2.1 工作原理2.2 实战案例:一级缓存演示2.2.1 基础用法(默认开启)2.2.2 一级缓存失效场…

云服务器搭建自己的FRP服务。为什么客户端的项目需要用Docker启动,服务端才能够访问到?

简单回答:在云服务器搭建FRP服务时,客户端项目用Docker启动并非必需,而是因为Docker的特性简化了配置: Docker通过端口映射(如-p 本地端口:容器端口)能固定项目对外暴露的端口,减少本地端口冲突…

6 STM32单片机的智能家居安防系统设计(STM32代码+手机APP设计+PCB设计+Proteus仿真)

系列文章目录 文章目录 系列文章目录前言1 资料获取与演示视频1.1 资料介绍1.2 资料获取1.3 演示视频 2 系统框架3 硬件3.1 主控制器3.2 显示屏3.3 WIFI模块3.4 DHT11温湿度传感器3.5 烟雾/燃气传感器模块:MQ-23.6 火焰传感器3.7 门磁模块MC-38 4 设计PCB4.1 安装下…

DevOps落地的终极实践:8大关键路径揭秘!

本文来自腾讯蓝鲸智云社区用户: CanWay当前,DevOps因其能够降低IT运营成本、提高软件质量并加快上市时间的能力而在全球范围内引起广泛关注。它打破了传统软件开发与运营的界限,消除了新功能发布延迟和软件质量下降的障碍。DevOps通过实施持续集成、持续…

react - 根据路由生成菜单

后端返回菜单的格式menuList:[{index: true,name: "",component: "../views/Home",meta: { title: "首页", requiresAuth: true,roles:[user]},},{path: "/admin",name: "admin",meta: { title: "管理页", roles:…

Window延迟更新10000天配置方案

1.点击"开始"菜单,搜索"注册表编辑器",点击"打开"。2.找到"\HKEY LOCAL MACHINE\SOFTWARE\Microsoft\WindowsUpdate\Ux\Settings"路径。3.右面空白处右键新建一个32位值,命名为FlightSettingsMaxPau…

【OD机试】人民币转换

题目描述 将阿拉伯数字金额转换为中文大写金额格式,需遵循以下规则: 1、 前缀要求:中文大写金额前必须标明“人民币”字样。 2、 用字规范:使用壹、贰、叁、肆、伍、陆、柒、捌、玖、拾、佰、仟、万、亿、元、角、分、零、整等字样。 3、 “整”字规则: 金额到“元”为止…

在ajax中什么时候需要将返回值类型做转换

$.ajax({url: TMSPROC0050/deleteData?accidentIds accidentIds.join(,),type: DELETE,dataType: json,success: function(result) {$(#accidentGrid).datagrid(reload);$.messager.show({title: 成功,msg: result.message})},error: function(result) {$.messager.alert({ti…

Helm常用命令大全(2025最新版)

文章目录Helm常用命令大全(2025最新版)一、基础命令与环境配置版本与帮助信息安装与升级HelmLinux系统安装版本升级注意事项二、仓库管理命令仓库基础操作OCI仓库支持(v3.8新特性)三、Chart操作命令Chart创建与打包Chart搜索与下载…

gitlab+jenkins

文章目录架构gitlab和jenkins安装jenkins配置gitlab配置jenkins与gitlab联动参考架构 gitlab和jenkins安装 部署docker 部署jenkins 启动jenkins 用户:admin,对应的密码如下 点击安装自定义推荐的插件 安装gitlab插件 jenkins配置 配置pipline…