c++ 面试题(汇总)

1,extern 关键字作用:

    http://www.cnblogs.com/lzjsky/archive/2010/11/24/1886686.html

2,static 关键字作用:

    https://baike.sogou.com/v3239767.htm?fromTitle=static

    http://blog.sina.com.cn/s/blog_5f5fff010100cs98.html

3,volatile(直接存取原始内存地址)的作用:  

  作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值。简单地说就是防止编译器对代码进行优化.

    https://baike.sogou.com/v126455.htm?fromTitle=volatile

4,const 的作用:

  const在*的左边,则指针指向的变量的值不可直接通过指针改变(可以通过其他途径改变);在*的右边,则指针的指向不可变。简记为“左定值,右定向”。

  https://www.cnblogs.com/xudong-bupt/p/3509567.html

5,new 和 malloc 的区别:

  https://blog.csdn.net/shanghairuoxiao/article/details/72876248

  https://baike.sogou.com/v8439403.htm?fromTitle=realloc

6,C++ 多态性和虚函数表:定义了基类的指针,就去基类的虚函数表中去查要调用的函数。(此时,派生类新加入的函数地址已经在基类的 V-Table 中了)

  https://blog.csdn.net/haoel/article/details/1948051/#commentBox

  https://baike.sogou.com/v55534847.htm;jsessionid=75C77B5F0A32D1EFCE8237B9CE8339B3?fromTitle=%E8%99%9A%E5%87%BD%E6%95%B0%E8%A1%A8

  http://www.cnblogs.com/chinazhangjie/archive/2012/07/11/2586535.html(值得一看)

7,类继承中的成员布局情况:(突然想到,还未查相关资料)

8,指针和引用的区别:

     数组和指针的联系:

  https://blog.csdn.net/thisispan/article/details/7456169

9,智能指针:(需要看看)

  http://www.cnblogs.com/xiehongfeng100/p/4645555.html

10,C++ 四种类型转换:static_cast, dynamic_cast, const_cast, reinterpret_cast

  dynamic_cast: 作用:主要用于进行“下行转换时”的类型安全检查

  思考1:什么是“下行转换”?

  思考2:什么是不安全的转换?为什么不安全? 

 1 class B {
 2 public:
 3     int m_iNum;
 4     virtual void foo();
 5 };
 6 
 7 class D : public B {
 8 public:
 9     char *m_szName[100];
10 };
11 
12 //@ 如果 pb 指向一个 D 类型的对象,此时 pd1 和 pd2 是一样的,
13 //  并且这两个指针执行 D 类型的任何操作(比如访问 D 的成员函数)都是安全的。
14 //@ 如果 pb 指向一个 B 类型的对象,此时 pd1 将是一个指向该对象的指针(用 static_cast 转型不检查安全性),
15 // 对它进行 D 类型的操作将是不安全的(例如访问 m_szName),此时 B 对象内没有 D 对象中的成员,
16 // 故把这个 转型的 D 类型的指针当作真正的 指向 D 对象的指针来用是不安全的)。
17 // @ 当用 dynamic_cast 进行转型时,此时 pd2 将是一个空指针,这是用该指针进行访问会直接报错,所以是安全的。
18 
19 //@ 下行转换:就是把一个指向基类对象类型的指针强制转换为指向派生类对象类型的指针
20 
21 void func(B *pb) {
22     D *pd1 = static_cast<D*>(pb);
23     D *pd2 = dynamic_cast<D*>(pb);
24 }
dynamic_cast 总结

  http://www.cnblogs.com/BeyondAnyTime/archive/2012/08/23/2652696.html

11,内存对齐:

  http://www.cppblog.com/snailcong/archive/2009/03/16/76705.html

12,内联函数有什么优点?内联函数与宏定义的区别?

  https://blog.csdn.net/shanghairuoxiao/article/details/72876248#commentBox

13,C++ 的内存管理(堆区,栈区,常量区,静态和全局区)

  https://blog.csdn.net/zhizunwudi/article/details/10330465

14,STL 内存分配:

  https://blog.csdn.net/mmqqyyqqyyq/article/details/84191586

  https://blog.csdn.net/qq_34228327/article/details/83118646

15,STL中的 set 和 map的实现(红黑树):注:可以看看《STL源码剖析----侯捷著》

  https://blog.csdn.net/u010899985/article/details/80981053

16,模板特化:

  https://blog.csdn.net/thefutureisour/article/details/7964682/

17,手写 strcpy, strncpy, memcpy, strcat, strcmp 函数:具体见搜狗百科相关词条。

18,数据结构和算法(主要是多刷题,leecode 剑指OFFER,牛客网等)注:可以看我的 leetcode 系列博客 

  Hash 表

  :红黑树,字典树等

  链表,栈和队列

  海量数据问题

  排序和搜索

  位运算

============网络与 TCP/IP===============

 19,TCP 和 UDP 简介及头部格式:

  https://blog.csdn.net/shanghairuoxiao/article/details/68927070

20,TCP 三次握手和四次挥手过程:

  TCP相关技术:

  https://blog.csdn.net/shanghairuoxiao/article/details/68927100

 21,TCP 和 UDP 的网络编程:

  TCP:https://blog.csdn.net/shanghairuoxiao/article/details/69803044

  UDP:https://blog.csdn.net/shanghairuoxiao/article/details/69951345

 22,ARP 协议和 DNS

  ARP:https://blog.csdn.net/zln99/article/details/51050472

  DNS:https://blog.csdn.net/yipiankongbai/article/details/25031461

23,ping 和 traceroute

  ping:点这里看具体细节

  traceroute:http://www.cnblogs.com/peida/archive/2013/03/07/2947326.html

===========操作系统======================

24,进程调度算法:

  https://blog.csdn.net/leex_brave/article/details/51638300

 25,死锁:

  https://blog.csdn.net/shanghairuoxiao/article/details/70444940

26,IO模式:

  https://segmentfault.com/a/1190000003063859

27,孤儿进程,僵尸进程,守护进程:

       https://blog.csdn.net/u013616945/article/details/77606449

28,伙伴算法(内存管理)

  https://blog.csdn.net/orange_os/article/details/7392986

29,进程与线程:

  http://www.cnblogs.com/fuchongjundream/p/3829508.html

所有博文均为原著,如若转载,请注明出处!
原文地址:https://www.cnblogs.com/zpcoding/p/10522483.html