当前位置: 首页 > article >正文

【模拟面试】计算机考研复试集训(第二天)

文章目录

  • 前言
  • 一、专业面试
      • 1、OSI 参考模型和 TCP/IP 模型的主要区别是什么?简述各层功能
      • 2、什么是瀑布模型?其优缺点是什么?
      • 3、什么是递归?使用时需注意什么?
      • 4、监督学习与无监督学习的核心区别是什么?请举例说明典型算法
      • 5、你在项目中遇到过哪些技术挑战?是如何解决的?
  • 二、英文口语
      • 1、Can you tell us about a time you worked in a team and faced challenges? How did you handle it?
      • 2、Explain the term 'Big O Notation' in algorithm analysis.
  • 三、算法上机
      • 1、倒序输出一个四位整数
      • 2、提取字符串中的数字


前言

今天是模拟面试系列第二天,为大家精心准备了 5 道经典面试题、2 道英文口语题和 2 道算法题上机题,涵盖复试中常见的考察点,助你从容应对考官提问!

一、专业面试

1、OSI 参考模型和 TCP/IP 模型的主要区别是什么?简述各层功能

OSI 模型分为 7 层:

  • 物理层(传输比特流)
  • 数据链路层(帧传输)
  • 网络层(IP寻址与路由)
  • 传输层(端到端通信)
  • 会话层(会话管理)
  • 表示层(数据格式转换)
  • 应用层(网络服务)。

TCP/IP 模型分为 4 层:

  • 网络接口层(对应 OSI 物理 + 数据链路层)
  • 网际层(IP 协议)
  • 传输层(TCP/UDP)
  • 应用层(HTTP/FTP 等)。

主要区别 :

  • OSI 强调理论分层,TCP/IP 注重实用;
  • OSI有 7 层,TCP/IP 合并为 4 层;
  • TCP/IP 是实际应用的标准,OSI 是理论框架。

在这里插入图片描述

2、什么是瀑布模型?其优缺点是什么?

定义 :瀑布模型是线性开发模型,分为:需求分析 → 系统设计 → 编码 → 测试 → 维护,阶段间严格顺序且文档驱动。

优点 :流程清晰,易于管理;文档规范,适合需求明确的项目。

缺点 :难以应对需求变更;测试阶段晚,早期问题难以发现;不适合复杂或需求模糊的项目。

3、什么是递归?使用时需注意什么?

定义 :递归是函数直接或间接调用自身,需满足递归边界 (终止条件)和递归公式 (分解子问题)。

注意事项 :栈溢出风险(递归深度过大);重复计算问题(需优化,如记忆化)。

4、监督学习与无监督学习的核心区别是什么?请举例说明典型算法

核心区别 :

  • 监督学习:数据包含输入特征(X)和对应标签(Y),模型学习从 X 到 Y 的映射关系。
    • 目标:预测或分类(如房价预测、垃圾邮件分类)。
  • 无监督学习:数据仅有输入特征(X),无标签信息,模型通过数据内在结构进行学习。
    • 目标:聚类、降维或生成(如客户分群、数据压缩)。

典型算法举例 :

  • 无监督学习:K-means(聚类)、PCA(降维)、自编码器(生成)。
  • 监督学习:线性回归(回归任务)、逻辑回归(分类任务)、支持向量机(SVM)、决策树。

5、你在项目中遇到过哪些技术挑战?是如何解决的?

在开发XX项目时,我遇到了XX问题(如性能瓶颈、兼容性问题)。

首先,我通过查阅文档/调试日志/团队讨论定位到根本原因(如数据库查询效率低)。

然后,我尝试了XX方法(如添加索引、优化算法),并通过A/B测试验证效果。

最终,系统性能提升了XX%,并总结出XX经验(如提前性能测试的重要性)。

二、英文口语

1、Can you tell us about a time you worked in a team and faced challenges? How did you handle it?

您能否跟我们讲讲您曾身处团队之中并遭遇挑战的经历?您又是如何应对的?

“During a group project at university, our team had conflicting ideas about the project direction. I facilitated a discussion to ensure everyone’s opinions were heard, and we eventually reached a consensus by combining the best aspects of each idea. This experience taught me the importance of communication and collaboration in teamwork.”
 
“在大学的一个小组项目中,我们对项目方向有分歧。我组织了一次讨论,确保每个人的意见都被听到,最终我们结合了各自想法中的优点达成共识。这次经历让我认识到沟通和协作在团队合作中的重要性。”

2、Explain the term ‘Big O Notation’ in algorithm analysis.

解释算法分析中 “大 O 表示法” 这一术语。

“Big O Notation is a mathematical concept used to describe the performance or complexity of an algorithm. It represents the worst-case scenario of how the runtime or space requirements grow as the input size increases. For example, O(n) means the algorithm’s complexity grows linearly with the input size.”
 
“Big O Notation 是一种用于描述算法性能或复杂性的数学概念。它表示算法在最坏情况下,运行时间或空间需求随输入规模增长的变化趋势。例如,O(n) 表示算法的复杂度随输入规模线性增长。”

三、算法上机

1、倒序输出一个四位整数

输入一个四位正整数,然后按数字的相反次序输出。

如:输入 9187,则输出 7819;

又如:若输入为 7000,则输出为 0007。

要求:只能用一个整型变量接收键盘输入。

代码实现

#include <bits/stdc++.h>
#include <algorithm>

using namespace std;

int reverseN(int n) {
	// 非法检测
	if (n < 1000 || n > 9999) {
		return 0;
	}
	
	// result 用于存储反转后的结果,p 是权重(初始为 1000)
	int result = 0, p = 1000;
	for (int i = 0; i < 4; i++) {
		result += n % 10 * p; // 将 n 的最后一位乘以权重 p,加到 result 中
		p /= 10;  // 权重 p 缩小 10 倍             
		n /= 10;  // 去掉 n 的最后一位
	}
	return result;
}
                          
int main()
{
	int n;
	scanf("%d", &n);
	
	int ret = reverseN(n);
	
	printf("%04d", ret);
	
	return 0;
}

循环 4 次(因为 n 是 4 位数):

  • n % 10 获取 n 的最后一位数字。
  • n % 10 * p 将最后一位数字乘以权重 p,得到该数字在反转后的位置。
  • 将结果加到 result 中。
  • p /= 10 将权重缩小 10 倍(从千位到百位、十位、个位)。
  • n /= 10 去掉 n 的最后一位。

2、提取字符串中的数字

输入一个字符串,内有数字和非数字字符,如:b56x6g*6454er790v,将其中连续的数字作为一个长整型数依次存入数组 a 中,例如:56 存入 a[0] 中,6 存入 a[1] 中,6454 存入 a[2] 中,统计共有多少个整数,并通过数组 a 输出这些整数。(假设连续的数字作成的长整型数不存在溢出情况)。

注:若字符串中存在字符 -(减号),且其后为数字,则该数字应看作负数。

代码实现

#include <bits/stdc++.h>
#include <string.h>
#include <stdlib.h>
using namespace std;

int func(char str[], long int arr[]) {
	int len = strlen(str); // 获取字符串长度
	int cnt = 0, temp = 0, index = 0; // cnt: 当前数字字符个数,temp: 当前数字的值,index: arr 的索引
	int op; // 用于判断是否有负号
	
	for (int i = 0; i < len; i++) {
		if (str[i] == '-') 
			op = i; // 记录负号的位置
		
		if (str[i] >= '0' && str[i] <= '9') { // 如果当前字符是数字
			temp = temp * 10 + str[i] - '0'; // 将字符转换为数字并累加
			cnt++; // 数字字符个数加 1
			
			// 如果下一个字符不是数字,则当前数字结束
			if (!(str[i+1] >= '0' && str[i+1] <= '9')) {
				arr[index] = temp; // 将当前数字存入数组
				if (op == i - cnt) // 如果负号在当前数字的前面
					arr[index] = -arr[index]; // 将数字变为负数
				temp = 0;
				index++;
				cnt = 0;
			}
		}
	} 
	
	return index;
}
               
int main()
{
	char str[256];
	scanf("%s", str);
	long int arr[100];
	
	int n = func(str, arr);
	
	for (int i = 0; i < n; i++) 
		printf("%ld ", arr[i]);
	
	return 0;
}

遍历字符串:

  • 如果当前字符是负号 -,记录其位置到 op
  • 如果当前字符是数字:
    • 将字符转换为数字并累加到 temp
    • 如果下一个字符不是数字,则当前数字结束:
      • temp 存入数组 arr
      • 如果负号在当前数字的前面,则将数字变为负数。
      • 重置 tempcnt,并增加 index

http://www.kler.cn/a/584927.html

相关文章:

  • Netlify部署vue/react项目,在页面刷新时呈现404解决办法
  • Java常见文件操作及分块传输
  • CI/CD—GitLab钩子触发Jenkins自动构建项目
  • 某银行 U位资产管理系统安全合规整改项目案例及分析
  • Penguins“Collect to Earn”新标杆,开启Web3.0与AI融合未来
  • kkFileView文件预览组件部署说明
  • Trae与Builder模式初体验
  • 基于异构特征融合与轻量级集成学习的软件漏洞挖掘方案设计与Python实现
  • maxkb安装部署
  • Zookeeper与Kafka学习笔记
  • 面试高频#LeetCode#Hot100-字母异位词分组
  • docker拉取 sentinel 并启动
  • 技术聚焦:Debezium 如何将数据库数据精准注入 Kafka
  • 探索移动端开发新可能: Android Termux环境下部署MariaDB数据库
  • 智慧锂电:开启能源新时代的钥匙
  • Web网页制作之爱家居的设计(静态网页)
  • springboot3 webflux
  • 前端构建工具进化论:从Grunt到Turbopack的十年征程
  • ChromeOS 133 版本更新
  • 游戏引擎学习第156天