范文无忧网面试笔试笔试回答

名企招聘C++程序员笔试题

06月30日 编辑 fanwen51.com

[java程序员面试自我介绍]自我介绍是向别人展示你自我介绍好不好。下面是ja程序员面试自我介绍,一起来看一下吧。 ja程序员面试自我介绍 ja程序员应试者应充分利用各种个人资源。想了解ja程序员面试指...+阅读

名企招聘C++程序员笔试题

单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1-2-3-4-5 通过反转后成为5-4-3-2-1。

最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:

struct linka {

int data;

linka* next;

};

void reverse(linka* head) {

if(head ==NULL)

return;

linka *pre, *cur, *ne;

pre=head;

cur=head-next;

while(cur)

{

ne = cur-next;

cur-next = pre;

pre = cur;

cur = ne;

}

head-next = NULL;

head = pre;

}

还有一种利用递归的方法。这种方法的基本思想是在反转当前节点之前先调用递归函数反转后续节点。源代码如下。不过这个方法有一个缺点,就是在反转后的最后一个结点会形成一个环,所以必须将函数的返回的节点的next域置为NULL。因为要改变head指针,所以我用了引用。算法的源代码如下:

linka* reverse(linka* p,linka* head)

{

if(p == NULL || p-next == NULL)

{

head=p;

return p;

}

else

{

linka* tmp = reverse(p-next,head);

tmp-next = p;

return p;

}

}

②已知String类定义如下:

class String

{

public:

String(const char *str = NULL); 通用构造函数

String(const String another); 拷贝构造函数

~ String(); 析构函数

String operater =(const String rhs); 赋值函数

private:

char *m_data; 用于保存字符串

};

尝试写出类的成员函数实现。

答案:

String::String(const char *str)

{

if ( str == NULL ) strlen在参数为NULL时会抛异常才会有这步判断

{

m_data = new char[1] ;

m_data[0] = ;

}

else

{

m_data = new char[strlen(str) + 1];

strcpy(m_data,str);

}

}

String::String(const String another)

{

m_data = new char[strlen(another.m_data) + 1];

strcpy(m_data,other.m_data);

}

String String::operator =(const String rhs)

{

if ( this == rhs)

return *this ;

delete []m_data; 删除原来的数据,新开一块内存

m_data = new char[strlen(rhs.m_data) + 1];

strcpy(m_data,rhs.m_data);

return *this ;

}

String::~String()

{

delete []m_data ;

}

1.求下面函数的返回值(微软)

int func(x)

{

int countx = 0;

while(x)

{

countx ++;

x = x(x-1);

}

return countx;

}

假定x = 9999。 答案:8

思路:将x转化为2进制,看含有的1的个数。

2. 什么是引用?申明和使用引用要注意哪些问题?

答:引用就是某个目标变量的别名(alias),对应用的操作与对变量直接操作效果完全相同。申明一个引用的时候,切记要对其进行初始化。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名,不能再把该引用名作为其他变量名的别名。声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元。不能建立数组的引用。

3. 将引用作为函数参数有哪些特点?

(1)传递引用给函数与传递指针的效果是一样的。这时,被调函数的形参就成为原来主调函数中的实参变量或对象的一个别名来使用,所以在被调函数中对形参变量的操作就是对其相应的目标对象(在主调函数中)的操作。

(2)使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作;而使用一般变量传递函数的参数,当发生函数调用时,需要给形参分配存储单元,形参变量是实参变量的副本;如果传递的是对象,还将调用拷贝构造函数。因此,当参数传递的数据较大时,用引用比用一般变量传递参数的效率和所占空间都好。

延伸阅读:

Java程序员面试中的多线程问题0、Ja中多线程同步是什么?在多线程程序下,同步能控制对共享资源的访问。如果没有同步,当一个Ja线程在修改一个共享变量时,另外一个线程正在使用或者更新同一个变量,这样容易导致...

C++经典面试问题C++经典面试问题分享1,关于动态申请内存答:内存分配方式三种:(1)从静态存储区域分配:内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。全局变量,static变...

php程序员面试经历(一) 明天还有两场面试,本来想着早点休息的,可是纠结了一番,还是决定写下此文。 因为对深圳的环境还是不太熟悉,即使早上的面试时间是十点半,可我还是七点十五分起床了,然后刷牙洗...

c++工程师面试问题面试时如何选择搭配饰物?领带:求职者不可能戴了一条漂亮的领带而获得一个职位,但是可以肯定的是,如果戴了一条幼稚可笑的领带就会使你失去这个职位。所以,不要小看配饰的作用, 精...

了解程序员面试技巧在开始求职之前,需要做一些准备工作。比方说要知道自己喜欢什么东西而去求职,否则是没有意义的。仅仅成为一名好的编码人员是不够的,你必须理解市场想要的是什么,如何提高自己的...

腾讯cc++面试用的笔试题1、请定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句 #define Max(a, b) (((a b) + abs(a b)) ? a : b) 2、如何输出源文件的标题和目前执行行的行数 int line...

程序员自我介绍简历程序员面试自我介绍【1】 我叫xxx,今年21岁,毕业于xx解放军信息工程大学计算机科学与技术专业,拥有扎实的core ja基础,良好的编程风格;熟悉jsp+servlet+jabean模式的web开发;熟...

如何面试ios程序员1、面试的目的 求职者通过表现证明自己对岗位的胜任 公司通过面试找到符合职位需求的员工 面试者面试的表现影响着公司用人选择,对于软件工程师,我的感觉技术面试往往是天王山...

文思c++笔试题目简答题 1、什么是纯虚函数,什么是抽象类 2、你对stl了解吗?说下vector的是如何访问元素的。 3、构造函数能够设为私有吗? 4、类的静态成员怎么初始化?const和defined的区别?...

推荐阅读
图文推荐
栏目列表