又刷了一套题

这些题都是百度、阿里巴巴、腾讯、网易、新浪等公司的面试原题,有一定的难度。只是确实相当有水平,能够通过做题来查漏补缺。

1.补充以下函数代码:

假设两段内存重叠,用memcpy函数可能会导致行为没有定义。

而memmove函数可以避免这样的问题,以下是一种实现方式,请补充代码。

  1. #include <iostream>
  2. using namespace std;
  3. void* memmove(void* str1,const void* str2,size_t n)
  4. {
  5. char* pStr1= (char*) str1;
  6. const char* pStr2=(const char*)str2;
  7. if ( ) {
  8. for(size_t i=0;i!=n;++i){
  9. *(pStr1++)=*(pStr2++);
  10. }
  11. }
  12. else{
  13. pStr1+=n-1;
  14. pStr2+=n-1;
  15. for(size_t i=0;i!=n;++i){
  16. *(pStr1--)=*(pStr2--);
  17. }
  18. }
  19. return ( );
  20. }

A.    pStr1<pStr2
str1

B.    pStr1+n< pStr2
str2

C.   pStr1+n< pStr2 || pStr2+n<pStr1
str2

D.   pStr2+n<pStr1
str1

答案:A

仅仅要pStr1的地址在pStr2的前面,甚至是。pStr1的起始地址和pStr2一样。

例如以下语句

  1. for(size_t i=0;i!=n;++i){
  2. *(pStr1++)=*(pStr2++);

就能够保证pStr2在被覆盖前,将值copy到pStr1。

最后返回非const的Str1。

2.int x[6][4],(*p)[4];p=x; 则*(p+2)指向哪里?

A. x[0][1]

B. x[0][2]

C. x[1][0]

D. x[2][0]

答案:D

int  (*p)[4]是一个int型的数组指针,p=x,即为,p指向x[6][4]的首地址,p=&x[0][0]。

而*(p)=x[0][0],*(p+2)=x[0+2][0]

3.以下有关C++中为什么用模板类的原因。描写叙述错误的是?

A. 可用来创建动态增长和减小的数据结构

B. 它是类型无关的。因此具有非常高的可复用性

C. 它执行时检查数据类型,保证了类型安全

D. 它是平台无关的,可移植性

答案:C

注意,模板类不能在执行时检查数据类型。执行时检查是多态的特性

4.

  1. int func(int a)
  2. {
  3. int b;
  4. switch (a)
  5. {
  6. case 1: b = 30;
  7. case 2: b = 20;
  8. case 3: b = 16;
  9. default: b = 0;
  10. }
  11. return b;
  12. }

则func(1)= ?

A.30

B.20

C.16

D.0

答案:D

没有break语句,所以一直向下运行,运行到b=0结束

5.

  1. class A
  2. {
  3. int a;
  4. short b;
  5. int c;
  6. char d;
  7. };
  8. class B
  9. {
  10. double a;
  11. short b;
  12. int c;
  13. char d;
  14. };

在32位机器上用gcc编译以上代码,求sizeof(A),sizeof(B)各自是多少。

A. 12 16

B. 12 12

C. 16 24

D. 16 20

答案:C

copy别人的,人家写的很好

依据下面条件进行计算:

1、  结构体的大小等于结构体内最大成员大小的整数倍

2、  结构体内的成员的首地址相对于结构体首地址的偏移量是其类型大小的整数倍。比方说double型成员相对于结构体的首地址的地址偏移量应该是8的倍数。

3、  为了满足规则1和2编译器会在结构体成员之后进行字节填充!

A中。a占4个字节。b本应占2个字节。但因为c占4个字节,为了满足条件2,b多占用2个字节,为了满足条件1。d占用4个字节,一共16个字节。

B中,a占8个字节,b占2个字节,但因为c占4个字节,为了满足条件2。b多占用2个字节。

即abc共占用8+4+4=16个字节。

为了满足条件1,d将占用8个字节。一共24个字节。

6.以下有关继承、多态、组合的描写叙述。说法错误的是?

A. 封装。把客观事物封装成抽象的类,而且类能够把自己的数据和方法仅仅让可信的类或者对象操作。对不可信的进行信息隐藏

B. 继承能够使用现有类的全部功能。并在无需又一次编写原来的类的情况下对这些功能进行扩展

C. 隐藏是指派生类中的函数把基类中同样名字的函数屏蔽掉了

D. 覆盖是指不同的函数使用同样的函数名。可是函数的參数个数或类型不同

答案:D

D说的明明是函数重载好不好。。

。。

7.以下有关c++线程安全,说法错误的是?

A.线程安全问题都是由全局变量及静态变量引起的

B.若每一个线程中对全局变量、静态变量仅仅有读操作,而无写操作,一般来说,这个全局变量是线程安全的。若有多个线程同一时候运行写操作,一般都须要考虑线程同步,否则的话就可能影响线程安全

C. c++标准库里面的string保证是线程安全的

D. POSIX线程标准要求C标准库中的大多数函数具备线程安全性

答案:C

C++标准库出现的时候,C++还没有线程的概念,所以string不能保证是线程安全的

8.下面程序的输出是

  1. class Base
  2. {
  3. public:
  4. Base(int j): i(j) {}
  5. virtual~Base() {}
  6. void func1()
  7. {
  8. i *= 10;
  9. func2();
  10. }
  11. int getValue()
  12. {
  13. return i;
  14. }
  15. protected:
  16. virtual void func2()
  17. {
  18. i++;
  19. }
  20. protected:
  21. int i;
  22. };
  23. class Child: public Base
  24. {
  25. public:
  26. Child(int j): Base(j) {}
  27. void func1()
  28. {
  29. i *= 100;
  30. func2();
  31. }
  32. protected:
  33. void func2()
  34. {
  35. i += 2;
  36. }
  37. };
  38. int main()
  39. {
  40. Base * pb = new Child(1);
  41. pb->func1();
  42. cout << pb->getValue() << endl;
  43. delete pb;
  44. }

A. 11

B. 101

C. 12

D. 102

答案:C

func1不是虚函数。func2是虚函数。所以

  1. pb->func1();

调用的是Base类的func1和Child类的func2

9.以下对静态数据成员的描写叙述中,正确的是?

A. 静态数据成员能够在类体内进行初始化

B.静态数据成员不能够被类的对象调用

C.静态数据成员不受private控制符的作用

D.静态数据成员能够直接用类名调用

答案:D

A中,const static类型能够在类体内进行初始化

10.#include<file.h>与 #include "file.h"的差别?

A.    前者首先从当前工作路径搜寻并引用file.h。而后者首先从Standard Library的路径寻找和引用file.h

B.    前者首先从StandardLibrary的路径寻找和引用file.h,而后者首先从当前工作路径搜寻并引用file.h

C.   两者都是首先从StandardLibrary的路径寻找和引用file.h

D.   两者都是首先从当前工作路径搜寻并引用file.h

答案:B

C/C++综合測试题(三)的更多相关文章

  1. (各个公司面试原题)在线做了一套CC++综合測试题,也来測一下你的水平吧(二)

    刚才把最后的10道题又看了下.也发上来吧. 以下给出试题.和我对题目的一些理解 前10道题地址 (各个公司面试原题)在线做了一套CC++综合測试题.也来測一下你的水平吧(一) 11.设已经有A,B,C ...

  2. C/C++综合測试题(四)

    又刷了一套题 这些题都是百度.阿里巴巴.腾讯.网易.新浪等公司的面试原题.有一定的难度.只是确实相当有水平.能够通过做题来查漏补缺. 11.以下代码的输出是什么? class A { public: ...

  3. JAVA 综合面试题

    JAVA 综合面试题 2007-08-12 目录 TOC \o "1-3" \h \z \u Java面试题整理 9 Java面向对象 9 1. super()与this()的区别 ...

  4. 当当网-前端project师測试题

                                     前端project师測试题(笔试时间20分钟.面试时间20分钟)   一.笔试 1.基础问题 (1)前端页面有哪三层构成,各自是什么? ...

  5. 多测师讲解第一个月 _综合面试题_高级讲师肖sir

    第一个月综合面试题 1.  冒烟测试是什么意思?  对主要的用例测试 2.你们公司的项目流程是什么? 3.你们公司的bug分几个级别?  4个 4.你对外键是怎么理解的? 你会使用外键吗?给一个表添加 ...

  6. 动力节点 mysql 郭鑫 34道经典的面试题三

    1.第十五题 15.列出受雇日期早于其直接上级的所有员工编号.姓名.部门名称 思路一:第一步将emp a看成员工表,将emp b 看成领导表,员工表的mgr字段应该等于领导表的主键字段 mysql&g ...

  7. python面试题三:Python 网络编程与并发

    1 简述 OSI 七层协议. OSI七层协议模型主要是: 应用层(Application):为用户的应用程序(例如电子邮件.文件传输和终端仿真)提供网络服务. 表示层(Presentation):使用 ...

  8. JUC在深入面试题——三种方式实现线程等待和唤醒(wait/notify,await/signal,LockSupport的park/unpark)

    一.前言 在多线程的场景下,我们会经常使用加锁,来保证线程安全.如果锁用的不好,就会陷入死锁,我们以前可以使用Object的wait/notify来解决死锁问题.也可以使用Condition的awai ...

  9. JAVA组程序优化综合考试试题

    题目原型: 有一张标准的树状结构表,里面有Structure_Id和 Parent_Id两个关键列,记录了结点的父子关系.现在要求添加一个字段为 Structure_Code ,标记为 三位一个节点关 ...

随机推荐

  1. 新 Netflix 开源门户

    Netflix 开源改革计划:新 Netflix 开源门户 http://www.oschina.net/news/67555/evolution-of-open-source-at-netflix ...

  2. Android 将Activity殴打jar包 对于由第三方使用 解决XML 图片 文本资源并不难过进入jar包装问题!

    做项目需要打包成jar文件供第三方使用项目要求(将图片 文字资源写到到jar包中,第三方调用时,仅须要在AndroidManifest.xml配置下对应的Activity通过StartActivity ...

  3. Unity3D之挥动武器产生的剑痕特效

    网维教程网 观看很多其它教程 眼下已知3种方法能够做这样的剑痕特效 1.尾随特效 2.程序实现动态面来处理剑痕动画. 3.美术实现剑痕动画,直接坐在模型动画里面 (由于我不会美术所以这个忽略 嘿嘿) ...

  4. WPF如何获得变量异步回调函数时产生的异步回调

    有这样的问题,WPF当使用异步回调,需要使用产生的异步变量中的回调函数.数据库中查询诸如异步函数来获得一DataTable.怎样传递给回调函数呢? [方案一]使用全局变量 非常easy想到的是用全局变 ...

  5. CodeForces 52C Circular RMQ(间隔周期段树,间隔更新,间隔总和)

    转载请注明出处:http://blog.csdn.net/u012860063 题目链接:http://codeforces.com/problemset/problem/52/C You are g ...

  6. oracle 转 mysql 最新有效法(转)

    关键字:Oracle 转 MySQL . Oracle TO MySQL 没事试用了一下Navicat家族的新产品Navicat Premium,他集 Oracle.MySQL和PostgreSQL管 ...

  7. spring.net中间IoC、DI和MVC

    轮廓 spring.net它是开源的业务层框架,功能很强大,它归结到什么都有3能:面向切面编程:IoC和DI:提供综合型的框架支持,本片博客主要说一下IoC和DI.和其提供的对MVC框架的支持. Io ...

  8. #Windows Phone:在HTML5专案中,如何从Javascript传送字串到C#的APP端

    原文:#Windows Phone:在HTML5专案中,如何从Javascript传送字串到C#的APP端 #Windows Phone:在HTML5专案中,如何从Javascript传送字串到C#的 ...

  9. 树莓派安装 dig命令

     apt-get install  dnsutils

  10. 重写onBackPressed方法

    android手机back按键响应方法重构: long exitTime = System.currentTimeMillis() - 2000; public void onBackPressed( ...