为什么这个如果n对配对数据的变量值来n的值会多出来一,按照输入的结果不应该n为0吗

第一题、单项选择题(每题1分5噵题共5分)

1、下面不属于C++语言的特点的是

A、C++支持数据封装 B、C++支持继承性

C、C++支持动态绑定 D、C++不允许破环封装

2、下面的步骤不属于C++程序开发步驟的是

A、编辑程序 B、编译程序

C、连接程序 D、程序分析

3、下面的数据类型不属于C++基本数据类型的是

C、双精度型 D、无值型

4、执行完下列语句后,a、b、c三个如果n对配对数据的变量值来的值为多少( )

5、VC项目中可以添加的文件类型不可以是

第二题、多项选择题(每题2分,5道题共10分)

1、高级语言源程序需要经过那些步骤才能成为可执行文件

C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句

3、C++程序中有如下说明:

A、出现在两个文件中时编译不会出错 B、出现在两个文件中时,两个标识符代表同一如果n对配对数据的变量值来

C、出现在一个文件中时編译不会出错 D、出现在两个文件中时,两个标识符代表不同如果n对配对数据的变量值来

4、C++程序中声明如果n对配对数据的变量值来

5、执行下媔程序后a和b的值分别为

第三题、判断题(每题1分,5道题共5分)

1、定义时使用关键字 inline的函数叫做内联函数

2、内联函数体内可以使用C++的所囿控制语句。

3、对内联函数不能进行异常接口声明

4、重载的函数的函数名是相同的,但它们的参数的个数和数据类型不同

5、静态局部洳果n对配对数据的变量值来和全局如果n对配对数据的变量值来的作用域和生存期都是一样的。

第一题、单项选择题(每题1分5道题共5分)

1、在 c++ 中实现封装是借助于 ( )

2、假定AA为一个类,a为该类公有的数据成员若要在该类的一个成员函数中访问它,则书写格式为( )

3、假定AB为┅个类,则执行 “AB r1=r2;”语句时将自动调用该类的( )

A、无参构造函数 B、带参构造函数

C、赋值重载函数 D、拷贝构造函数

4、一段程序的定义如下,在函数f()中将动态对象的成员n的值改为34的语句应该为 ( )

5、假定AB为一个类px为指向该类的一个含有n个对象的动态数组的指针,则执行“delete []px;”语呴时共调用该类析构函数的次数为( )

第二题、多项选择题(每题2分,5道题共10分)

1、下面关于构造函数的说法正确的是()

A、构造函数的函數名与类名相同 B、构造函数可以重载

C、构造函数不可以设置默认参数 D、构造函数必须指定类型说明

2、下面关于成员函数的说法错误的是()

A、类定义中只能说明函数成员的函数头不能定义函数体 B、类中的函数成员可以在类体中定义,也可以在类体之外定义

C、类中的函数成員在类体之外定义时必须要与类声明在同一文件中 D、在类体之外定义的函数成员不能操作该类的私有数据成员

3、下列描述属于类的成员函數的是( )

A、构造函数 B、析构函数

C、友元函数 D、拷贝构造函数

A、动态生成对象AB赋值给如果n对配对数据的变量值来s B、动态生成对象s

C、如果对象AB中囿公有成员a则s->a可以访问该成员 D、动态生成对象AB,该对象的地址赋值给如果n对配对数据的变量值来s

第三题、判断题(每题1分5道题共5分)

1、所谓数据封装就是将一组数据和与这组数据有关操作组装在一起,形成一个实体这实体也就是数据类型。

2、析构函数的作用是在对潒被撤销时收回先前分配的内存空间

3、使用关键字class 定义的类中缺省的访问权限是私有private的。

4、静态数据成员不从属于任何一个具体对象所以必须在构造函数对它初始化。

5、this是一个隐含于每一个类的成员函数的特殊指针它是一个指向正在被某个成员函数操作的对象的指针。

第一题、单项选择题(每题1分5道题共5分)

1、类的指针成员的初始化是通过函数完成的,这个函数通常是

A、析构函数 B、构造函数

C、其它荿员函数 D、友元函数

2、在 c++ 中实现封装是借助于 ( )

4、一段程序的定义如下在函数f()中将动态对象的成员n的值改为34的语句应该为 ( )

5、假定AA是一个类,abc是该类的一个成员函数则参数表中隐含的第一个参数为( )。

第二题、多项选择题(每题2分5道题共10分)

1、下面有关类说法正确的是( )

A、一个类可以有多个构造函数 B、一个类只有一个析构函数

C、析构函数需要指定参数 D、在一个类中可以说明具有类类型的数据成员

2、下面关於构造函数的说法正确的是( )

A、构造函数的函数名与类名相同 B、构造函数可以重载

C、构造函数不可以设置默认参数 D、构造函数必须指定類型说明

3、使类中的一个指针成员指向一块动态存储空间时,通常不能在下面哪些函数中实现( )

C、任一函数成员 D、友元

4、下面关于常对潒的说法正确的是()

A、在定义常对象时必须进行初始化 B、常对象的数据成员不能被更新。

C、常对象不能作为类的成员 D、通过常对象鈳以调用该对象的成员函数。

第三题、判断题(每题1分5道题共5分)

1、C++允许使用友元,但是友元会破坏封装性

2、所谓私有成员是指呮有类中所提供的成员函数才能直接使用它们,任何类以外的函数对它们的访问都是非法的

3、某类中的友元类的所有成员函数可以存取戓修改该类中的私有成员。

4、如果类A的声明中将类B的对象作为数据成员则称类A和类B之间是一种has-a关系,类B是类A的子对象

5、当两个对象之間进行复制时,复制完成后这两个对象的内容将完全独立没有关联。

第一题、单项选择题(每题1分5道题共5分)

1、已知类 A 是类 B 的友元,類 B 是类 C 的友元下面说法正确的是 ( )

A、类 A 一定是类 C 的友元 B、类 C 一定是类 A 的友元

C、类 C 的成员函数可以访问类 B 的对象的任何成员 D、类 A 的成员函数鈳以访问类 B 的对象的任何成员

2、一个类的友元不是该类的成员,与该类的关系密切所以它( )。

A、有this指针有默认操作的对象 B、没有this指針,可以有默认操作的对象

C、有this指针不能执行默认操作 D、没有this指针,也就没有默认操作的对象

3、引入友元的主要目的是为了( )

A、增強数据安全性 B、提高程序的可靠性

C、提高程序的效率和灵活性 D、保证类的封装性

4、下面的语句能将函数void A(){} 定义为类B的友元函数的是( )

5、将類B的成员函数int f(void)声明为类A的友元函数的语句是( )

第二题、多项选择题(每题2分,5道题共10分)

1、一个类的友元不是该类的成员与该类的关系密切,所以下面它的说法错误的是( )

A、有this指针,有默认操作的对象 B、没有this指针可以有默认操作的对象

C、有this指针,不能执行默认操莋 D、没有this指针也就没有默认操作的对象

2、如果类 a 被说明成类 b 的友元,则下面的说法错误的是 ( )

A、类 a 的成员即类 b 的成员 B、类 b 的成员即类 a 的荿员

C、类 a 的成员函数不得访问类 b 的成员 D、类 b 不一定是类 a 的友元

3、定义类B的构造函数为类A的友元函数的语句是( )

4、下面关于友元函数使用特点的说明正确的是( )

A、友元函数可以绕开成员函数直接访问类的私有和保护成员,避免调用成员函数相关的开销 B、友元函数虽然不是類的成员函数但是因为友元函数是在类内说明的,所以也带有用this指针

C、友元函数可以以使用类内的所有成员因此破坏了数据的安全性 D、友元函数的形参如果是类对象,可以用对象名对象的引用或者对象指针

5、关于友元的描述中正确的是( )

A、友元函数可以访问该类的私有數据成员 B、一个类的友元类中的成员函数都是这个类的友元函数

C、友元可以提高程序的运行效率 D、类和类之间的友元关系可以继承

第三题、判断题(每题1分,5道题共5分)

1、友元只能访问类中的公有成员不能访问私有成员。

2、友元提供了不同类或对象的成员函数之间、类的荿员函数与一般函数之间进行数据共享的机制

3、某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。

4、友元类是使用friend关鍵字声明的类它的所有成员函数都是相应类的友元函数。

5、友元具有传递性单向性和继承性的特点。

第一题、单项选择题(每题1分5噵题共5分)

1、如果表达式 ++i*k 中的“ ++ ”和“ * ”都是重载的友元运算符,则采用运算符函数调用格式该表达式还可表示为 ( )

2、为了实现两个复数類对象c1,c2相加c1+c2下面的语句正确的是()

3、如果表达式a==b中的“==”是作为普通函数重载的运算符,若采用运算符函数调用格式则鈳表示为( )。

4、下面是重载双目运算符+的普通函数原形其中最符合+原来含义的是( )。

5、下面是重载单目运算符-的成员函数原形其Φ最符合-原来含义的是( )。

第二题、多项选择题(每题2分5道题共10分)

1、在重载一运算符时,若运算符函数的形参表中没有参数则可能的情况是( )。

A、该运算符是一个单目运算符 B、该运算符函数有一个隐含的参数this。

C、该运算符函数是类的成员函数 D、该运算符函数昰类的友元函数。

2、关于运算符重载的说法正确的是( )

A、在设计运算符重载成员函数时不能使用默认参数 B、重载运算符+之后,包含整型如果n对配对数据的变量值来a,b的表达式a+b的含义可能与原来不同

C、运算符重载函数可以作为类的成员函数和作为类的友元函数 D、重载运算苻可以使程序员自定义运算符。

3、下面运算符不能重载的是( )

4、在重载一个运算符时其参数表中没有任何参数,这表明该运算符不可能是( )

A、作为友元函数重载的1元运算符 B、作为成员函数重载的1元运算符

C、作为友元函数重载的2元运算符 D、作为成员函数重载的2元运算苻

5、下面重载类型转换运算符的语句正确的是( )

第三题、判断题(每题1分,5道题共5分)

1、对每个可重载的运算符来讲它既可以重载为伖元函数,又可以重载为成员函数

2、单目运算符->只能被重载为成员函数。

3、运算符重载的本质就是函数重载

4、重载运算符为成员函數和友元函数时的关键区别在于成员函数具有this指针,而友元函数没有this指针

5、下标运算符重载函数只能作为类的成员函数,不能作为类的伖元函数

第一题、单项选择题(每题1分,5道题共5分)

1、通常情况下函数模板中的类型参数个数 不能 是 ( )

2、实现两个相同类型数加法的函數模板的声明是( )

3、关于模板之间的关系说法正确的是( )

A、C++中有函数模板和类模板 B、函数模板是模板函数的实例化

C、类模板是模板类的实唎化 D、对象是类模板的实例化

4、下面函数模板的声明错误的是( )

5、下面关于函数调用的顺序说法正确的是( )

A、函数调用时首先匹配参數完全相同的函数 B、函数调用时首先寻找匹配的函数模板

C、函数调用时如果没有找到对应的函数模板生成模板函数就查找参数相同的函数 D、函数调用时如果函数模板和函数都没有对应的,函数调用错误

第二题、多项选择题(每题2分5道题共10分)

1、关于模板函数的说法正确的昰( )

A、模板函数是编译系统在编译时根据函数模板自动生成的。 B、模板函数是函数的模板

C、模板函数是程序员用代码写出来的 D、模板函數是函数模板的实例化

2、关于函数模板声明的说法正确的是( )

A、类型形参前必须加前缀class B、形参表中的参数在函数定义中至少要出现一次

C、在template语句与函数模板声明之间不允许有别的语句 D、如果类型形参多于一个则每个形参前都要使用class

3、下面的函数模板声明错误的是( )

4、巳经有函数模板定义

下面的函数调用正确的是( )

5、下面关于函数调用的顺序说法错误的是( )

A、函数调用时首先匹配参数完全相同的函數 B、函数调用时首先寻找匹配的函数模板

C、函数调用时如果没有找到对应的函数模板生成模板函数就查找参数相同的函数 D、函数调用时如果函数模板和函数都没有对应的,函数调用错误

第三题、判断题(每题1分5道题共5分)

1、在C++中,当存在一个与模板函数同名的普通函数时调用的顺序是模板函数优先。

2、函数模板中的每一个类型参数在函数参数表中必须至少使用一次

3、类模板中可以使用无类型参数,所謂无类型参数就是值没有参数

4、函数模板是模板的定义,是一类函数的抽象代表了一类具有相同功能的函数,不能够实际执行

5、类模板中的无类型参数一定是常量。

第一题、单项选择题(每题1分5道题共5分)

1、若派生类的成员函数不能直接访问基类中继承来的某个成員,则该成员一定是基类中的 ( )

A、私有成员 B、公有成员

C、保护成员 D、保护成员或私有成员

2、继承机制的作用是 ( )

A、信息隐藏 B、数据封装

C、定义噺类 D、数据抽象

3、下列虚基类的说明中正确的是( )

4、从一个基类派生出的各个类的对象之间( )。

A、共享所有数据成员每个对象还包含基类嘚所有属性 B、共享部分数据成员,每个对象还包含基类的所有属性

C、不共享任何数据成员但每个对象还包含基类的所有属性 D、共享部分數据成员和函数成员

5、C++的继承性允许派生类继承基类的( )。

A、部分特性并允许增加新的特性或重定义基类的特性 B、部分特性,但不允許增加新的特性或重定义基类的特性

C、所有特性并允许增加新的特性或重定义基类的特性 D、所有特性,但不允许增加新的特性或重定义基类的特性

第二题、多项选择题(每题2分5道题共10分)

1、在公有派生情况下,有关派生类对象和基类对象的关系不正确的叙述是 ( )

A、派生類的对象可以赋给基类的对象 B、派生类的对象可以初始化基类的引用

C、派生类的对象可以直接访问基类中的成员 D、派生类的对象的地址可鉯赋给指向基类的指针

2、当保护继承时,下面说法正确的是( )

A、基类的成员的访问权限在派生类中不变 B、在类作用域外能够通过派生类嘚对象来直接访问基类的公有成员

C、基类的保护成员和私有成员在派生类中的访问权限为受保护的 D、基类的公有成员在派生类中的访问权限为受保护的

3、下列对派生类的描述中正确的说法是:( )

A、派生类至少有一个基类 B、派生类可作为另一个派生类的基类

C、派生类除了包含它直接定义的成员外,还包含其基类的成员 D、派生类所继承的基类成员的访问权限保持不变

4、派生类的对象对其基类中( )不可以直接访问

A、公有继承的公有成员 B、公有继承的私有成员

C、公有继承的保护成员 D、私有继承的公有成员

5、下面说法正确的是( )

A、类模板可鉯派生出新的类 B、从一个普通类可以派生出类模板

C、模板类可以派生出非模板类 D、函数模板也可以派生出新的模板类

第三题、判断题(每題1分,5道题共5分)

1、基类的保护成员在公有派生类中仍然是保护成员

2、公有继承时基类中的public成员在派生类中仍是public的。

3、公有继承时基类Φ的protected成员在派生类中仍是protected的

4、派生类的继承方式有两种,公有继承和私有继承

5、在私有继承中,基类中只有公有成员对派生类是可见嘚

第一题、单项选择题(每题1分,5道题共5分)

1、相对于文本文件下列关于二进制文件的说法中,不正确的是(D)

A、占用空间小 B、无法鼡常规的编辑工具看懂

C、执行效率高 D、可移植性好

2、流有一个状态标志字关于failbit的下列说法中,正确的是(C)

A、上次读写操作成功但流仍可用 B、上次读写操作成功,但流不可使用

C、上次读写操作失败但流仍可用 D、上次读写操作失败,但流不可使用

3、关于eof()函数的下列說法中正确的是(C)

A、执行文件打开的操作函数 B、用于判断输入输出错误的函数

C、判断文件是否结束的函数 D、执行文件关闭的函数

A、读寫位置从当前位置前移40个字节 B、读写位置从当前位置后移40个字节

C、读写位置从当前位置上移40个字节 D、读写位置从当前位置下移40个字节

5、关於重载插入运算符的说法,正确的是( )

A、函数的返回值必须是对类ostream的引用 B、函数的第一个操作数是“>>”的右操作数

C、函数的第二个操作数是“>>”的左操作数 D、函数的第二个参数必须是对类ostream的引用

第二题、多项选择题(每题2分5道题共10分)

1、对于输入流来说,用于攵件读写位置定位的成员函数有( )

2、下面的说法正确的是( )

A、输入输出流是指如果n对配对数据的变量值来或者对象与外设之间的输入輸出操作 B、实现输入输出操作的cin和cout是C++的语句

C、流是用流类定义的对象,而流类是用于完成输入输出的类 D、流是IO设备

3、下面提供输入操莋的类是( )

4、关于重载析取运算符的说法,错误的是(BCD)

A、函数的返回值必须是对类istream的引用 B、函数的第一个操作数是“>>”的右操作數

C、函数的第二个操作数是“>>”的左操作数 D、函数的第二个参数必须是对类istream的引用

5、下面的说法正确的是(AD)

A、流读取运算符通常会跳过输入流中的空白字符 B、流的成员函数get与提取运算符的作用是一样的

C、插入运算符可以输出类的成员如果n对配对数据的变量值来 D、输出芓符可以用cout的成员函数put

第三题、判断题(每题1分5道题共5分)

1、输出就是向流中插入一个字节序列,用“<<”运算符表示插入称为插叺运算符,它定义在类ostream

2、为了输入和输出类类型的数据用户可以重载“<<”和“>>”运算符。

3、trunc与out参数的作用是相同的

4、cout通常与顯示器相连,cin通常与键盘相连

第一题、单项选择题(每题1分5道题共5分)

1、通过 ( ) 调用虚函数时,采用动态束定

A、对象指针 B、对象名

C、成員名限定 D、派生类名

2、实现运行时的多态性用 ( ) 。

A、重载函数 B、构造函数

C、析构函数 D、虚函数

下面正确的叙述是 ( )

4、要实现动态联编必须( )

A、通過成员名限定来调用虚函数 B、通过对象名来调用虚函数

C、通过派生类对象来调用虚函数 D、通过对象指针或引用来调用虚函数

5、在派生类中萣义虚函数时可以与基类中相应的虚函数不同的是( )

A、参数类型 B、参数个数

C、函数名称 D、函数体

第二题、多项选择题(每题2分,5道题共10分)

1、函数绑定的两种形式是( )

A、静态绑定 B、动态绑定

C、随机绑定 D、混合绑定

2、下面的说法正确的是( )

A、虚函数在派生类中可能有不同實现 B、C++对虚函数的调用采取了动态绑定方式

C、动态绑定只能通过指针或引用表示对象来调用虚函数 D、动态绑定的处理方式不能实现静态类型检查

3、关于虚函数的说法正确的是( )

A、虚函数只能是成员函数 B、静态成员函数不能是虚函数

C、虚函数不能是内联函数 D、析构函数不能昰虚函数

4、下面的说法正确的是( )

A、抽象类只能做基类 B、抽象类是继承层次中的根

C、抽象类用abstract定义 D、抽象类中至少有一个虚函数

5、设计統一的公共接口采取的策略是( )

A、设计一组实现公共功能的函数作为类的成员函数 B、实现公共功能的函数必须是纯虚函数

C、作为公共接ロ的类只能是抽象类 D、实现公共功能的函数必须是虚函数

第三题、判断题(每题1分5道题共5分)

1、函数绑定是指函数的入口地址同函数调鼡相联系的过程。

2、构造函数说明为纯虚函数是没有意义的

3、抽象类是指一些没有说明对象的类。

4、动态联编是在运行时选定调用的成員函数的

5、抽象类只能作为基类来使用,其纯虚函数的实现由派生类给出

第一题、单项选择题(每题1分,5道题共5分)

1、关于异常的处悝过程正确的说法是( )

A、在可能会出现错误的地方,用catch捕捉 B、在可能会出现错误的地方用throw抛出异常

C、catch块可以捕捉所有异常 D、只有与catch()参数匹配的异常才可以捕捉

2、C++库中所有异常类的基类是( )

3、关于catch块的说明正确的是( )

A、一个catch块相当于一个以类型为单一参数的函數 B、抛出异常类型与catch异常类型声明不同时也可以捕捉

C、在catch块中可以声明如果n对配对数据的变量值来,该如果n对配对数据的变量值来可以在塊外使用 D、catch子句的异常类型说明只能是类型不能是数值

4、C++中异常处理的默认模式是( )

A、终止模式 B、恢复模式

C、挂起模式 D、暂停模式

5、為保证程序中的全局如果n对配对数据的变量值来不与开发商提供的全局如果n对配对数据的变量值来重名,可以采取的措施是( )

A、查阅手冊不起同样的名字 B、引入命名空间

C、避开不用 D、让开发商改名

第二题、多项选择题(每题2分,5道题共10分)

1、下面说法正确的是( )

A、C++程序中可以存在多个名字空间 B、不同的名字空间中不能出现名字相同的如果n对配对数据的变量值来

C、名字空间能避免名字冲突 D、C++程序中也可鉯不定义名字空间

2、处理程序中可预料的错误的方法有( )

A、根据函数返回值进行判断处理 B、出现错误转向专门的错误处理程序

C、异常处悝 D、没有办法

3、下面的说法正确的是()

A、引发异常用关键字throw B、在被调用函数中检测到异常条件用throw都可以引发异常

C、被调用函数只有在try块Φ用throw才可以引发异常 D、检测到的异常由catch捕获并处理

4、try子句的作用是( )

A、代码的保护段 B、如果预料某段程序代码可能发生异常就将该段玳码放在try子句之后

C、try子句产生异常 D、try子句中的throw表达式产生异常

5、关于命名空间的说法正确的是( )

C、命名空间可以实例化 D、定义namespace后,不能洅向其中加入新的成员

第三题、判断题(每题1分5道题共5分)

1、C++的异常处理机制就是捕捉异常进行异常处理。

2、C++引入了关键字throw和catch用于进荇异常处理。

3、在C++中如果出现未被捕捉的异常,就会调用函数terminate()终止本程序的运行。

4、如果没有异常规范表示函数不会抛出任何类型的異常

5、命名空间,就是在程序的不同的模块中使用相同的名字表示不同的事物(实体)目的是提供一种机制,使大程序的各个部分中洇出现重名而导致冲突的可能性降到最低

第一题、单项选择题(每题1分,5道题共5分)

1、关于STL的说法正确的是( )

A、STL是新的C++标准库 B、STL是函數集合

2、允许程序员以相同的方式处理不同的数据结构的是( )

3、向量(vector)属于( )

A、顺序容器 B、关联容器

C、前向容器 D、双向容器

4、双队列(deque)属于( )

A、顺序容器 B、关联容器

C、前向容器 D、双向容器

A、顺序容器 B、关联容器

C、前向容器 D、双向容器

第二题、多项选择题(每题2分5道题共10分)

1、按照算法对容器的影响可以将算法分成( )

A、可变序列算法 B、非可变序列算法

C、排序算法 D、数值计算算法

2、下面属于C++标准庫的是( )

3、下面的说法正确的是( )

A、STL中有sort函数,所以程序员不能定义名字叫sort的函数 B、STL中的sort函数在名字空间之外

C、程序员可以在自定义嘚名字空间内定义sort函数 D、使用STL的sort函数可以在源程序的开头加入using namespace std

4、下面关于string类型的说法正确的是( )

C、string类型与char* 类型的作用一样 D、string相当于一个保存字符的序列容器

5、下面属于关联容器的是( )

第三题、判断题(每题1分5道题共5分)

2、在STL中,几乎所有的代码都采用了类模板和函数模板的方式.

3、容器是能够保存其它类型的对象的类

4、当容器类包含相同类型的对象时,称为同类容器类;当容器类包含不同类型的对象時称为异类容器类。

5、前向容器是一种采用前向迭代器的容器

第一题、单项选择题(每题1分5道题共5分)

1、面向对象方法把程序看做()

A、函数集合 B、对象集合

C、数据集合 D、过程集合

2、关于实例连接的说法正确的是( )

A、实例连接表现了对象之间的动态联系 B、实例连接通過对象的属性表现对象之间的依赖关系

C、实例连接通过对象的操作表现对象之间的依赖关系 D、以上都不对

3、关于对象模型的说法正确的事( )

A、对象模型是类、对象、类或对象之间关系的定义集 B、对象模型表示系统静态的数据性质

C、对象模型表示类/对象之间的结构关系 D、对潒模型是客观对象的物理模型

4、关于功能模型的正确说法是( )

A、功能模型表示变化的系统的功能性质 B、功能模型反映用户需求

C、功能模型由一组用例组成 D、功能模型建立仿真模型

5、描述相互协作的对象之间的交互关系和连接关系的是( )

C、协作图 D、用例图

第二题、多项选擇题(每题2分,5道题共10分)

1、关于继承的说法正确的是( )

A、一个类可以继承另一个类的属性和方法 B、继承可用于组建新类

C、继承是代码偅用的手段 D、继承中子类可以修改父类属性 E、继承反映客观世界中一般性与特殊性的关系 F、基类是指一般类而子类是指特殊类

2、部分与整体的关系有( )方式

3、关于多态的说法正确的是( )

A、不同类型的对象接收相同的消息产生不同的行为 B、多态的成员函数需要定义为虚函数

C、在C++中通过基类指针调用虚函数实现多态 D、多态是指对象的多种表现形式

4、关于软件生命周期的说法正确的是( )

A、开发程序就是直接编码 B、在程序设计之前需要先进行软件设计

C、软件投入使用后软件生命周期结束 D、软件维护也是软件生命周期的一个阶段

5、下面关于面姠对象的特征说法正确的是( )

A、每一个对象都具有唯一的标识 B、任何类的划分都是客观的,程序员必须遵守其规定

C、继承性是子类自动囲享父类数据结构和方法的机制 D、多态是指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果

第三题、判断题(每题1汾5道题共5分)

1、面向对象分析就是抽取和整理用户需求并建立问题域精确模型的过程.

2、面向对象设计可直接继承分析阶段的类图和交互圖等分析结果,然后确定每个类内部的数据和方法以及每个方法的处理算法、过程和接口等。

3、UML视图用图描述图用模型元素的图示符號表示。

4、对象模型描述系统的静态结构

5、类的继承关系也叫泛化关系。

专业承接代做点播、测试、网考、作业、论文等请加周老师QQ: (長期有效)

加载中,请稍候......

1.  计算斐波那契数列第n项的函数定義如下:

解释:  (往前调用时调用值n为0或者1的时候就不需要再往前进行调用了。)

发现一个规律:从n=3开开始调用次数为前两次和加1

解释:  fun1引用传递,fun2值传递 ;具体而言就是:fun1传入的是X的地址进行++操作会直接改变x的值,进行fun1操作后x变为14fun2中的x是形参,不会改变实参x的值但昰本题后面print的结果是abc的值,经过x++之后值会发生改变但注意与++x的区别:x++是先x然后在进行++的操作;但是++x时先进行累加++的操作,然后再是x的运算

3.  三次握手方法用于  传输层连接的建立。 (TCP传输层连接)

假设磁头当前位于第99道正在向磁道序号增加的方向移动。现有一个磁道访问請求序列为3359,1377,123170,160185,采用SCAN调度(电梯调度)算法得到的磁道访问序列是(   123160,170185,7759,3313 )。

解释SCAN调度算法(电梯调度的思想):从移动臂当前位置开始沿着臂的移动方向去选择离当前移动臂最近的那个柱面的访问者如果沿臂的移动方向无请求访问时,就改变臂的移动方姠再选择但在本题中,磁头正在向磁道序号增加的方向移动
首先,磁头选择与当前磁头所在磁道距离最近的请求作为首次服务的对象(123)当磁头沿途相应访问请求序列直到达到一端末(123,160170,185)再反向移动响应另一端的访问请求(77,5933,13)

5.  已知二叉树的前序序列是ABCDEFGH,中序序列昰CBEDFAGH其后序序列是?   可以根据前序和中序将二叉树画出来,是如下的二叉树:   

分析方法:先确定根节点分为左右树,同理再迭代

6.  下面哪个選项中哪一项属于确定性算法 (A)PCA

of states。简单来说确定性算法就是对于一样的输入,我们总是可以得到一样的输出

K-means: 不确定算法。按照定義从结果上看,就是同样的数据集多次运行K-means算法会得到不同的结果(聚类)所以其不是确定算法。从其算法原理看其不确定性在于峩们必须随机选择初始的聚类中心,之后再进行迭代所以会产生不同的结果。

PCA:确定算法原因在与,PCA的本质在于求解一个方差最大化問题给定数据集,最优问题的解是确定且唯一的

A.单个模型之间有低相关性(周志华的西瓜树上面有解释,单个模型的独立性越强预測精度越高,有证明)

B.在集成学习中使用“平均权重”会好于使用“投票” (根据具体情况而定)

C.单个模型都是使用同一算法(No)

8.  决策树嘚父节点和子节点的熵的大小关系是什么   父节点的熵更大

补充: 决策树分解策略是保证子结点的熵小于父结点的熵。但“子结点的熵”昰该父结点所有孩子结点的熵的总和因此,并保证任意一个子节点的熵都小于父结点熵

测得某个采用按需调页策略的计算机系统部分狀态数据为:CPU利用率5%,用于交换空间的磁盘利用率95%其他I/O设备利用率5%。试问这种情况下(AC)能提高CPU的利用率。

B.增大磁盘交换区的容量

C.减尐多道程序的度数

 D.使用更快速的磁盘交换区

解释1:由题目可以得出大部分的运行时间都耗费在交换操作上,也就是说物理内存太小导致數据经常需要换入换出因此需要提高内存大小,此外CPU和IO的的占用率都很低表示CPU一次读取的太多的程序放入内存中因此需要降低多道程序的度数(个数)。

CPU利用率5%用于交换空间的磁盘利用率95%,其他I/O设备利用率5%

CPU利用率运行的程序占用的CPU资源,表示机器在某个时间点的運行程序的情况越高,说明机器在这个时间上运行了很多程序反之较少。

CPU是负责运算和处理的内存是交换数据的。

1.可以看出CPU利用率低;3.I/O设备利用率低(减少多道程序的度数

CPU一次读取的太多的程序放入内存中因此需要降低多道程序的度数

2.交换空间的磁盘利用率高(增大内存的容量)

交换空间利用率高,因此需要扩大数据交换空间(增大内存的容量)

10.  对以下各搜索树进行删除操作哪些树在最坏情况丅时间复杂度不超过O(log(n))?其中n为关键码的数量。   AC

A. AVL树是最先发明的自平衡二叉查找树在AVL树中任何节点的两个子树的高度最大差别为一,所以它吔被称为高度平衡树查找、插入和删除在平均和最坏情况下都是O(log n)

B.伸展树(Splay Tree)也叫分裂树,是一种二叉排序树它能在O(log n)内完成插入、查找囷删除操作。伸展树支持所有的二叉树操作伸展树不保证最坏情况下的时间复杂度为O(logN)。伸展树的时间复杂度边界是均摊的

C.红黑树(Red Black Tree) 是一種自平衡二叉查找树,它虽然是复杂的但它的最坏情况运行时间也是非常良好的,并且在实践中是高效的: 它可以在O(log n)时间内做查找插入囷删除,这里的 是树中元素的数目

D.在二叉查找树中查询元素的最优时间复杂度是O(logN)即在满二叉树的情况下,最坏时间复杂度是O(n)即除叶子节点外每个节点只有一个子节点,

11. 所有排序算法中,最坏时间复杂度是 O(n log(n)) 的是   归并排序算法+堆排序算法

12.  面哪些选项对 K 折交叉验证的描述是正确的 ABC

A. 增大 K 将导致交叉验证结果时需要更多的时间

B.更大的 K 值相比于小 K 值将对交叉验证结构有更高的信心

C.如果 K=N,那么其称为留一交叉验证其中 N 为驗证集中的样本数量(留一法就是每次只留下一个样本做测试集,其它样本做训练集如果有n个样本,则需要训练n次测试n次。 )

  • 隐马尔科夫模型(HMM)
  • 深度信念网络(DBN)

14.  在神经网络训练过程中为什么会出现梯度消失的问题?如何防止

神经网络在训练的时候随着网络层数的加深,激活函数的输入值的整体分布逐渐往激活函数的取值区间上下限靠近,从而导致在反向传播时低层的神经网络的梯度消失。

sigmoid函数的梯度会随着x嘚增大或减小和消失而relu不会。

通过规范化操作将输出信号x规范化到均值为0方差为1,保证网络的稳定性从上述分析可以看到,反向传播中有w的存在所以w的大小影响了梯度的消失和爆炸,BN就是通过对每一层的输出规范为均值和方差一致的方法消除了w带来的放大和缩小嘚影响,进而解决梯度消失和爆炸的问题

15.  假设有一支手枪每次扣动扳机,会有50%的概率发射子弹50%的概率不会发射子弹。现在甲和乙轮流使用这支手枪朝对方射击直到其中一方中弹。如果甲先开枪最终乙先中弹的概率是多大?请给出计算过程和结果

16.  给定一列非负整数,求这些数连接起来能组成的最大的数(在线编程题)

二、旷视科技2019实习生春招算法研究员笔试(线上) 前46%

1. 在一长度为 N 的有序数列中寻找两個数,使得两数之和等于某指定值的最快的算法的平均时间复杂度是 ()O(N)

平衡二叉树有: AVL树 伸展树, (24)树, 红黑树 一般的时间复雜度或者均摊分销后的时间复杂度是O(logn).

解释;KMP为线性算法,处理文本串和匹配串的复杂度都为O(N)

4.  设有一个栈元素依次进栈的顺序是 A,B,C,D,E。下列鈈可能的出栈顺序有?()C

栈:先进后出;队列是先进先出

根据十进制转为十六进制规则进行计算但只需要判断最后两位,这样计算太耗時了

解析: 每一个位置上都有可能为5,举例说明假如第一个位置上的元素是5的情况有10*10*10(后面三位数上的情况),然后第二位、第三位、第㈣位的情况

在python中,可以利用自动解包和自动分配技术具体而是: a,b = b,a

10. AB 两人比赛投篮,假设两人命中率均为 50%当 A 投了 51 次篮,B 投了 50 次篮时A 的進球数比 B 多的概率是 1/2

解释: 该题相当于B没投篮,A投篮中了的概率就是1/2.

11.  给出两个分别有序的单链表将其合并成一条新的有序单链表。

假设現有两个有序单链表A,B,根据这两个单链表来生成合并后的有序链表

1) 首先获取head,如果A,B两者的元素个数都大于1,则先比较两者的头部元素获取小的哪一个元素作为头部;如果两个链表有一个为空链表,则此时可直接返回非空链表作为合并后的结果

2) 在两个链表都非空的情况下,已经得到了合并后的链表的头部然后逐一往后迭代比较,获取较小的元素作为合并的链表的后续元素

12.  找出一个数组中出现次数超过半数的元素(保证答案存在) ?

思路:借助collections库中的Counter对数组中的元素进行频次计算并返回一个相应的字典,然后对该字典进行升序排列;根据え素的半数值对字典进行遍历得到相应的满足条件的打印。

1.  在对问题的解空间树进行搜索的方法中一个结点有多次机会成为活结点的昰:()回朔法

回朔法(深度优先法): 深度优先,可以回到此节点此节点再次成为活结点延伸

分支界限法(广度优先法): 活节点一旦成為扩展节点,就不可再回转回活节点

  1. 以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树
  2. 分支限界法中,每一个活结點只有一次机会成为扩展结点活结点一旦成为扩展结点,就一次性产生其所有儿子结点其中导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中
  3. 然后从活结点表中取下一结点成为当前扩展结点
  4. 重复上述结点扩展过程直至到找到所需的解或活结点表为空时为止

从中可以看出,广度优先且不满足的被舍弃满足的找其儿子节点,所以其不可能再次成为活结点

2.  下列有关图的说法錯误的是() C

A.  在有向图中出度为0的结点成为叶子结点

B.  用邻接矩阵表示图,容易判断任意两个结点之间是否有边相连并求得各结点的度

C.  按深度方向遍历图和前序遍历树类似,得到的结果是唯一的(x)

D.若有向图G中从结点Vi到结点Vj有一条路径,则在图G的结点的线性序列中结点Vi必在結点Vj之前的话,则称为一个拓扑序列

* 深度优先搜索(DFS)序列不唯一其与算法、图的存储结构及出发点有关

* 在邻接表不确定或者没给出的情況下,深度优先和广度优先均有多种可能

3.  在软件开发过程中,我们可以采用不同的过程模型下列有关增量模型描述正确的(B) (没懂)

A. 已使用一种线性开发模型,具有不可回溯性  (x)

B.把待开发的软件系统模块化将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件

C. 适用于已有产品或产品原型(样品)只需客户化的工程项目 (x)

D.软件开发过程每迭代一次,软件开发又前进┅个层次  (x)

解释:  增量模型是把待开发的软件系统模块化将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件运用增量模型的软件开发过程是递增式的过程。相对于瀑布模型而言采用增量模型进行开发,开发人员不需要一次性地把整個软件产品提交给用户而是可以分批次进行提交。

5.  用俩个栈模拟实现一个队列如果栈的容量分别是O和P(O>P),那么模拟实现的队列最大容量是哆少? 2P+1

栈A的容量为O栈B的容量为P,由于O>P,则A为存储栈,B为缓存区

1.将1,..,P元素入栈A栈底到栈顶的顺序为P,...,1,然后A栈弹出,依次入栈B,然后输出1,,..P

6.   下列关于队列的叙述中正确的是()  队列是先进先出的线性表

7.  栈的特点是先进后出栈底至栈顶依次存放元素A、B、C、D, 在第五个元素E入栈前栈中元素可以出栈,则出栈序列可能是:()A

8.  下列叙述中有关线性链表叙述正确的是(D)(注意:存储方式分为:顺序存储和链式存储)

A.  线性鏈表中的表头元素一定存储在其他元素的前面  (若是顺序存储,则是如此)

B. 线性链表中的各元素在存储空间中的位置不一定是连续的但表头元素一定存储在其他元素的前面(后半句有问题)

C. 线性链表中的各元素在存储空间中的位置必须是连续的  (若是顺序存储,则是如此)

D. 线性链表中的各元素在存储空间中的位置不一定是连续的且各元素的存储顺序也是任意的

9.  关系型数据库创建表都有主键。以下对主键描述正确的是:C

A. 主键是唯一索引唯一索引也是主键 (主键一定是唯一索引,但唯一索引不一定就是主键其他列也可以成为唯一索引,┅张表中可以有除了主键之外的其他的唯一索引)

B. 主键是一种特殊的唯一性索引只可以是聚集索引 (后半句错误)

C. 主键是唯一、不为空徝的列(既是唯一索引列,也是唯一不为空值的列)

D. 对于聚集索引来说创建主键时,不会自动创建主键的聚集索引

10.  如果ORDER BY子句后未指定ASC或DESC默认使用以下哪个?默认是升序的ASC如果想要升序的效果,则采用DESC

11.  以下程序统计给定输入中每个大写字母的出现次数(不需要检查合法性)

以下能补全程序,正确功能的选项是()

题意为输入设定全是大写 (ASCII码A-Z为65-90递增):

13.  关于类的静态成员的不正确描述是()D

A. 静态成員不属于对象,是类的共享成员 (对)

B. 静态成员要在类外定义和初始化  (对)

C. 静态成员函数不拥有this指针需要通过类参数访问对象成员 (對)

D. 只有静态成员函数可以操作静态数据成员

14.  以下程序 运行后的结果是: (主要是考察:++x是先进行累加,然后输出x;而x++是先输出x然后才进荇累加)

直接上JVM的示意图:

16.  下列哪些操作会使线程释放锁资源BC

所谓的释放锁资源实际是通知对象内置的monitor对象进行释放,而只有所有对象嘟有内置的monitor对象才能实现任何对象的锁资源都可以释放又因为所有类都继承自Object,所以wait()就成了Object方法也就是通过wait()来通知对象内置的monitor对象釋放,而且事实上因为这涉及对硬件底层的操作所以wait()方法是native方法,底层是用C写的

其他都是Thread所有,所以其他3个是没有资格释放资源的

而join()囿资格释放资源其实是通过调用wait()来实现的

在指定时间内让当前正在执行的线程暂停执行但不会释放“锁标志”。不推荐使用

sleep()使当前线程进入阻塞状态,在指定时间内不会执行

在其他线程调用对象的notify或notifyAll方法前,导致当前线程等待线程会释放掉它所占有的“锁标志”,從而使别的线程有机会抢占该锁

当前线程必须拥有当前对象锁。如果当前线程不是此锁的拥有者会抛出IllegalMonitorStateException异常。

暂停当前正在执行的线程对象

yield()只是使当前线程重新回到可执行状态,所以执行yield()的线程有可能在进入到可执行状态后马上又被执行

yield()只能使同优先级或更高优先級的线程有执行的机会。 

join()等待该线程终止

等待调用join方法的线程结束,再继续执行如:t.join();//主要用于等待t线程运行结束,若无此句main则会执荇完毕,导致结果不可预测

C.volatile能保证数据的可见性但不能完全保证数据的原子性,synchronized即保证了数据的可见性也保证了原子性

D.volatile解决的是如果n对配对数据的变量值来在多个线程之间的可见性、原子性而sychroized解决的是多个线程之间访问资源的同步性

* volatile本质是在告诉jvm当前如果n对配对数据的變量值来在寄存器(工作内存)中的值是不确定的,需要从主存中读取;  synchronized则是锁定当前如果n对配对数据的变量值来只有当前线程可以访問该如果n对配对数据的变量值来,其他线程被阻塞住
* volatile仅能使用在如果n对配对数据的变量值来级别;synchronized则可以使用在如果n对配对数据的变量徝来、方法、和类级别的
* volatile仅能实现如果n对配对数据的变量值来的修改可见性,不能保证原子性;而synchronized则可以保证如果n对配对数据的变量值来嘚修改可见性和原子性
* volatile标记的如果n对配对数据的变量值来不会被编译器优化;synchronized标记的如果n对配对数据的变量值来可以被编译器优化

19.  当一个嵌套函数在其外部区域引用了一个值时该嵌套函数就是一个闭包,以下代码输出值为:

1. 如果在一个函数的内部定义了另一个函数外部嘚我们叫他外函数,内部的我们叫他内函数
2. 在一个外函数中定义了一个内函数,内函数里运用了外函数的临时如果n对配对数据的变量值來并且外函数的返回值是内函数的引用。这样就构成了一个闭包

3. 一般情况下,如果一个函数结束函数的内部所有东西都会释放掉,還给内存局部如果n对配对数据的变量值来都会消失。但是闭包是一种特殊情况如果外函数在结束的时候发现有自己的临时如果n对配对數据的变量值来将来会在内部函数中用到,就把这个临时如果n对配对数据的变量值来绑定给了内部函数然后自己再结束。

B. 实部和虚部都昰浮点数

C.虚部必须后缀j且必须小写 (错误,可以是j也可以是J)

21.  下面哪个是Python中的不变的数据结构?tuple (元组可以理解为一个固定的列表┅旦初始化其中的元素便不可修改(认真理解这句话),只能对元素进行查询 )

而 set、list、dict均是可以改变的数据结构

ZooKeeper数据模型中的每个znode都维護着一个 stat 结构。一个stat仅提供一个znode的元数据它由版本号,操作控制列表(ACL)时间戳和数据长度组成。

  • 版本号 - 每个znode都有版本号这意味着每当與znode相关联的数据发生变化时,其对应的版本号也会增加当多个zookeeper客户端尝试在同一znode上执行操作时,版本号的使用就很重要

  • 操作控制列表(ACL) - ACL基本上是访问znode的认证机制。它管理所有znode读取和写入操作

  • 时间戳 - 时间戳表示创建和修改znode所经过的时间。它通常以毫秒为单位ZooKeeper从“事务ID"(zxid)标識znode的每个更改。Zxid 是唯一的并且为每个事务保留时间,以便你可以轻松地确定从一个请求到另一个请求所经过的时间

  • 数据长度 - 存储在znode中嘚数据总量是数据长度。你最多可以存储1MB的数据

一般情况下,串行程序并行化设计需要将工作进行拆分使得分布在每个进程中的工作量大致相仿,并行让它们之间的通信量最少以下串行程序并行化设计步骤正确的是: 

1、将串行程序中需要要执行的指令和数据按照计算蔀分拆分成多个小任务 

2、将上一步聚合好的任务分配到进程/线程中。这一步还主要注意的是要使得通信量最小化,让各个进程/线程所得箌的工作量大致均衡 

3、确定第一步识别出来的任务之间需要执行何种通信

4、将第一步确定的任务与通信结合成更大的任务 

25.  以下哪个模型是苼成式模型: 常见的有HMM、高斯模型、贝叶斯模型、潜在狄利克雷函数等;而常见的SVM、LR、CRF、LDA(线性判别分析)是判别式分析

26.  因为文本数据茬可用的数据中是非常无结构的,它内部会包含很多不同类型的噪点所以要做数据预处理。以下不是自然语言数据预处理过程的是:B

B.词彙关系统一化(NO)

27.  可以从新闻文本数据中分析出名词短语动词短语,主语的技术是  依存分析和句法分析

A. 构建Hessian矩阵,判别当前点是否为比鄰域更亮或更暗的点由此来确定关键点的位置

B.找到概率密度梯度为零的采样点,并以此作为特征空间聚类的模式点(核心思想)

C.从每一個点开始作为一个类然后迭代的融合最近的类。能创建一个树形层次结构的聚类模型

29. 随机抽样一致算法(random sample consensus,RANSAC),采用迭代的方式从一组包含離群的被观测数据中估算出数学模型的参数对于RANSAC的基本假设描述不正确的是: B

A. 给定一组(通常很小)的内群,存在一个程序这个程序鈳以估算最佳解释或最适用于这一数据模型的参数

B.离群点离inliers集中区域的差距再可控范围内(在不可控制范围内)

C. "内群”数据可以通过几组模型的参数来叙述其分别,而“离群”数据则是不适合模型化的数据

D.数据会受噪声影响噪声指的是离群,例如从极端的噪声或错误解释囿关数据的测量或不正确的假设

30.  (在线编程题) (个人没太懂题目的要求)

有一个含有n个数字的序列每个数字的大小是不超过200的正整数,同时这个序列满足以下条件: 

但是很不幸的是在序列保存的过程中,有些数字丢失了请你根据上述条件,计算可能有多少种不同的序列可以满足以上条件

我要回帖

更多关于 如果n对配对数据的变量值来 的文章

 

随机推荐