
面试题目
Richard-Rong
Life rewards courage.
展开
-
字符串的构造函数和析构函数以及赋值函数的重载
字符串的构造函数和析构函数以及赋值函数的重载,是面试中经常考到的问题,意在考察应聘者对于重载以及构造函数、析构函数的理解。程序如下:#include#includeusing namespace std;class String{public: String(const char*str = NULL); String(const String &other);原创 2012-10-22 07:36:19 · 3056 阅读 · 1 评论 -
关于内存的思考
一、void GetMemory(char *p){ p = (char*)malloc(100);}void Test(void){ char *str = NULL; GetMemory(str); strcpy(str,"Hello,World"); printf("%s",str);}请问运行Test有什么样的结果?答:在函数内部修原创 2012-10-22 07:02:27 · 1015 阅读 · 0 评论 -
两个链表中的第一个公共节点
题目:输入两个链表,找出它们的第一个公共节点。链表的定义如下:struct ListNode{int m_nKey;ListNode *m_pNext;};面试这道题的时候很多的面试者第一反应就是采用蛮力的方法:在第一个链表上顺序遍历每个节点,每遍历到一个节点的时候,在第二个链表上顺序遍历每个节点。如果第二个链表上的节点和第一个链表上的节点一样,就说明两个链原创 2012-10-21 10:24:03 · 8999 阅读 · 0 评论 -
如何判断单链表里面是否有环
定义两个指针p、q,然后让p、q同时从链表头向后查找,注意他们移动的步幅是不同的分别为a、b,例如p指针每次执行一次【p = p->next;】q每次执行两次【q = q->next;】,如果q先到链尾【if(q->next == NULL)】则没有死循环(这里假设q比p的移动速度要快),如果p、q在此之前相遇了则有死环。实现的函数如下:bool CircleInList(原创 2012-10-21 08:40:24 · 1364 阅读 · 0 评论 -
快速排序
快速排序是面试中经常被考到的算法,所以掌握快速排序很重要。。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。例:5 2 6 8 4 3 7经过第一次快速排序之后: 3 2 4 5 8原创 2012-10-20 11:33:55 · 647 阅读 · 0 评论 -
二分查找
二分查找是面试中经常考到的题目,所以一定要掌握二分查找的思想。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 下面通过我原创 2012-10-18 07:40:49 · 839 阅读 · 0 评论 -
指针运算
题目一:请问下面代码输出的结果是多少?#includeint main(){ int *ip1,*ip2,ivalue; char *cp1,*cp2,cvalue; ip1 = (int*)0x500; ip2 = (int*)0x518; ivalue = ip2 - ip1; cp1 = (char*)0x500; cp2 = (c原创 2012-09-30 17:24:59 · 947 阅读 · 0 评论 -
面试题目之指针
题目一:请分析下面代码的结果。#include#include#includeint main(){ char *p1 = "China"; char *p2 = NULL; p2 = (char*)malloc(20); memset(p2,0,20); while(*p2++ = *p1++); printf("%s\n",p2原创 2012-09-30 16:59:16 · 729 阅读 · 0 评论