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

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

文章目录

  • 前言
  • 一、专业面试
      • 1、如何实现一个单链表的反转?请描述具体步骤并说明时间复杂度。
      • 2、TCP三次握手的目的是什么?如果第三次握手丢失,客户端和服务端会如何处理?
      • 3、什么是操作系统的页面置换算法?请对比 LRU 和 FIFO 的优缺点。
      • 4、为什么深度神经网络中需要使用激活函数?如果全部使用线性激活函数会有什么问题?
      • 5、你提到自己曾参与过多个项目,但简历中某个项目的成果描述较为简略。如果导师追问“这个项目的难点是什么?你具体解决了哪些问题?”,而实际工作中你只是边缘参与者,你要怎么作答?
      • 6、如果面试中导师质疑你的跨专业背景,认为你缺乏核心课程基础(如计算机跨考者被问“为何选择计算机?你如何弥补编程短板?”),你会如何回应?
  • 二、英文口语
      • 1、Why did you choose our university for graduate studies? How does it align with your career goals?
      • 2、Describe a time you faced a significant challenge in a team project. How did you resolve it, and what did you learn?
  • 三、算法上机
      • 1、删除链表中重复的值
      • 2、查找元素
      • 3、判断回文串


前言

今天是模拟面试系列第七天,为大家精心准备了 4 道专业课面试题,2 道综合面试题,2 道英语口语题,2 道算法上机题。

涵盖复试中常见的考察点,助你从容应对考官提问!

一、专业面试

1、如何实现一个单链表的反转?请描述具体步骤并说明时间复杂度。

单链表反转的核心是通过调整节点的指针方向来实现。具体步骤如下:

  • 首先初始化三个指针,pre 指向空,cur 指向头节点,next 用于保存后续节点。
  • 遍历链表时,将 cur 的 next 指针指向 pre,然后 pre 和 cur 依次向后移动,直到 cur 为空。
  • 此时 pre 指向新的头节点。

这一过程需要遍历整个链表,时间复杂度为 O ( n ) O(n) O(n),其中 n 为链表长度。

2、TCP三次握手的目的是什么?如果第三次握手丢失,客户端和服务端会如何处理?

TCP 三次握手的目的是建立可靠的双向连接,并协商初始序列号以保证数据传输的正确性。

第一次握手客户端发送 SYN 报文,服务端收到后回复 SYN-ACK(第二次握手),第三次握手客户端发送 ACK 确认。

若第三次握手的 ACK 丢失,服务端会因未收到确认而超时重传 SYN-ACK,而客户端由于已发送 ACK 并认为连接已建立,会直接进入 ESTABLISHED 状态。此时服务端的重传机制会持续发送 SYN-ACK,直到收到客户端的 ACK 或达到最大重传次数。

这种设计确保了即使网络丢包,双方仍能通过重传机制最终建立连接。

3、什么是操作系统的页面置换算法?请对比 LRU 和 FIFO 的优缺点。

页面置换算法用于在内存不足时选择被淘汰的页面。

LRU(最近最少使用)算法基于时间局部性,优先淘汰最久未被访问的页面,能较好适应实际程序的访问模式,但需要维护访问时间戳或链表,硬件开销较大。

FIFO(先进先出)算法按页面进入内存的顺序淘汰,实现简单但可能误删频繁使用的页面(如循环访问固定内存块时)。

例如,若页面访问序列为1→2→3→4→1,FIFO会淘汰1(第一次进入的页面),而 LRU 会淘汰 4(最近未被访问)。LRU 的性能通常优于 FIFO,但需权衡实现复杂度。

4、为什么深度神经网络中需要使用激活函数?如果全部使用线性激活函数会有什么问题?

激活函数为神经网络引入非线性,使其能够拟合复杂的数据分布。若所有激活函数均为线性,无论网络有多少层,其整体表达能力仅等价于一个线性变换,无法解决非线性问题(如异或分类)。

例如,多层线性变换的组合仍可简化为单层线性模型,导致网络失去深度意义。非线性激活函数(如ReLU、Sigmoid)通过改变输入信号的分布,使网络能够学习分层特征。

此外,激活函数的设计还需考虑梯度消失或爆炸问题,例如 Sigmoid 在两端导数趋近于 0 可能导致训练困难,而 ReLU 通过单侧抑制缓解了这一问题,但可能引发“死亡神经元”现象。

5、你提到自己曾参与过多个项目,但简历中某个项目的成果描述较为简略。如果导师追问“这个项目的难点是什么?你具体解决了哪些问题?”,而实际工作中你只是边缘参与者,你要怎么作答?

我会先坦诚说明自己在项目中的角色,但重点突出从中学到的内容。

例如:“虽然我主要负责基础功能实现,但在与团队协作过程中,我深入理解了项目的核心架构。例如,在解决数据接口延迟问题时,我通过查阅文档和调试日志,协助定位了缓存失效的逻辑漏洞。尽管贡献有限,但这段经历让我认识到技术细节的重要性,并促使我系统学习分布式系统知识。"

6、如果面试中导师质疑你的跨专业背景,认为你缺乏核心课程基础(如计算机跨考者被问“为何选择计算机?你如何弥补编程短板?”),你会如何回应?

我会结合个人兴趣与实际准备展开:

“我的本科专业让我掌握了扎实的数学建模能力,但参与科创项目时,我发现计算机技术能更直接地实现我的设计构想。过去一年,我通过在线课程完成了数据结构与算法、操作系统等核心课程学习,并在GitHub上开源了两个小型项目。

例如,我用 Python 实现的分布式爬虫通过多线程优化,效率提升了 40%。这些经历让我确信,跨专业不是短板,而是融合不同领域优势的机会。”

二、英文口语

1、Why did you choose our university for graduate studies? How does it align with your career goals?

您为何选择我们这所大学进行研究生阶段的学习?这与您的职业规划有何契合之处?

I chose your university because of its strong reputation in [specific field, e.g., computer science, AI, etc.] and its cutting-edge research facilities. The program aligns perfectly with my career goals, as it offers specialized courses and opportunities to work with renowned faculty, which will help me develop the skills and knowledge needed to achieve my ambition of [specific career goal, e.g., becoming a researcher in AI or contributing to innovative technologies].
 
我选择贵校是因为贵校在[具体领域,如计算机科学、人工智能等]的卓越声誉和先进的研究设施。该项目与我的职业目标高度契合,因为它提供了专业课程和与知名教授合作的机会,这将帮助我发展实现职业抱负所需的技能和知识,例如[具体职业目标,如成为人工智能研究员或为创新技术做出贡献]。

2、Describe a time you faced a significant challenge in a team project. How did you resolve it, and what did you learn?

描述一次你在团队项目中遭遇重大挑战的经历。你是如何解决这一难题的?又从中获得了怎样的感悟?

During a team project, we faced a tight deadline and conflicting ideas among team members. I took the initiative to organize a meeting, clearly assigned tasks based on each member’s strengths, and set smaller milestones to track progress. By fostering open communication and collaboration, we successfully completed the project on time. I learned the importance of clear communication, adaptability, and leveraging team strengths to overcome challenges.
 
在一次团队项目中,我们面临紧迫的截止日期和团队成员之间的意见分歧。我主动组织会议,根据每个人的优势明确分配任务,并设定了较小的里程碑以跟踪进展。通过促进开放的沟通和协作,我们成功按时完成了项目。我学到了清晰沟通、灵活应变以及利用团队优势克服挑战的重要性。

三、算法上机

1、删除链表中重复的值

有一个单链表,其结点的元素值以非递减有序排列,编写一个函数删除该单链表中多余的元素值相同的
结点。

代码实现

#include <bits/stdc++.h>

using namespace std;

typedef struct node {
	int data;
	struct node* next;
}LNode, *LinkList;

// 单链表不带头 
void DeleteList(LinkList head) {
	if (head == NULL || head->next == NULL)
		return;
	LNode* cur = head;
	LNode* aux = head->next;
	while (aux) {
		if (cur->data == aux->data) {
			cur->next = aux->next;
			free(aux);
		}
		aux = cur->next;
		if (aux == NULL)
			break;
		if (cur->data != aux->data) {
			cur = cur->next;
			aux = aux->next;
		}
		
	}
}

2、查找元素

编写一个程序,实现的功能是:首先从键盘的终端上输入 10 个数存放于数组 a 中,然后输入一个数
x,并查找 x 是否在数组中,若在数组中,则输出在数组中的元素序号,否则给出未查找到的信息。

要求查找过程用函数来实现。

代码实现

#include <bits/stdc++.h>

using namespace std;

int func(int arr[], int x) {
	for (int i = 0; i < 10; i++) {
		if (arr[i] == x)
			return i + 1;
	}
}

int main() {
	int arr[10];
	for (int i = 0; i < 10; i++) 
		scanf("%d", &arr[i]);
	
	int x;
	scanf("%d", &x);
	int ret = func(arr, x);
	
	printf("%d", ret);
	return 0;
} 

3、判断回文串

假设称正读和反读都是相同的字符序列为 “回文”。

例如 “abba” 和 “abcba” 是回文,"abcde"和"ababab"则不是回文。

试写一个算法判别读入的一个以 ‘@’ 为结束符的字符序列是否为回文。

代码实现

#include <bits/stdc++.h>

using namespace std;

int func(char str[]) {
	int len = strlen(str);
	int flag = 1; // 假设是回文
	for (int i = 0; i < len; i++) {
		if (str[i] != str[len - 1 - i]) { // 比较对称位置的字符
			return 0; // 如果不等,则不是回文
		}
	} 
	return 1;
}

int main() {
	char str[105];
	int len = 0;
	while (1) {
		char ch = getchar();
		if (ch == '@')
			break;
		str[len++] = ch;
	}
	str[len] = '\0'; // 在字符序列末尾添加字符串结束符
	
	int ret = func(str);
	
	if (ret)
		cout << "是回文:" << str << endl;
	else
		cout << "不是回文:" << str << endl;
	
	return 0;
} 

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

相关文章:

  • Jvm运行时数据区有哪些
  • ubuntu升级后网卡不可用,提示*-network UNCLAIMED
  • 【redis】在 Spring中操作 Redis
  • docker学习整理
  • 早餐 3.20
  • AI时代,谁能拯救后端开发
  • AI时代API安全挑战加剧,解读API防护的最佳方案
  • sqli-labs学习笔记
  • Redis哨兵模式-黑马学习笔记
  • 如何避免Bug跟踪系统混乱
  • 【分布式锁通关指南 08】源码剖析redisson可重入锁之释放及阻塞与非阻塞获取
  • 【保姆级】阿里云codeup配置Git的CI/CD步骤
  • 【软件工程】综合应用题
  • Apache SeaTunnel脚本升级及参数调优实战
  • 智能护栏报警系统提升高速公路安全
  • 无人机智能控制系统未来技术发展分析
  • Docker DockerFile和Django最佳实践
  • VSTO(C#)Excel开发11:自定义任务窗格与多个工作簿
  • uniapp中的路由、本地存储与网络请求
  • C# 获取Type对象的方式