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

计算机考研复试高频五十问(第一期)

计算机考研复试高频五十问(第一期)

1. 解释什么是并发与并行,它们的区别是什么?

答案:
并发(Concurrency)指系统能够同时处理多个任务的能力,实际上这些任务可能在单个CPU核心上交替执行(时间片轮转)。
并行(Parallelism)指多个任务真正同时在多个CPU核心上同时执行。
区别:

  1. 并发是逻辑上的“同时”,并行是物理上的同时
  2. 并发通过分时复用实现,并行依赖多核硬件
  3. 例:浏览器多标签页是并发,多核CPU计算是并行

2. C语言与C++语言的区别有哪些?

答案:

维度C语言C++语言
编程范式面向过程支持面向对象和泛型编程
内存管理手动malloc/free支持new/delete和智能指针
函数特性无函数重载支持函数重载和运算符重载
标准库标准库简单STL容器/算法完备
特性扩展无类/继承/多态支持OOP四大特性

3. 解释“面向对象”编程及其四大特性

答案:
面向对象编程(OOP)是通过对象的创建与协作来设计程序的编程范式。
四大特性:

  1. 抽象(Abstraction):提取事物关键特征,隐藏实现细节
  2. 封装(Encapsulation):将数据与方法绑定,控制访问权限
  3. 继承(Inheritance):子类复用父类特性,实现代码复用
  4. 多态(Polymorphism):同一接口在不同对象产生不同行为

4. 指针在C语言中的作用及常见错误

答案:
作用:

  • 直接访问内存地址
  • 实现动态内存分配
  • 高效传递大量数据(避免值拷贝)

常见错误:

  1. 空指针解引用int *p = NULL; *p = 10;
  2. 野指针:释放内存后未置空指针(free(p);未设置p = NULL
  3. 内存泄漏:忘记释放malloc分配的内存
  4. 指针越界int arr[5]; int *p = &arr[10];

5. C++中虚函数与多态实现

答案:
虚函数:用virtual声明的成员函数,支持运行时多态。
多态实现步骤:

class Animal {  
public:  
    virtual void speak() = 0; // 虚函数  
};  
class Dog : public Animal {  
public:  
    void speak() override { cout << "Woof!"; }  
};  
// 使用  
Animal* animal = new Dog();  
animal->speak(); // 输出Woof(动态绑定)  

实现原理:通过虚函数表(vtable)在运行时确定函数地址。


6. 递归算法的优缺点及栈溢出预防

答案:
优点:

  • 代码简洁(如遍历树结构)
  • 天然适合分治问题(如汉诺塔)

缺点:

  • 栈空间消耗大,可能溢出
  • 重复计算多(如未优化的斐波那契数列)

预防栈溢出:

  1. 使用尾递归优化(需编译器支持)
  2. 改为迭代(循环)实现
  3. 限制递归深度(设置终止条件)

7. 哈希表工作原理及冲突解决

答案:
工作原理:

  1. 通过哈希函数将键(key)转换为数组索引
  2. 存储键值对到对应索引位置

冲突解决方法:

  1. 链地址法:每个桶用链表存储元素(Java HashMap使用)
  2. 开放寻址法
    • 线性探测:逐个查找空位
    • 二次探测:按平方数跳跃探测
  3. 再哈希法:使用第二个哈希函数重新计算

8. 快速排序 vs 归并排序

答案:
时间复杂度:

  • 快速排序:平均O(n log n),最差O(n²)(取决于pivot选择)
  • 归并排序:稳定O(n log n)
算法优点缺点
快速排序原地排序,缓存友好最差情况性能差
归并排序稳定排序,适合链表结构需要额外O(n)空间

9. 深度优先搜索(DFS)与广度优先搜索(BFS)

答案:
DFS:

  • 沿分支深度遍历到底再回溯
  • 实现方式:递归或显式栈
  • 适用场景:寻找所有可能解(如迷宫问题)

BFS:

  • 按层次逐层遍历所有节点
  • 实现方式:队列
  • 适用场景:最短路径问题(如社交网络关系度)

不同点:

  1. DFS可能陷入无限循环(需记录访问状态)
  2. BFS保证找到最短路径(权值相同时)

10. 链表插入节点时避免内存泄漏

答案:
正确操作步骤示例:

// 在链表中间插入新节点  
Node* insert(Node* prevNode) {  
    Node* newNode = malloc(sizeof(Node));  // 申请内存  
    if (newNode == NULL) exit(1);          // 检查分配成功  
    newNode->next = prevNode->next;        // 先连接新节点  
    prevNode->next = newNode;              // 再断开原链接  
    return newNode;  
}  

避免泄漏要点:

  1. malloc后必须对应free
  2. 修改指针前备份关键节点(防止断链)
  3. 使用valgrind等工具检测内存

11. 关系型 vs 非关系型数据库区别

答案:

类型关系型(如MySQL)非关系型(如MongoDB)
数据模型表结构/SQL文档/键值对/列存储
事务支持强ACID支持通常弱化(可配置)
扩展方式垂直扩展(更强一致性)水平扩展(更高可用性)
适用场景复杂查询/事务系统高并发/非结构化数据

12. 数据库ACID特性

答案:

  • Atomicity(原子性):事务要么全部完成,要么全部不执行(如转账时双方账户同时增减)
  • Consistency(一致性):事务执行前后数据库必须保持一致的约束(如账户余额不能为负)
  • Isolation(隔离性):并发事务相互隔离(通过锁机制实现)
  • Durability(持久性):事务提交后数据永久保存(即使系统崩溃)

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

相关文章:

  • pytorch高可用的设计策略和集成放大各自功能
  • 推荐几款优秀的PDF转电子画册的软件
  • Token相关设计
  • Oracle 数据库中的用户
  • SP导入智能材质球
  • 《OpenCV》—— dlib(换脸操作)
  • 洛谷 P2142 高精度减法(详解)c++
  • Spring Cloud Alibaba学习 4- Spring Cloud Gateway入门使用
  • 湖仓一体概述
  • React封装通用Table组件,支持搜索(多条件)、筛选、自动序号、数据量统计等功能。未采用二次封装调整灵活,包含使用文档
  • leetcode日记(77)子集Ⅱ
  • Apache IoTDB 树表双模型直播回顾(上)
  • pytest中pytest.ini文件的使用
  • python八皇后游戏
  • Java 第十一章 GUI编程(2)
  • 游戏引擎学习第135天
  • AI×电商数据API接口:深度融合,引领未来电商行业浪潮
  • docker默认网段和宿主机环境冲突时的处理
  • pytorch获取模型性能
  • 【GPU使用】如何在物理机和Docker中指定GPU进行推理和训练