笔试题总结,相关知识点总结

1.对于线性表的描述:存储空间不一定是连续,且各元素的存储顺序是任意的

2.虚函数的定义:函数的返回值参数不定,

声明: 类型,返回这类型 名字();

例如声明一个虚函数:virtual void fun();

virtual void fun(){};此为定义了一个函数

3.为了提高程序的运行速度,可将不太复杂功能的函数用内联函数实现

C++中,函数的实现有很多种,

4.setw()操作符可以对数据进行格式化输出,头文件为iomanip.h

是一个流操作符,设置输出流中下一个数据项的宽度

5.关于指针和引用的说法正确的是:

指针变量存放的是内存地址,并且可以置为0

定义引用变量时,必须同时指明具体被引用的对象或变量

使用取地址符,可以取得指针变量自身的地址,但取不到引用变量自身的地址

类中的数据成员可以是指针变量,也可以引用变量

6.关于多态性的说法:

C++语言的多态性分为编译时的多态性和运行时的多态性;

编译时的多态性可通过函数重载实现

实现运行时多态性的机制称为动态多态性

7.编译器总是能自动创建一个不带参数的构造函数

8.下列()的调用不是引用调用的

A.形参和实参都是变量

B.形参是指针,实参是地址量

C.形参是变量,实参是地址值

9.面相对象的程序设计的特征:

抽象    封装   继承    多态

10.关于for循环

for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

11.Switch 语句中的表达式可以是 int ,long ,char, unsigned int

但不能是float ,double类型

12.常成员函数使用const 申明的成员函数,在成员函数中

可以 调用const成员函数      访问类的私有成员

不能  调用非const成员函数     不能对数据成员进行更改

13.在C++中,动态联编(也称为动态绑定或运行时绑定)是指在程序运行时,根据对象的实际类型确定调用哪个版本的虚函数。要实现动态联编,必须通过基类的指针或引用来调用虚函数。这是因为基类指针可以指向任何派生类对象,并在运行时根据实际对象类型调用正确的虚函数版本

14.已知printf()函数是一个类的成员函数,它无返回值,应该书写为:

   void printf()const;

15.两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数

16.C程序必须是有一个或一个以上的函数组成,

函数调用可以作为一个独立的语句存在

若函数有返回值,必须通过return语句返回

参数的传递传递方向:只能是实参传递给形参

17.

C语言没有强制规定定义符号常量时必须使用大写字母,这只是一种比较推荐的编程习惯

18.  定义数组时需要注意

1)定义一维数组,必须显示数组的长度

2)多维数组,必须先声明其 一维的长度,其他维可稍后待定

3)采用给定初始数组,不比声明长度

4)数组运算符:[]

确定数组元素的个数

1)直接在“[]”中定义,如:int a[10];

2)赋初值 ,如int a[] = {1,2,3};

19.函数的实参可以是常量,变量,表达式,函数等,但必须是确定的值以便传给形参

20.return语句,函数只能有一个返回值,但是这个返回值可以是结构体或者一个类,而结构体和类可以中可以容纳很多信息

21.  if(a=b) x++;  语句正确,其实就是判断b的值是不是等于0,但是通常不建议这样写,容易误解,但是语法上没问题

22.构造函数知识点

有四个类型:有参数构造函数

无参数构造函数: 当没有显式调用指定形式的构造函数

复制构造函数:有复制指令

赋值构造函数:需要有赋值指令

23.友元函数     ->不属于类的成员,不可使用this关键字

使用friend关键字来声明友元

一个类的成员函数可以是另一个类的友元

友元函数访问对象的成员不受访问特性影响,可以访问私有和受保护成员对象

24.两个指针相加没有意义

25.实现运行时的多态性采用虚函数

26.函数重载:函数名相同,但参数的个数不同或者参数的类型不同

27.

i=j==0   先运算j==0,得到bool值,然后赋值给i

(char)(63+5)表示强制类型转换

28.结构体数组,结构体数组的每个元素都是一个结构体。所谓结构体数组是指数组中的每一个元素都是结构体。在实际应用中,结构体数组常被用来表示一个拥有相同数据结构的群体。每个元素的成员数值都是可变的,所以结构体数组的每个元素都是结构体变量。

29.

在类中声明的变量,属于该类,某些情况可以被所有实例共享

在面向对象编程中,类中的成员变量(也称为实例变量)是与特定对象相关联的变量。以下是对各选项的分析:
选项A:属于全局变量
•全局变量是定义在类之外的变量,可以被所有类的实例所共享。类中的成员变量不属于全局变量,故A错误。
选项B:只属于该类
•类中的成员变量确实属于该类,但它们也与该类的实例相关联,不只是属于类本身,故B错误。
选项C:属于该类,某些情况下也可被该类不同实例所共

.成员变量通常属于该类的每个实例,但在某些情况下,比如通过静态变量,可以被该类的所有实例共享,故C正确。
选项D:任何情况下都可被该类所有实例共享.普通成员变量(非静态变量)是与特定对象相关联的,不能被所有实例共享。只有静态变量才能被所有实例共享

30.  关于this指针

在C++中,this指针是一个隐含在每个非静态成员函数中的指针,它指向调用该成员函数的对象。以下是对各个选项的分析:
•选项A:this指针是隐含在非静态成员函数中的,不需要显式声明,因此说this指针必须显示说明是错误的。
选项B:当创建一个对象后,this指针就指向该对象,这个说法是正确的,因为this指针总是指向调用成员函数的对象。
•选项C:成员函数拥有this指针,这个说法是正确的,因为非静态成员函数都隐含一个this指针。
,选项D:静态成员函数不拥有this指针,这个说法也是正确的,因为静态成员函数不属于任何对象实例,因此没有this指针

31.

1. 同步 (Synchronous)

定义
同步是指在进程或线程之间的操作是相互协调的,一个进程或线程在执行某些操作时,必须等待另一个进程或线程完成其操作才能继续进行。同步确保了在共享资源时的数据一致性和完整性。

特征

  • 阻塞:在同步操作中,执行线程会被阻塞,直到某个条件满足(例如,另一个进程完成其任务)。
  • 数据一致性:通过同步,保证了在对共享数据进行读写时的安全性,避免数据冲突。
  • 实现方式
    • 信号量(Semaphore):一种计数器,控制对共享资源的访问。
    • 互斥锁(Mutex):确保在同一时刻只有一个线程可以访问某个资源。
    • 条件变量(Condition Variable):使线程能够在某个条件下等待或被唤醒。

应用场景

  • 多线程编程中,当多个线程需要访问共享数据结构时(如数据库、文件等)。
  • 在生产者-消费者模型中,确保生产者和消费者之间的协调。

2. 异步 (Asynchronous)

定义
异步则是指进程或线程之间的操作是相对独立的,一个进程或线程的执行不需要等待另一个进程或线程完成。异步操作允许程序继续执行而不被阻塞。

特征

  • 非阻塞:异步操作不会导致执行线程的阻塞,线程可以继续执行其他任务。
  • 提高效率:异步编程可以提高应用程序的性能,特别是在 I/O 操作中,例如网络请求和文件读写等。
  • 实现方式
    • 回调函数(Callback):异步操作完成后会调用特定的函数处理结果。
    • 事件循环(Event Loop):通过监控事件,处理完成的异步操作。
    • Promise/Future:用于表示异步操作的结果,提供链式调用的方法。

应用场景

  • Web 开发中,常使用异步操作处理网络请求,防止用户界面阻塞。
  • 在 Node.js 中,广泛使用异步编程模型来处理 I/O 密集型任务。

总结

  • 选择使用同步或异步:在设计并发系统时,需要根据具体需求选择使用同步还是异步。

    • 当需要确保数据一致性和完整性时,优先考虑同步。
    • 当需要提高性能和响应速度时,可以考虑异步。
  • 实际应用:现代编程语言和框架(如 Java 的 CompletableFuture,Python 的 asyncio,JavaScript 的 Promise 等)都提供了支持同步和异步操作的丰富工具,开发者可以根据具体的场景和需求选择合适的方法。

通过了解同步和异步的特点和应用场景,开发者可以更有效地管理进程间的交互,从而提高程序的效率和可靠性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值