分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/8016173
C/C++类
1、以下程序的输出是(12)

class Base{public: Base(int j) : i(j) {  }  virtual ~Base() {  } void func1() {  i *= 10;  func2(); } int getValue() {  return i; }protected: virtual void func2() {  i++; }protected: int i;};class Child : public Base{public: Child(int j) : Base(j) {  } void func1() {  i *= 100;  func2(); }protected: void func2() {  i += 2; }};int main(void){ Base *pb = new Child(1); pb->func1(); cout<<pb->getValue()<<endl; delete pb;  return 0;}

2、请问程序的输出结果是(30)
#define DOUBLE(x) x+x // x*2
int i = DOUBLE(5)*5;
cout<<i<<endl;
3、写出一下程序的输出(死循环)

int main(void){ char num; for(num = 0; num < 255; )  num += num; printf("%d\n",num); return 0;}

4、程序出错在什么阶段?()

int main(void){ http://www.sogou.com cout<<"welcome to sogou"<<endl;  return 0;}

A、编译阶段出错     B、运行阶段出错     C、编译和运行都出错    D、程序运行正常
因为http://www.sogou.com中//后面是注释,前面的http:是标签(类似于goto语句中的标签)。(这个题目碉堡了)

5、下面程序执行结果为【说明:X86_64环境】(D)

int main(void){ int a[4][4] = {            {1,2,3,4},      {50,60,70,80},      {900,1000,1100,1200},      {13000,14000,15000,16000} }; int (*p1)[4] = a; int (*p2)[4] = &a[0]; int *p3 = &a[0][0]; printf("%d %d %d %d\n",*(*(a+1)-1),*(*(p1+3)-2)+1,*(*(p2-1)+16)+2,*(p3+sizeof(p1)-3));  return 0;}

A、16000 1101  13002 2
B、4  2  3  60
C、16000  2  3  2
D、4  1101  13002  60
p1为指向一维数组的指针,所以a + 1指向{50,60,70,80}这一维的地址。减一则为4的地址;同理第二个输出1101。同理,由于数组的列是4,所以*(p2 - 1) + 16就相当于*(p2) + 12,所以第三个输出13002。
第四个由于p1是指针,所以sizeof(p1)为8(68位的系统),所以第四个输出60。

6、在32位操作系统gcc编译器环境下,下面的程序的运行结果是(A)

class A{public: int b; char c; virtual void print() {  cout<<"this is father's function!"<<endl; }};class B : A{public: virtual void print() {  cout<<"this is children's function!"<<endl; }};int main(void){ cout<<sizeof(A)<<"  "<<sizeof(A)<<endl;  return 0;}

A、12  12
B、8  8
C、9  9
D、12  16
7、以下哪些做法是不正确或者应该极力避免的:【多选】(ACD)
A、构造函数声明为虚函数
B、派生关系中的基类析构函数声明为虚函数
C、构造函数调用虚函数
D、析构函数调用虚函数
8、关于C++标准模板库,下列说法错误的有哪些:【多选】(AD)
A、std::auto_ptr<Class A>类型的对象,可以放到std::vector<std::auto_ptr<Class A>>容器中
B、std::shared_ptr<Class A>类型的对象,可以放到std::vector<std::shared_ptr<Class A>>容器中
C、对于复杂类型T的对象tObj,++tObj和tObj++的执行效率相比,前者更高
D、采用new操作符创建对象时,如果没有足够内存空间而导致创建失败,则new操作符会返回NULL
A中auto是给别人东西而自己没有了。所以不符合vector的要求。而B可以。C不解释。new在失败后抛出标准异常std::bad_alloc而不是返回NULL。

9、有如下几个类和函数定义,选项中描述正确的是:【多选】(B)

class A{public: virtual void foo()   { }};class B{public: virtual void foo()   { }};class C : public A , public B{public: virtual void foo()   { }};void bar1(A *pa){ B *pc = dynamic_cast<B*>(pa);}void bar2(A *pa){ B *pc = static_cast<B*>(pa);}void bar3(){ C c; A *pa = &c; B *pb = static_cast<B*>(static_cast<C*>(pa));}

A、bar1无法通过编译
B、bar2无法通过编译
C、bar3无法通过编译
D、bar1可以正常运行,但是采用了错误的cast方法
选B。dynamic_cast是在运行时遍历继承树,所以,在编译时不会报错。但是因为A和B没啥关系,所以运行时报错(所以A和D都是错误的)。static_cast:编译器隐式执行的任何类型转换都可由它显示完成。其中对于:(1)基本类型。如可以将int转换为double(编译器会执行隐式转换),但是不能将int*用它转换到double*(没有此隐式转换)。(2)对于用户自定义类型,如果两个类无关,则会出错(所以B正确),如果存在继承关系,则可以在基类和派生类之间进行任何转型,在编译期间不会出错。所以bar3可以通过编译(C选项是错误的)。

10、在Intel CPU上,以下多线程对int型变量x的操作,哪几个不是原子操作,假定变量的地址都是对齐的。【多选】(ABC)
A、x = y   B、x++     C、++x     D、x = 1
看下在VC++6.0下的汇编命令即可:从图可以看出本题只有D选项才是原子操作。

11、一般情况下,下面哪些操作会执行失败?【多选】(BCD)

class A{public: string a; void f1() {  printf("Hello World"); } void f2() {  a = "Hello World";  printf("%s",a.c_str()); } virtual void f3() {  printf("Hello World"); } virtual void f4() {  a = "Hello World";  printf("%s",a.c_str()); }};

A、A *aptr = NULL;  aptr->f1();
B、A *aptr = NULL;  aptr->f2();
C、A *aptr = NULL;  aptr->f3();
D、A *aptr = NULL;  aptr->f4();
至于A为什么正确,因为A没有使用任何成员变量,而成员函数是不属于对象的,所以A正确。其实,A* aptr = NULL;aptr->f5();也是正确的,因为静态成员也是不属于任何对象的。至于BCD,在B中使用了成员变量,而成员变量只能存在于对象,C有虚表指针,所以也只存在于对象中。D就更是一样了。但是,如果在Class A中没有写public,那么就全都是private,以至于所有的选项都将会失败。

12、C++下,下面哪些template实例化使用,会引起编译错误?【多选】(CEF)

template<class Type> class stack;void fi(stack<char>);      //Aclass Ex{ stack<double> &rs;    //B stack<int> si;        //C};int main(void){ stack<char> *sc;      //D fi(*sc);              //E int i = sizeof(stack<string>);    //F  return 0;}

选C E F;  请注意stack和fi都只是声明不是定义。我还以为在此处申明后,会在其他地方定义呢,坑爹啊。
由于stack只是声明,所以C是错误的,stack不能定义对象。E也是一样,stack只是申明,所以不能执行拷贝构造函数,至于F,由于stack只是声明,不知道stack的大小,所以错误。如果stack定义了,将全是正确的。
13、以下哪个说法正确()

int func(){ char b[2]={0}; strcpy(b,"aaa");}

A、Debug版崩溃,Release版正常
B、Debug版正常,Release版崩溃
C、Debug版崩溃,Release版崩溃
D、Debug版正常,Release版正常
选A。因为在Debug中有ASSERT断言保护,所以要崩溃,而在Release中就会删掉ASSERT,所以会出现正常运行。但是不推荐如此做,因为这样会覆盖不属于自己的内存,这是搭上了程序崩溃的列车。

数据结构类
37、每份考卷都有一个8位二进制序列号,当且仅当一个序列号含有偶数个1时,它才是有效的。例如:00000000 01010011 都是有效的序列号,而11111110不是,那么有效的序列号共有(128)个。
38、对初始状态为递增序列的数组按递增顺序排序,最省时间的是插入排序算法,最费时间的算法(B)
A、堆排序  B、快速排序   C、插入排序   D、归并排序
39、下图为一个二叉树,请选出以下不是遍历二叉树产生的顺序序列的选项【多选】(BD)

A、ABCDEFIGJH
B、BDCAIJGHFE
C、BDCAIFJGHE
D、DCBJHGIFEA
40、在有序双向链表中定位删除一个元素的平均时间复杂度为()
A、O(1)   B、O(N)   C、O(logN)      D、O(N*logN)
41、将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为()
A、100     B、40     C、55      D、80
42、将数组a[]作为循环队列SQ的存储空间,f为队头指示,r为队尾指示,则执行出队操作的语句为(B)
A、f = f+1     B、f = (f+1)%m      C、r = (r+1)%m     D、f = (f+1)%(m+1)
43、以下哪种操作最适合先进行排序处理?
A、找最大、最小值   B、计算算出平均值   C、找中间值  D、找出现次数最多的值
44、设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元元素占一个空间,问A[3][3]存放在什么位置?(C)脚注(10)表示用10进制表示
A、688     B、678     C、692     D、696
45、使用下列二维图形变换矩阵A=T*a,将产生的变换结果为(D)

A、图形放大2倍
B、图形放大2倍,同时沿X、Y坐标轴方向各移动一个单位
C、沿X坐标轴方向各移动2个单位
D、沿X坐标轴放大2倍,同时沿X、Y坐标轴方向各移动一个单位
46、体育课的铃声响了,同学们都陆续地奔向操场,按老师的要求从高到矮站成一排。每个同学按顺序来到操场时,都从排尾走向排头,找到第一个比自己高的同学,并站到他的后面,这种站队的方法类似于()算法。
A、快速排序      B、插入排序      C、冒泡排序    D、归并排序
47、处理a.html文件时,以下哪行伪代码可能导致内存越界或者抛出异常(B)
         int totalBlank = 0;
         int blankNum = 0;
         int taglen = page.taglst.size();
A       for(int i = 1; i < taglen-1; ++i)
        {
                 //check blank
B             while(page.taglst[i] == "<br>" && i < taglen)
               {
C                       ++totalBlank;
D                       ++i;
               }
E             if(totalBlank > 10)
F                      blankNum += totalBlank;
G             totalBlank = 0;
        }
注意:以下代码中taglen是html文件中存在元素的个数,a.html中taglen的值是15,page.taglst[i]取的是a.html中的元素,例如page.taglst[1]的值是<html>
a.html的文件如下:
<html>
<title>test</title>
<body>
<div>aaaaaaa</div>
</body>
</html>
<br>
<br>
<br>
<br>
<br>
48、对一个有向图而言,如果每个节点都存在到达其他任何节点的路径,那么就称它是强连通的。例如,右图就是一个强连通图,事实上,在删掉哪几条边后,它依然是强连通的。(A)

A、a       B、b        C、c             D、d

100、一种计算机,其有如下原子功能:
1、赋值   a=b
2、+1操作,++a; a+1;
3、循环,但是只支持按次数的循环   for(变量名){/*循环里面对变量的修改不影响循环次数*/}
4、只能处理0和正整数
5、函数调用    fun(参数列表)
请用伪代码的形式分别在这个计算机上编程实现变量的加法、减法、乘法。

fun_add(a , b)
{
}
fun_multi(a , b)
{
}
fun_minus(a , b)
{
}
问题的关键在于如何实现自减一操作。
本来让-1自增n次即可实现n的自减的,但系统偏偏又不支持负数。

fun_add(a , b){ result = a; for(b)  ++result; return result;}fun_muti(a , b){ result = 0; for(b)  result = fun_add(result , a); return result;}dec(int n){ temp = 0; result = 0; for(n) {  result = temp;   //result永远比temp少1,巧妙地减少了一次自增  ++temp; } return result;}/*上面的dec这段函数代码执行后,result的值将变为n-1。注意到这段代码在自增时是如何巧妙地延迟了一步的。现在,我们相当于有了自减一的函数dec。实现a-b只需要令a自减b次即可*/fun_minus(a , b){ result = a; for(b)  result = dec(result);}

101、实现一个队链表排序的算法,C/C++可以使用std::list<int>,Java使用LinkedList<Integer>
要求先描述算法,然后再实现,算法效率尽可能高效。
主要考察链表的归并排序。
要点:需要使用快、慢指针的方法,找到链表的的中间节点,然后进行二路归并排序

typedef struct LNode{ int data; struct LNode *next;}LNode , *LinkList;// 对两个有序的链表进行递归的归并LinkList MergeList_recursive(LinkList head1 , LinkList head2){ LinkList result; if(head1 == NULL)  return head2; if(head2 == NULL)  return head1; if(head1->data < head2->data) {  result = head1;  result->next = MergeList_recursive(head1->next , head2); } else {  result = head2;  result->next = MergeList_recursive(head1 , head2->next); } return result;}// 对两个有序的链表进行非递归的归并LinkList MergeList(LinkList head1 , LinkList head2){ LinkList head , result = NULL; if(head1 == NULL)  return head2; if(head2 == NULL)  return head1; while(head1 && head2) {  if(head1->data < head2->data)  {   if(result == NULL)   {    head = result = head1;    head1 = head1->next;   }   else   {    result->next = head1;    result = head1;    head1 = head1->next;   }  }  else  {   if(result == NULL)   {    head = result = head2;    head2 = head2->next;   }   else   {    result->next = head2;    result = head2;    head2 = head2->next;   }  } } if(head1)  result->next = head1; if(head2)  result->next = head2; return head;}// 归并排序,参数为要排序的链表的头结点,函数返回值为排序后的链表的头结点LinkList MergeSort(LinkList head){ if(head == NULL)  return NULL; LinkList r_head , slow , fast; r_head = slow = fast = head; // 找链表中间节点的两种方法 /* while(fast->next != NULL) {  if(fast->next->next != NULL)  {   slow = slow->next;   fast = fast->next->next;  }  else   fast = fast->next; }*/ while(fast->next != NULL && fast->next->next != NULL) {  slow = slow->next;  fast = fast->next->next; }  if(slow->next == NULL)    // 链表中只有一个节点  return r_head; fast = slow->next; slow->next = NULL; slow = head; // 函数MergeList是对两个有序链表进行归并,返回值是归并后的链表的头结点 //r_head = MergeList_recursive(MergeSort(slow) , MergeSort(fast)); r_head = MergeList(MergeSort(slow) , MergeSort(fast)); return r_head;}

转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/8016173

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

搜狗2012 9 23校园招聘会笔试题相关推荐

  1. 搜狗2012.9.23校园招聘会笔试题

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/8016173 C/C++类 1.以下程序的输出是(12) class Ba ...

  2. 腾讯2012.9.23校园招聘会笔试题答案

    1 表的设计最合理 数据库里面 一般是 学生,学科,分数 分开放. 因此A合理 2 数据库系统产生不一致的根本原因 数据库完整性是为了保证由授权用户对数据库所做的修改不会影响数据一致性的损失 觉得C合 ...

  3. 优酷土豆2012.9.12校园招聘会笔试题

    选择题 1.已知中国人的血型分布约为A型:30%,B型:20%,O型:40%,AB型:10%,则任选一批中国人作为用户调研对象,希望他们中至少有一个是B型血的可能性不低于90%,那么最少需要选多少人? ...

  4. 搜狐2012.9.15校园招聘会笔试题

    一.不定项选择题 1.以下程序的打印结果是() #include<iostream> using namespace std;void swap_int(int a , int b) {i ...

  5. 搜狐2012 9 15校园招聘会笔试题

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一.不定 ...

  6. 腾讯校园招聘会笔试题 难题解析

    1. 数据存储在磁盘上的排列方式会影响I/O服务的性能,一个圆环的磁道上有10个物理块,10个数据记录R1------R10存放在这个磁道上,记录的安排顺序如下表所示: 物理块 1 2 3 4 5 6 ...

  7. 搜狐2012年校园招聘会笔试题解析

    一.不定项选择题 1.以下程序的打印结果是() [cpp]  view plain copy #include<iostream> using namespace std; void sw ...

  8. 腾讯2011.10.15校园招聘会笔试题

    转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/6878287 1.下面的排序算法中,初始数据集的排列顺序对算法的性能无影响 ...

  9. (转)腾讯2011.10.15校园招聘会笔试题

    1.下面的排序算法中,初始数据集的排列顺序对算法的性能无影响的是() A.插入排序                      B.堆排序                    C.冒泡排序       ...

最新文章

  1. Python命令行参数解析模块------argparse
  2. Ubuntu 16.04下Caffe-SSD的应用(七)——制作自己的VOC2007数据集
  3. 16.validate_api
  4. OCFS2在Linux下配置文档
  5. puppeteer执行js_使用Node.js和Puppeteer与表单和网页进行交互– 1
  6. 使用Fiddler对iPhone手机进行数据抓包分析
  7. 唏嘘!知名音乐站再传倒闭:官网、App挂掉,“留下了时代的眼泪...”
  8. SAP License:跨行如何转入SAP
  9. 实话实说!为什么说闷头学Python是自欺欺人?
  10. 中国 AI 开发者真实现状:人才依赖海外引进,本科 AI 教育盛行
  11. 自定义无穷大∞的显示内容
  12. php soapfault 怎么用,SoapFault出现的问题及解决办法分享
  13. 微信抖音工具箱头像制作壁纸小程序带改图制图流量主功能搭建动态社群人脉助手
  14. 给本本K46C升级内存并升级64位WIN7
  15. 三、网页中的超链接(hyperlink)
  16. 【烈日炎炎战后端】MySQL理论(2.8万字)
  17. web 移动端开发基础
  18. Visual Studio 2019的下载及安装
  19. erp系统的服务器如何配置,erp系统云服务器怎么配置
  20. 远程安装WMF5.1遇到的坑

热门文章

  1. 如何将照片转换文字?ocr文字识别
  2. 计算机试题dddd,2016年计算机一级考试操作题题库
  3. office提示错误1902该怎么解决
  4. Oracle查询数据,其中指定字段重复的只取其中一条
  5. [转] 三角化求深度值(求三位坐标)
  6. hex和bin文件格式
  7. 使用树莓派播放音频文件
  8. (16)一些别人修改网络模型的经验
  9. 计算机语言面向机器的语言,面向机器语言是什么
  10. (已解决)wps交叉引用更新所有域后出现“错误!未定义书签。”