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

编程员面试题目

11月27日 编辑 fanwen51.com

[销售工程师面试经历]今天小编在本站上收集与面试相关的资料,无意中看到这份销售工程师面试经历,觉得里面的一些面试心得对正在求职的朋友很有帮助,因此跟大家分享一下,欢迎大家阅读。我们在大会议室...+阅读

①链表反转

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

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

1.structlinka{

2.intdata;

3.linka*next;

4.};

5.voidreverse(linka*head){

6.if(head==NULL)

7.return;

8.linka*pre,*cur,*ne;

9.pre=head;

10.cur=head-next;

11.while(cur)

12.{

13.ne=cur-next;

14.cur-next=pre;

15.pre=cur;

16.cur=ne;

17.}

18.head-next=NULL;

19.head=pre;

20.}

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

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

2.{

3.if(p==NULL

p-next==NULL)

4.{

5.head=p;

6.returnp;

7.}

8.else

9.{

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

11.tmp-next=p;

12.returnp;

13.}

14.}

②已知String类定义如下:

classString

{

public:

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

String(constStringanother); 拷贝构造函数

String(); 析构函数

Stringoperater=(constStringrhs); 赋值函数

private:

char*m_data; 用于保存字符串

};

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

答案:

String::String(constchar*str)

{

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

{

m_data=newchar[1];

m_data[0]='\0';

}

else

{

m_data=newchar[strlen(str)+1];

strcpy(m_data,str);

}

}

String::String(constStringanother)

{

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

strcpy(m_data,other.m_data);

}

StringString::operator=(constStringrhs)

{

if(this==rhs)

return*this;

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

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

strcpy(m_data,rhs.m_data);

return*this;

}

String::

String()

{

delete[]m_data;

}

③网上流传的c++笔试题汇总

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

intfunc(x)

{

intcountx=0;

while(x)

{

countx++;

x=x(x-1);

}

returncountx;

}

假定x=9999。

答案:8

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

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

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

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

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

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

(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中同样要给形参分配存储单元,且需要重复使用*指针变量名的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面,在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。

4.在什么时候需要使用常引用?

如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式:const类型标识符引用名=目标变量名;

例1

inta;

constintra=a;

ra=1; 错误

a=1; 正确

例2

stringfoo();

voidbar(strings);

那么下面的表达式将是非法的:

bar(foo());

bar(helloworld);

原因在于foo()和helloworld串都会产生一个临时对象,而在C++中,这些临时对象都是const类型的。因此上面的表达式就是试图将一个const类型的对象转换为非const类型,这是非法的。

引用型参数应该在能被定义为const的情况下,尽量定义为const。

延伸阅读:

应届毕业生要如何面试本站没有工作经历面试时怎么办呢?YJBYS教你几招 (一)充足而真实的职业能力实证是敲开企业大门的金砖。 在当前的就业形势下,众多毕业生都将实习作为一个重要的求职方法,投入大量的精...

面试出错如何采取措施弥补求职者在面试现场常常由于紧张,甚至产生恐惧心理,难免出错,且也容易导致接下来的面试效果越来越差,最终可能连说话都语无伦次了。那么,面对这样的情况,我们应该如何去补救呢? 首先,...

应聘办事员的常见面试问题以下面试问题是考官最喜欢考察应聘办事人员求职者的工作效果,大家敬请留意。 1、你想和你的老板建立什么样的关系? 2、讲一下你曾经同时为多个老板服务的经历,这些老板都认为他...

面试时如何自己的优势清华大学国际项目管理学院特聘教授,国家二级心理咨询师,原诺基亚(中国)投资有限公司北方区人力资源经理毕业生范文网女士做客职场讲坛,答网友问。 风说:面试时,怎样表现自己的优势,...

表示谢意的英语面试句型英语面试结束后,求职者如何用英语表达自己的谢意呢? BASIC EXPRESSIONS 基本句型表达 1) Can I help you? 需要我帮忙吗? 2) May I speak to... ? 我可以和某某讲话吗? 3) I am...

面试四字经面试面试求职者们,通常都是同一聊、二讲、三问、四答这几个方面来了解求职者的,下面我们一起来看看吧! 一、 聊 面试官聊与招聘职位相关的内容,聊三分钟。 为什么面试官要采用...

面试的七大箴言根据本站的HR多年的面试经历来跟大家谈谈有关才俊因为缺乏技巧而丧失了与心仪之企业牵手的机会,而得出一结论:在能力、经验相差不多的情况下,面试时的技巧往往成为决定性的因素...

面试技巧讲解面试有何技巧呢?请看本站的介绍 学会用事实来证明自己 有的应聘者在回答问题时,尤其是本站,特喜欢用沟通能力强、勤奋之类的虚话,但是面试官可不是吃干饭的,马上来一句:请举一个例...

如何提高英语面试水平本站为大家说明下英语面试要怎样提高 Whats Your Real Salary? 你的实际薪水是多少? How much people make is the No. 1 lie, says Julie Jansen, a careercoach and author...

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