(各个公司面试原题)在线做了一套CC++综合测试题,也来测一下你的水平吧(二)

刚才把最后的10道题又看了下,也发上来吧。

下面给出试题,和我对题目的一些理解

前10道题地址

(各个公司面试原题)在线做了一套CC++综合测试题,也来测一下你的水平吧(一)

11.设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构函数调用顺序为?

C c;
void main()
{
     A*pa=new A();
     B b;
     static D d;
     delete pa;
}

A.    A B C D

B.    A B D C

C.   A C D B

D.   A C B D

答案:B

c是全局变量,a、b是局部变量,d是静态的局部变量

先构造的后析构,静态的局部变量d在main函数结束时析构,全局变量c在程序结束时析构。

语句

delete pa;  

使得a先于b析构

附图

12.

若char是一字节,int是4字节,指针类型是4字节,代码如下:

class CTest
{
	public:
	CTest():m_chData(‘\0’),m_nData(0)
	{
	}
	virtual void mem_fun(){}
	private:
	char m_chData;
	int m_nData;
	static char s_chData;
};
char CTest::s_chData=’\0’;  

问:

(1)若按4字节对齐sizeof(CTest)的值是多少?

(2)若按1字节对齐sizeof(CTest)的值是多少?

请选择正确的答案。

A.     16 4

B.    16 10

C.   12 9

D.   10 10

答案:C

首先,分析类 CTest中占存储空间的变量和函数

变量:char型变量占1个字节,int型变量占4个字节,sizeof(CTest)所求得的长度不包含static变量的字节数

函数:类的普通函数在实例化时才分配内存空间,虚函数(不论多少个)则维护一个指针指向的虚函数表,指针占4个字节

所以,

若4字节对齐,则 4(int)+4(长度为1字节的char)+4(指向虚函数表的指针)=12

若1字节对齐,则 4(int)+1(长度为1字节的char)+4(指向虚函数表的指针)=9

13.

在Java中,以下关于方法重载和方法重写描述正确的是?

A.    方法重载和方法的重写实现的功能相同

B.    方法重载出现在父子关系中,方法重写是在同一类中

C.   方法重载的返回值类型必须一致,参数项必须不同

D.   方法重写的返回值类型必须相同。(或是其子类)

答案:D

这题的关键是分清方法重载和方法重写的概念。

要注意的是,可重载的方法,需要以下条件

1.方法名相同

2.方法参数个数不同 || 方法参数个数相同但至少有一对对应参数的类型不同

3.与返回值无关

而可重写的方法都是继承过来的,为维护一致性,返回值类型必然需要相同

14.

下列给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。ss所指字符串数数组中共有M个字符串,且串长小于N。

请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。

试题程序。

#define M 5
#define N 20
int fun(char(* ss)[N], int *n)
{
	int i, k = 0, len = N;
	for (i = 0; i < ______; i++)
		{
			len = strlen(ss[i]);
			if (i == 0)
				*n = len;
			if (len ____ * n);
			{
				*n = len;
				k = i;
			}
		}
	return ( _____ );
}
main( )
{
	char ss[M][N] = {"shanghai", "guangzhou", "beijing", "tianjing", "chongqing"};
	int n, k, i;
	printf("\nThe originalb stringsare:\n");
	for (i = 0; i < M; i++)
		puts(ss[i]);
	k = fun(ss, &n);
	printf("\nThe length of shortest string is: % d\n", n);
	printf("\nThe shortest string is: % s\n", ss[k]);
}

A.    N < k

B.    N > k

C.   M < k

D.   M > k

答案:C

感觉比较水的一道题。。。。分析下代码就OK了

15.

写出下面程序的输出结果

class A
{
public:
	void FuncA()
	{
		printf( "FuncA called\n" );
	}
	virtual void FuncB()
	{
		printf( "FuncB called\n" );
	}
};
class B : public A
{
public:
	void FuncA()
	{
		A::FuncA();
		printf( "FuncAB called\n" );
	}
	virtual void FuncB()
	{
		printf( "FuncBB called\n" );
	}
};
void main( void )
{
	B b;
	A *pa;
	pa = &b;//pa为一个指向a对象的指针,这里,将其绑定在对象b上
	A *pa2 = new A;//pa2为一个指向a对象的指针
	pa->FuncA();//FuncA为普通函数,这里调用A类的FuncA函数
	pa->FuncB();//FuncB为虚函数,根据继承性原理,子类有的调用子类,子类没有的,调用父类,这里,调用B类的FuncB函数
	pa2->FuncA(); //这里调用A类的FuncA函数
	pa2->FuncB();//因为pa2是一个指向A类的指针,所以,在A类中寻找FuncB函数,这里,调用A类的FuncB函数
	delete pa2;
}

A.    FuncA called FuncB called FuncA calledFuncB called

B.    FuncA called FuncBB called FuncA calledFuncB called

C.   FuncA called FuncBB called FuncAB calledFuncBB called

D.   FuncAB called FuncBB called FuncA calledFuncB called

答案:B

详情见注释

16.

In the main() function,after ModifyString(text) is called, what’s the value of ‘text’?

int FindSubString( char* pch )
//这个函数是用来搜索回文字符串的,并且回文字符串的左右边上的字符要比回文串的开头结尾要大,
//比如BCDCB不行,但ABA可以
{
	int   count  = 0;
	char  * p1   = pch;//注意,指针pch在函数FindSubString中并未改变指向
	while ( *p1 != '\0' )
		{
			if ( *p1 == p1[1] - 1 )
				{
					p1++;
					count++;
				}
			else
				{
					break;
				}
		}
	int count2 = count;
	while ( *p1 != '\0' )
		{
			if ( *p1 == p1[1] + 1 )
				{
					p1++;
					count2--;
				}
			else
				{
					break;
				}
		}
	if ( count2 == 0 )
		return(count);
	return(0);
}
void ModifyString( char* pText )
{
	char  * p1   = pText;
	char  * p2   = p1;
	while ( *p1 != '\0' )
		{
			int count = FindSubString( p1 );//count为要跳过的字符数
			if ( count > 0 )
				{
					*p2++ = *p1;
					sprintf( p2, "%i", count );//把跳过的字符数量count覆盖在*p1+1的位置
					while ( *p2 != '\0' )//这个while循环很重要,应该是,只有*p2指向'\0'时,缓冲放在缓冲区的count才会真的覆盖text串的值
						{
							p2++;
						}
					p1 += count + count + 1;//p1跳过回文字符串
				}
			else
				{
					*p2++ = *p1++;
				}
		}
}
void main( void )
{
	char text[32] = "XYBCDCBABABA";
	ModifyString( text );
	printf( text );
}

A.    XYBCDCBABABA

B.    XYBCBCDAIBAA

C.   XYBCDCBAIBAA

D.   XYBCDDBAIBAB

答案:C

看注释吧,有些地方我也不太明白,就把看懂的注释了。

17.

下面程序的功能是输出数组的全排列。请填空。

void perm(int list[], int k, int m)
{
	if (    )
		{
			copy(list,list+m,ostream_iterator<int>(cout," "));
			cout<<endl;
			return;
		}
	for (int i=k; i<=m; i++)
		{
			swap(&list[k],&list[i]);
			(    );
			swap(&list[k],&list[i]);
		}
}

A.    k!=m和perm(list,k+1,m)

B.    k==m和perm(list,k+1,m)

C.   k!=m和perm(list,k,m)

D.   k==m和perm(list,k,m)

答案:B

好吧(∩_∩),是不是ACM时代见过?字符串全排列,用的是DFS

可参见NYOJ 32 组合数

18.

写出下列程序的运行结果。

#include "stdio.h"
int sum(int a)
{
	auto int c = 0;
	static int b = 3;
	c += 1;
	b += 2;
	return (a + b + c);
}
int main()
{
	int i;
	int a = 2;
	for (i = 0; i < 5; i++)
		{
			printf("%d,", sum(a));
		}
}

A.    6,8,10,12,14,

B.    8,10,12,14,16,

C.   10,12,14,16,18

D.   12,14,16,18,20

答案:B

又道水题。。。static类型的变量初始化一次,存在于整个函数生存期

19.

#include<iostream>
using namespace std;
class MyClass
{
public:
	MyClass(int i = 0)
	{
		cout << i;
	}
	MyClass(const MyClass &x)
	{
		cout << 2;
	}
	MyClass &operator=(const MyClass &x)
	{
		cout << 3;
		return *this;
	}
	~MyClass()
	{
		cout << 4;
	}
};
int main()
{
	MyClass obj1(1), obj2(2);
	MyClass obj3 = obj1;
	return 0;
}

运行时的输出结果是()

A.     11214444

B.    11314444

C.   122444

D.   123444

答案:C

主要是选C和选D的讨论,这涉及到浅复制和深复制

MyClass obj3= obj1;  

这里进行的是浅复制,调用的是copy construction函数

若上边那行代码是如下形式

MyClass obj3;
obj3= obj1;  

则进行的是深复制,调用的是assignment operators函数

20.

如下代码输出结果是什么?

#include<stdio.h>
char *myString()
{
	char buffer[6] = {0};//存放在栈上,在函数末尾将释放
	char *s = "Hello World!";
	for (int i = 0; i < sizeof(buffer) - 1; i++)
		{
			buffer[i] = *(s + i);
		}
	return buffer;//buffer的内存将释放,从而*buffer变成一个野指针
}
int main(int argc, char **argv)
{
	printf("%s\n", myString());
	return 0;
}

A.     Hello

B.    Hello World!

C.   Well

D.   以上全部不正确

答案:D

详情见注释

总算完了。。。。继续调摄像头去了。。。。

时间: 2024-09-30 14:14:34

(各个公司面试原题)在线做了一套CC++综合测试题,也来测一下你的水平吧(二)的相关文章

(各个公司面试原题)在线做了一套C/C++综合测试题,也来测一下你的水平吧(二)

刚才把最后的10道题又看了下,也发上来吧. 下面给出试题,和我对题目的一些理解 以下题目出自 牛客网 前10道题地址 在线做了一套C/C++综合测试题,也来测一下你的水平吧(一) 11.设已经有A,B,C,D4个类的定义,程序中A,B,C,D析构函数调用顺序为? [cpp] view plaincopy C c; void main() { A*pa=new A(); B b; static D d; delete pa; } A B C D A B D C A C D B A C B D 答案

算法面试:精选微软等公司经典的算法面试100题 第1-40题

精选微软等公司,数据结构+算法,经典面试100题                            --------之前40题 -------------------------- 算法面试:精选微软等公司经典的算法面试100题 第1-40题如下: --------------- --------------1.把二元查找树转变成排序的双向链表 题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.要求不能创建任何新的结点,只调整指针的指向.      10  / \ 6 14 

嵌入式题库最全的,去公司面试都会出现

现在嵌入式发展这么快,很多人开始踏上嵌入式学习之路,据市场统计,一般毕业或者找工作的一些人,在面试公司的时候,都会在这个地方卡壳,那就是面试题,很多人都是面试的很好,但是在做面试题的时候,手下的功夫不够深,最后被面试题而刷了下来,使得找工作变成了难题,空有一身的才华了,而且这也是对一些嵌入式面试的一些空难户而总结,可以学学哦,去公司面试一般都是会有的.请点击更多华清远见嵌入式题库分享大全(1)char constp char const p const char *p 上述三个有什么区别? 答案

Linux运维工程师面试-部分题库(答案版)

最近两个月有意跳槽,看到了一篇Linux运维工程师面试-部分题,就试着做了一下,感觉对Linux基础部分挺有帮助,在这里整理一份参考答案给大家,错误之处还望多多指出. 博文原地址 http://wgkgood.blog.51cto.com/1192594/1627684 一.Linux操作系统知识 1.常见的Linux发行版本都有什么?你最擅长哪一个?它的官网网站是什么?说明你擅长哪一块? 答: 常见的Linux发现版本有Redhat.Centos.Debian.Ubuntu.Suse 最擅长R

面试记录留给自己做纪念

新浪:java/python 1.安卓怎么测试.专项测试关注那些. 2.app安全怎么测试 3.jmeter怎么自定义协议,分布式怎么部署 4.jvm原理.算法.垃圾算法有几种,怎么在tomcat中修改参数 5.HashMap有几种遍历.java集合分几种,有什么不同 6.性能测试中怎么定位问题.怎么解决问题.如果有内存泄漏怎么定位.java线程堆栈怎么分析: 7.性能测试流程是什么?如何开展性能测试 性能报告怎么写,包含什么 旷视:(python) 1.一个文件夹中有100万图片.文件夹.其他

Oracle DBA面试突击题

一份ORACLE DBA面试题 一:SQL tuning 类 1:列举几种表连接方式 答:Oracle的多表连接算法有Nest Loop.Sort Merge和Hash Join三大类,每一类又可以分为三小类. 以Nest Loop为例: 传统的Nest Loop连接: 针对In.Exists优化的Semi Nest Loop: 专门针对Not In.Not Exists优化的Anti Nest Loop. Semi/Anti *** Join这几种也叫半连接. (可以补充一下这三个连接的不同之

一些iOS面试基础题总结

目录 多线程 AutoLayout objc_msgSend Runtime 消息转发 Category NSObject 与 objc_class Runloop AutoreleasePool iOS系统架构 App启动过程和优化 UIScrollView 的代理方法 响应链和事件传递 UIView 和 CALayer 的区别和联系 轮播图朴素实现的几种方法 TableView 和 CollectionView 必选的代理方法 UITableView 的优化思路 多线程 线程之间同步 原子操

ios下(个人公司非企业级)AdHoc在线安装全环境配置

1,环境 客户端开发:MacOs 10.8.5 服务器开发:Centos6.3 64位 2,软件准备 Apache httpd 2.2.27 OpenSSL 0.9.8za 3,客户端准备 Apple的开发者账号大致分如下三类:个人,公司,企业,这一篇我们主要说下个人.公司的ipa在线安装.个人公司级别的AdHoc有这样一个限制:就是在线发布的ipa包只能安装 在添加到Apple账号的Devices列表中(发布IPA之后再添加的设备需要重新打IPA包)的非越狱设备及越狱设备中,而企业级的开发者账

sdut 2411:Pixel density(第三届山东省省赛原题,字符串处理)

Pixel density Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Pixels per inch (PPI) or pixel density is a measurement of the resolution of devices in various contexts; typically computer displays, image scanners, and digital camera image s