【面试HOT100】子串普通数组矩阵
系列综述:
💞目的:本系列是个人整理为了秋招面试
的,整理期间苛求每个知识点,平衡理解简易度与深入程度。
🥰来源:材料主要源于LeetCodeHot100进行的,每个知识点的修正和深入主要参考各平台大佬的文章,其中也可能含有少量的个人实验自证。
🤭结语:如果有帮到你的地方,就点个赞和关注一下呗,谢谢🎈🎄🌷!!!
🌈【C++】秋招&实习面经汇总篇
文章目录
- 基本算法
- 子串篇
- 560. 和为 K 的子数组
- 239. 滑动窗口最大值(单调队列)
- 76. 最小覆盖子串
- 普通数组篇
- 53. 最大子数组和
- 56. 合并区间
- 189. 轮转数组
- 238. 除自身以外数组的乘积
- 41. 缺失的第一个正数
- 矩阵篇
- 73. 矩阵置零
- 54. 螺旋矩阵
- 48.旋转图像
- 240. 搜索二维矩阵 II
- 参考博客
😊点此到文末惊喜↩︎
基本算法
- 排序
- set去重
- 哈希:数组全部扔入
unordered_map
可通过O(1)
时间进行查找
子串篇
560. 和为 K 的子数组
- 问题
- 给你一个整数数组 nums 和一个整数 k
- 请你统计并返回 该数组中和为 k 的连续子数组的个数 。
- 思路
- 滑动窗口:无法通过sum>k判断负数问题
- 暴力方法
- 前缀和(公式变换思想)
[left,right]区间的和为k
等价于前right项的和 - 前left-1项的和 = k
- 单下标转化:
前left-1项的和(历史值) = 前right项的和(先锋值) - k
。先锋值需要一直记录求解,而历史值可以将先锋值记录在map中,方便以O(1)时间查找
int subarraySum(vector<int>& nums, int k) {int sum = 0, res = 0;// 第一次前缀和恰好等于k时,则sum为0,值为1unordered_map<int, int> umap{{0, 1}};for (int& c : nums) {sum += c; // 记录和if (umap.count(sum - k) > 0)res += umap[sum - k];++umap[sum]; // 如果有负数,不同位置可能有相同的前缀和} return res;
}
- 总结
- unordered_map比map更加节省空间
- 使用
if (umap.count(target_key) > 0)
,判断目标元素是否存在
239. 滑动窗口最大值(单调队列)
- 问题
- 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。
- 你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。返回每次滑动窗口中的最大值 。
- 思路
- 定义大根堆处理最值,每次滑动将新元素加入堆中并记录滑出元素,如果弹出最大元素不在滑出元素中即为结果,若是滑出元素则继续弹出堆顶元素。
- 单调队列:维护一个单调队列(从大到小)
- push时:从与队尾元素比较,如果小于cur则从队尾弹出,直到最后压入元素
- pop时:
vector<int> maxSlidingWindow(vector<int>& nums, int k) {// 单调队列deque<int> que;// 弹出元素:若为left元素则弹出auto pop = [&que](int value){ if (!que.empty() && value == que.front()) que.pop_front();};// 压入元素:从尾部弹出所有比压入值小的,保证队首元素是最大的auto push =[&que](int value){ while (!que.empty() && value > que.back()) que.pop_back();que.push_back(value);};vector<int> result;for (int i = 0; i < k; i++) { // 先将前k的元素放进队列push(nums[i]);}result.push_back(que.front()); // result 记录前k的元素的最大值for (int i = k; i < nums.size(); i++) {pop(nums[i - k]); // 滑动窗口移除最前面元素push(nums[i]); // 滑动窗口前加入最后面的元素result.push_back(que.front()); // 记录对应的最大值}return result;
}
76. 最小覆盖子串
- 问题
- 给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。
- 如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 “” 。
- 输入:s = “ADOBECODEBANC”, t = “ABC”
- 输出:“BANC”
- 思路
- 代码手法:先记录值,然后进行增量条件,最后再对值进行复杂的条件判断
// 返回字符串 s 中包含字符串 t 的全部字符的最小窗口
string SlideWindow(string s, string t) {// need记录子串情况,window记录合适窗口unordered_map<char, int> need, window;for (char c : t) need[c]++;int left = 0, right = 0;// 记录最小覆盖子串的起始索引及长度int start = 0, len = INT_MAX;int valid = 0;while (right < s.size()) {// 记录操作值,然后再进行复杂条件判断char c = s[right]; // c 是将移入窗口的字符right++; // 右移窗口// 进行窗口内数据的一系列更新if (need.count(c)) { // 判断need中是否存在cwindow[c]++;if (window[c] == need[c])valid++;}while (valid == need.size()) { // TODO:收缩条件// TODO:更新结果记录if (right - left < len) { start = left;// 更新起始值len = right - left;// 最小长度}// 收缩窗口char d = s[left];left++;// TODO:收缩处理if (need.count(d)) {if (window[d] == need[d])valid--;window[d]--;} }}// 返回最小覆盖子串return len == INT_MAX ?"" : s.substr(start, len);
}
普通数组篇
53. 最大子数组和
- 问题
- 给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组
- 子数组最少包含一个元素,返回其最大和。(子数组 是数组中的一个连续部分)
- 思路
- 贪心思路:负数一定是拉低总和。一直保存连续区间的最大值,如果连续区间值为负数,则重新开始计算连续区间值
- 动态规划:对于
过去状态
是否选择的一个标准
// 贪心
int maxSubArray(vector<int>& nums) {int result = INT32_MIN;int count = 0;for (int i = 0; i < nums.size(); i++) {count += nums[i];if (count > result) { // 取区间累计的最大值(相当于不断确定最大子序终止位置)result = count;}if (count <= 0) count = 0; // 相当于重置最大子序起始位置,因为遇到负数一定是拉低总和}return result;
}// 动态规划
int maxSubArray(vector<int>& nums) {int len = nums.size();// dp[i] 表示:以 nums[i] 结尾的连续子数组的最大和vector<int> dp(len);dp[0] = nums[0];for (int i = 1; i < len; i++) {// 状态转移:是否选择过去状态dp[i-1] + 当前nums[i]if (dp[i - 1] > 0) {dp[i] = dp[i - 1] + nums[i];} else {dp[i] = nums[i];}}// 也可以在上面遍历的同时求出 res 的最大值,这里我们为了语义清晰分开写,大家可以自行选择int res = dp[0];for (int i = 1; i < len; i++) {res = max(res, dp[i]);}return res;}
56. 合并区间
- 问题
- 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] = [starti, endi] 。
- 请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间
- 思路
- 双指针:数组的原地条件删除
vector<vector<int>> merge(vector<vector<int>>& intervals) {if (!intervals.size()) return {};sort(intervals.begin(), intervals.end(), less<vector<int>>());int slow = 0;int fast = 1;while (fast < intervals.size()) {if (intervals[slow][1] >= intervals[fast][0]) {intervals[slow][1] = max(intervals[fast][1], intervals[slow][1]);} else {slow++;intervals[slow] = intervals[fast];}fast++;}intervals.resize(slow+1);return intervals;
}
189. 轮转数组
- 问题
- 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。
- 思路
- 辅助存储空间,直接分段存储
- 两次反转:整体反转,然后部分反转
- 每次跳k个,进行覆盖,但是需要判断结束条件。
void reverse(vector<int>& nums, int start, int end) {while (start < end) {swap(nums[start], nums[end]);start += 1;end -= 1;}
}
void rotate(vector<int>& nums, int k) {k %= nums.size();reverse(nums, 0, nums.size() - 1);reverse(nums, 0, k - 1);reverse(nums, k, nums.size() - 1);
}
238. 除自身以外数组的乘积
- 问题
- 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。
- 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。
- 思路
- 分解的思想:将 n 2 n^2 n2 转化为 n + n n+n n+n 时间复杂度,
res[i] = MUL(0, i-1) * MUL(i+1, end)
(写公式,分析公式)
- 分解的思想:将 n 2 n^2 n2 转化为 n + n n+n n+n 时间复杂度,
vector<int> productExceptSelf(vector<int>& nums) {const int n = nums.size();vector<int> res(n, 0);// res中每个位置左边的乘积int k = 1;for (int i = 0; i < n; i ++) {res[i] = k;k *= nums[i];}// res中每个位置乘以右边的乘积k = 1;for (int i = n - 1; i >= 0; i --) {res[i] *= k;k *= nums[i];}return res;
}
41. 缺失的第一个正数
- 问题
- 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。
- 思路
- 数组+交换:可以降低时间复杂度和空间复杂度
- 原地哈希
- 将数组视为哈希表, 1放在下标为0位置上,2放在下标为1位置上。最后,即 n u m s [ i ] = i + 1 nums[i]=i+1 nums[i]=i+1
// 原地交换
int firstMissingPositive(vector<int>& nums) {int n = nums.size();for(int i = 0; i < n; i++){// while继续确定交换回来数的位置while(nums[i] >= 1 && nums[i] <= n // 规定遍历范围&& nums[i] != nums[nums[i] - 1]){ // 避免原地交换,因为已经成功了swap(nums[i], nums[nums[i] - 1]); // 将值nums[i]交换到目标位置num[nums[i] - 1]}}for(int i = 0; i < n; i++){if(nums[i] != i + 1)return i + 1;}return n + 1;
}// 哈希法(空间O(n))
int firstMissingPositive(vector<int>& nums) {int n=nums.size();unordered_map<int,bool> hashmap;for(int& num:nums){hashmap[num]=true;}for(int i=1;i<=n;i++){if(hashmap[i]==false) return i;}return n+1;
}
矩阵篇
解决的问题:
给定一个线性表(字符串、数组等),一次遍历求满足指定条件的连续子部分
73. 矩阵置零
- 问题
- 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。
- 思路
- 有重复则去重:通过unordered_set记录,并去除行和列中的重复
- 整体标记法(一个标记可以表示一个整体的属性):遍历对角线上每个个元素对应的行和列,若存在0则将对象线元素标记为0,最后再将标记为0的对象线元素对应的行列置为0
typedef struct {
int x;int y;
} Cord;
void setZeroes(vector<vector<int>>& matrix) {// 使用两个unordered_set分别存储需要置为0的行和列unordered_set<int> row_record;unordered_set<int> col_record;for (int i = 0; i < matrix.size(); ++i) {for (int j = 0; j < matrix[0].size(); ++j) {if (matrix[i][j] == 0) {row_record.emplace(i);col_record.emplace(j);}}}for (auto i : row_record) {for (int p = 0; p < matrix[0].size(); ++p) {matrix[i][p] = 0;}}for (auto j : col_record) {for (int p = 0; p < matrix.size(); ++p) {matrix[p][j] = 0;}}
}
54. 螺旋矩阵
- 问题
- 给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。
- 思路
- 边界变化:通过规定四个边界进行处理
vector<int> spiralOrder(vector<vector<int>>& matrix) {// 健壮性检查if (matrix.empty()) return vector<int>();vector<int> res;int up = 0, down = matrix.size()-1;int left = 0, right = matrix[0].size()-1;while (up <= down && left <= right) {// 从左到右for (int i = left; i <= right; ++i) res.push_back(matrix[up][i]);++up; // 缩小上边界if (up > down) break;// 从上到下for (int i = up; i <= down; ++i) res.push_back(matrix[i][right]);--right;if (left > right) break;// 从左到右for (int i = right; i >= left; i--) res.push_back(matrix[down][i]);--down;// 从左到右for (int i = down; i >= up; i--) res.push_back(matrix[i][left]);++left;}return res;
}
48.旋转图像
- 问题
- 给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。
- 必须在 原地 旋转图像
- 思路
- 找映射规律:
原索引位置matrix[i][j] -> 旋转后索引位置matrix[i][n-1-i]
- 找映射规律:
// 直接映射
void rotate(vector<vector<int>>& matrix) {int n = matrix.size();// 深拷贝 matrix -> tmpvector<vector<int>> tmp = matrix;// 根据元素旋转公式,遍历修改原矩阵 matrix 的各元素for (int i = 0; i < n; i++) {for (int j = 0; j < n; j++) {matrix[j][n - 1 - i] = tmp[i][j];}}
}
// 空间优化
void rotate(vector<vector<int>>& matrix) {// 设矩阵行列数为 nint n = matrix.size();// 起始点范围为 0 <= i < n / 2 , 0 <= j < (n + 1) / 2// 其中 '/' 为整数除法for (int i = 0; i < n / 2; i++) { // 一共转的圈数for (int j = i; j < n-i-1; j++) { // 每一圈要处理一行对应旋转一次// 暂存 A 至 tmpint tmp = matrix[i][j];// 元素旋转操作 A <- D <- C <- B <- tmpmatrix[i][j] = matrix[n - 1 - j][i];matrix[n - 1 - j][i] = matrix[n - 1 - i][n - 1 - j];matrix[n - 1 - i][n - 1 - j] = matrix[j][n - 1 - i];matrix[j][n - 1 - i] = tmp;}}
}
- 总结
- while循环一定要注意增量条件:
while(条件) { ··· ++p;}
- 看好是不是矩形,是
m*n
还是n*n
- while循环一定要注意增量条件:
240. 搜索二维矩阵 II
- 问题
- 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target
- 每行的元素从左到右升序排列。
- 每列的元素从上到下升序排列。
- 思路
- 找映射规律:
原索引位置matrix[i][j] -> 旋转后索引位置matrix[i][n-1-i]
- 找映射规律:
bool searchMatrix(vector<vector<int>>& matrix, int target) {if(!matrix.size() && !matrix[0].size()) return false;int i = 0, j = matrix[0].size() - 1; //矩阵右上角while(i < matrix.size() && j >= 0) {if(matrix[i][j] == target) return true;else if( matrix[i][j] < target) i++; //排除一行else if( matrix[i][j] > target) j--; //排除一列}return false;
}
🚩点此跳转到首行↩︎
参考博客
- 前缀和问题
- 单调队列
- 快速链表quicklist
- 《深入理解计算机系统》
- 侯捷C++全系列视频
- 待定引用
- 待定引用
- 待定引用
相关文章:

【面试HOT100】子串普通数组矩阵
系列综述: 💞目的:本系列是个人整理为了秋招面试的,整理期间苛求每个知识点,平衡理解简易度与深入程度。 🥰来源:材料主要源于LeetCodeHot100进行的,每个知识点的修正和深入主要参考…...

XPSpeak软件教程-科学指南针
在做X 射线光电子能谱(XPS)测试时,科学指南针检测平台工作人员在与很多同学沟通中了解到,好多同学仅仅是通过文献或者师兄师姐的推荐对XPS测试有了解,但是对于其软件操作还属于小白阶段,针对此,科学指南针检测平台团队…...

NLP算法面经 | 腾讯 VS 美团
作者 | 曾同学 编辑 | NewBeeNLP 面试锦囊之面经分享系列,持续更新中 后台回复『面试』加入讨论组交流噢 lz从3月初脚因打球扭伤了开始,投递简历,接二连三的面试鞭尸又面试,昨天才终于上岸了,分享经验~ 腾讯PCG看点&…...

【广州华锐互动】塔吊多人安拆VR互动培训系统
塔吊多人安拆VR互动培训系统由广州华锐互动制作,是一种基于VR技术的模拟实训系统,专门用于培训塔吊驾驶员和操作员。 在现实生活中,塔吊操作具有一定的危险性,尤其是在培训过程中容易发生意外。而使用VR互动实训系统,学…...

Linux性能优化--性能工具:特定进程内存
5.0 概述 本章介绍的工具使你能诊断应用程序与内存子系统之间的交互,该子系统由Linux内核和CPU管理。由于内存子系统的不同层次在性能上有数量级的差异,因此,修复应用程序使其有效地使用内存子系统会对程序性能产生巨大的影响。 阅读本章后&…...

MyLife - Docker安装rabbitmq
Docker安装rabbitmq 个人觉得像rabbitmq之类的基础设施在线上环境直接物理机安装使用可能会好些。但是在开发测试环境用docker容器还是比较方便的。这里学习下docker安装rabbitmq使用。 1. rabbitmq 镜像库地址 rabbitmq 镜像库地址:https://hub.docker.com/_/rabbi…...

Leetcode刷题详解——长度最小的子数组
1. 题目链接:209. 长度最小的子数组 2. 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不…...

客流人数管理新趋势:景区客流采集分析系统的功能特点
随着旅游业的蓬勃发展,越来越多的人选择前往景区进行休闲和旅游。然而,人流量的增加也给景区管理带来了一系列的挑战。为了更好地管理和运营景区,景区客流采集分析系统应运而生。 一、案例展示 二、产品卖点 该系统利用先进的人工智能算法和…...

【仙逆】王林极限跑酷,藤厉自食恶果,仙逆战斗获好评,张虎命运被改写
Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 最新一集《仙逆》已经更新,相信很多小伙伴都已经先睹为快,在击杀了白展之后,张虎和王林担心其师傅即墨老人报复,因此躲到看似安全的藤家城,以为那里有…...

想要精通算法和SQL的成长之路 - 前缀和的应用
想要精通算法和SQL的成长之路 - 前缀和的应用 前言一. 区域和检索 - 数组不可变二. 二维区域和检索 - 矩阵不可变2.1 前缀和的计算2.2 用前缀和计算二维区域和 三. 矩形区域不超过 K 的最大数值和 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 区域和检索 - 数组不可变 原…...

如何让大模型自由使用外部知识与工具
本文将分享为什么以及如何使用外部的知识和工具来增强视觉或者语言模型。 全文目录: 1. 背景介绍 OREO-LM: 用知识图谱推理来增强语言模型 REVEAL: 用多个知识库检索来预训练视觉语言模型 AVIS: 让大模型用动态树决策来调用工具 技术交流群 建了技术交流群&a…...

关注用户信息卡片
效果展示 CSS 知识点 box-shadow 属性回顾CSS 变量回顾 实现页面整体布局 <div class"card"><div class"box"><!-- 视频 --><div class"vide_box"><video src"user.mp4" type"video/mp4" aut…...

【Java基础面试十八】、说一说重写与重载的区别
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说一说重写与重载的区别…...

Linux文件管理(上)
一、VIM编辑器 1、vi概述 vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。 2、vim编辑器 Vim(Vi improved)是vi编辑器…...

docker 复习
文章目录 1. docker 基础1.1 docker 安装配置镜像加速器拉取镜像的仓库: docker 部署Mysql 镜像docker 命令的详细解释docker 常见命令docker 数据卷docker 相关命令总结 2.自定义镜像2.1 dockerfile2.2 try 构建一个Java镜像,并部署2.3 总结: 3. docker…...

React之事件机制与事件绑定
一,时间机制 是什么 React基于浏览器的事件机制自身实现了一套事件机制,包括事件注册、事件的合成、事件冒泡、事件派发等 在React中这套事件机制被称之为合成事件 合成事件(SyntheticEvent) 合成事件是 React模拟原生 DOM事…...

spark stream入门案例:netcat准实时处理wordCount(scala 编程)
目录 案例需求 代码 结果 解析 案例需求: 使用netcat工具向9999端口不断的发送数据,通过SparkStreaming读取端口数据并统计不同单词出现的次数 -- 1. Spark从socket中获取数据:一行一行的获取 -- 2. Driver程序执行时,…...

Ansible基础及模块
Ansible是一个基于Python开发的配置管理和应用部署工具,能批量配置、部署、管理上千台主机。比如以前需要切换到每个主机上执行的一或多个操作,使用Ansible只需在固定的一台Ansible控制节点上去完成所有主机的操作 Ansible是基于模块工作的,它…...

Atlassian Confluence OGNL表达式注入RCE CVE-2021-26084
影响版本 All 4.x.x versions All 5.x.x versions All 6.0.x versions All 6.1.x versions All 6.2.x versions All 6.3.x versions All 6.4.x versions All 6.5.x versions All 6.6.x versions All 6.7.x versions All 6.8.x versions All 6.9.x versions All 6.1…...

【c语言】编译链接--详解
文章目录 一.程序的翻译环境和运行环境二.翻译环境:预编译编译汇编链接(一)预编译(二)编译1)词法分析2)语法分析3)语义分析 (三)汇编(四)链接1.编…...

国家开放大学 训练题
试卷代号:2044 教育研究方法 参考试题(开卷) 一、单选题(每题5分,共25分) 1.探索性研究常采用的研究方式包括( )。 A.文献调查、经验调查、典型情况或个案分析 B.调查性研究、…...

【灵动 Mini-G0001开发板】+Keil5开发环境搭建+ST-Link/V2程序下载和仿真+4颗LED100ms闪烁。
我们拿到手里的是【灵动 Mini-G0001开发板】 如下图 我们去官网下载开发板对应资料MM32G0001官网 我们需要下载Mini—G0001开发板的库函数与例程(第一手学习资料)Keil支持包, PCB文件有需要的,可以自行下载。用户指南需要下载&a…...

同为科技(TOWE)关于风力发电雷电防护的解决方案
风能作为一种可再生清洁能源,是国家新能源发展战略的重要组成部分。我国风能开发潜力高达2.510GW以上,近年来风力发电机组逐年增加,截止到2022年,全国风电装机容量约3.5亿千瓦,同比增长16.6%。然而,由于风力…...

gorm 中的事务运用
使用背景 在编写业务代码的过程中,如果涉及到多张表的更新操作,为了确保数据的一致性,我们会在业务代码的过程中加上事务的控制,那么针对go 语言中,如果我们使用gorm框架改如何操作呢? gorm中使用事务的几种方式 方式一(业务层事务)func NewTransaction() *gorm.DB {re…...

maven 新建模块 导入后 按Ctrl 点不进新建模块pom定义
新建的ruoyi-common-mybatisplus 模块,导入一直不正常 画出的模块一直导入不进来 这是提示信息 这是正常的提示信息 加上 <version>3.6.3</version> 后,才一切正常...

idea使用debug无法启动,使用run可以启动
1、将调试断点清除 使用快捷键ctrl shift F8,将勾选的选项去除即可 2、Error running SampleApplication: Command line is too long. Shorten command line for SampleApplication or also for Spring Boot default configuration,报这种错误&#x…...

进程的虚拟地址空间
一、 对于C/C程序员,我们看到的程序中的地址,都不是物理地址,而是操作系统映射的虚拟地址/线性地址,每一个进程都映射了同样结构的虚拟地址空间,让进程以为自己在独享内存资源,下图是以Linux下32位操作系统…...

做web自动化测试遇到Chrome浏览器老是自动更新,怎么办 ? 这里提供两个解决办法 。
web自动化安装驱动安装 进行web自动化时 ,需要提前安装浏览器的驱动 ,尤其是chrome浏览器 。它的更新速度很快 ,是不是更新了新版本 。这就导致我们的驱动也要跟着变化。 1.停止自动更新 那么 ,如何关闭chrome浏览器的自动更新…...

腾讯HR面试
一、如何看待腾讯的愿景 腾讯的愿景是成为“最受尊敬的互联网企业”,这一愿景表明了腾讯的目标是成为一个在互联网领域内具有极高影响力和声誉的企业。 为了实现这一愿景,腾讯坚持以长远的眼光、诚信负责的操守、共同成长的理念来发展公司的事业。这种…...

过滤器(Filter)和拦截器(Interceptor)有什么不同?
过滤器(Filter)和拦截器(Interceptor)是用于处理请求和响应的中间件组件,但它们在实现方式和应用场景上有一些不同。 实现方式: 过滤器是Servlet规范中定义的一种组件,通常以Java类的形式实现。过滤器通过在…...