C++笔试题(十二).金山

原创 2017年09月22日 22:31:42

8.(单选)下列函数中,哪个不是

void Fun(int m,int& n)
的函数重载 

A. void Fun(int  , int *)
B. void Fun(int& m, int& n)
C. void Fun(const int m, int& n)
D. void Fun(int m,const int&n)


编程题:

3.  STL中有位操作的bitset, 但是它定义的时候必须指定大小,比如下面这段程序,设置了位置2的布尔值为true,输出结果为“0 0 1 0 0”

std::bitset<5> x(0);//初始化5个位置都为0
x.set(2);
for(size_t i = 0 ; i < 5; i++)
{
        std::out<<x[i]<<" ";
}
现在实现一个类BitSetX比bitset更好用,容量能按需增长,要求取布尔值时尽可能的快。

class BitSetX
{
	public:
		void set(int nPos);
		void set(int nFrom,int nTo);
		void reset(int nPos);
		void reset(int nFron,int nTo);
		bool get(int nPos) const;
	protected:
};


四. 实现一种智能指针类,类名定为 KsoPointer, 在我们的架构中,普通对象(下文用Object泛指)的类都继承自同一个类KsoObject, 但是Object的实际类名和实现是不确定的,KsoPointer对象持有Object对象实例的指针(以下用object_pointer代指)

实现需求:在一个进程环境中,Object对象实例在析构后,所有KsoPointer的使用者(拥有KsoPointer对象实例)都能通过“KsoPointer的特定成员函数”判断object_pointer已经无效了,避免使用了已经析构的object_pointer导致程序崩溃


要求:

1)实现KsoPointer类的构造函数和operator =, 需要支持通过Object的引用或指针来构造和赋值

2)实现Ksopinter类的operator ->, operator *, 让使用者使用KsoPointer跟直接使用object_pointer一样

3)KsoPointer类要实现需求中的“KsoPointer的特定成员函数”

4)实现需求中所描述的机制

请写出KsoPointer和KsoObject的实现代码,以下是简要代码,请写出完整的实现:

class KsoObject
{
	//其余代码实现	
};
class KsoPointer
{
	KsoObject *obj;//上文中所说 
};


解析:首先才发现自己学习C++一个不清楚的地方,就是delete一个指针之后,该指针不是为NULL,该指针的值依然没变(也就是说指针指向的那块内存地址依然没变),只是告诉操作系统这个内存可以使用,因此delete之后,该指针就变成了一个野指针。那么我们要如何判断一个野指针是否被delete过呢?——那么应该是要基于引用计数规则了。

5. 



解析:

当时考试的时候,就无脑枚举,使用了2重256的循环,后来经同学指点,知道了大概如何优化:

首先,十个数字,分成了4段,那么一定是有2个三位数,2个二位数

其次,有2个三位数的话,那么一定其中一个是 200+,另外一个是 100+,也就是说十进制中1和2都被占用了,那么 200+ 对应的二进制的对称的数 肯定是一个奇数,

然后,我们就可以直接从 200+ 这个地方去搜索

最后,找到了这么一组数字 A.B.C.D, 根据排列组合的原理,我们就可以知道剩下的7个组合了。

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33826977/article/details/78067579

一步一步用Delphi6实现Web Service

      本文介绍的是如何用Delphi6开发Web Service程序,并把服务程序放在IIS Web服务器上提供给各种客户程序调用。一编写服务程序第一步:File----->New----->O...
  • coala
  • coala
  • 2001-10-26 11:27:00
  • 710

金山面试题目(c++经典收藏1)

笔试题目(C++) 1. sizeof用法,和strlen的区别 2. 各种数据结构,如堆、栈、队列等的特征和作用 3. 什么是野指针,什么情况下会产生野指针,如何避免? 4.快速排序的时间复...
  • ghevinn
  • ghevinn
  • 2012-08-24 15:53:42
  • 1276

金山2010年9月校园招聘WPS服务端(C++)笔试题

  • 2010年09月27日 18:51
  • 7.95MB
  • 下载

金山WPS面试题目

  • 2017年11月26日 21:25
  • 247KB
  • 下载

2012-9-26 金山WPS笔试题

今晚的笔试题目不难,所考算法也不是很难,关键在仔细审题和平常的积累…… 1. 有770个节点的完全二叉树,问叶子节点有多少?(重点是叶子节点,不是最下一层的节点数目,陷阱呀) 可以计算得出该完全二...
  • shenshuiyoulan
  • shenshuiyoulan
  • 2012-09-26 22:42:24
  • 3847

金山(Kingsoft)笔试面试题整理之008

题目8:在漆黑的夜里,四位旅行者来到了一座狭窄而且没有护栏的桥边。如果不借助手电筒的话,大家是无论如何也不敢过桥去的。不幸的是,四个人一共只带了一只手电筒,而桥窄得只够让两个人同时过。如果各自单独过桥...
  • happyjiahan
  • happyjiahan
  • 2012-03-02 10:02:20
  • 760

华为C++笔试题

1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分) int a = 4; (A)a += (a++); (B) a += (++a) ;(C) (a++) +=...
  • hubinbin595959
  • hubinbin595959
  • 2015-10-30 14:13:45
  • 4415

华为笔试题集

1.static有什么用途?(请至少说明两种)     1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。     2) 在模块内(但在函数体外),一个被声明为静态的变量可以...
  • viviju1989
  • viviju1989
  • 2013-01-23 00:01:40
  • 1960

华为笔试题

1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分) int a = 4; (A)a += (a++); (B) a += (++a) ;(C) (a++) +=...
  • zhaixh_89
  • zhaixh_89
  • 2013-09-03 17:36:33
  • 9844

华为笔试题

1.写出判断ABCD四个表达式的是否正确, 若正确, 写出经过表达式中 a的值(3分) int a = 4; (A)a += (a++); (B) a += (++a) ;(C) (a++) +=...
  • zhaixh_89
  • zhaixh_89
  • 2013-09-03 17:36:33
  • 9844
收藏助手
不良信息举报
您举报文章:C++笔试题(十二).金山
举报原因:
原因补充:

(最多只允许输入30个字)