c++面试题目----1.基本语言

1、说一下**static关键字的作用**

2、说一下C++和C的区别

优秀优秀!!!

https://www.cnblogs.com/Amedeo/p/6246013.html

3、说一下C++中static关键字的作用

4、请说一下static的作用

写得太好了!!!

https://www.cnblogs.com/BeyondAnyTime/archive/2012/06/08/2542315.html

5、说一说c++中四种cast转换

    static_cast

    dynamic_cast

    const_cast

    reinterpret_cast

http://blog.jobbole.com/108817/

6. 请说一下C/C++ 中指针和引用的区别?

https://blog.csdn.net/qq_27678917/article/details/70224813

7、给定三角形ABC和一点P(x,y,z),判断点P是否在ABC内,给出思路并手写代码

8、怎么判断一个数是二的倍数,怎么求一个数中有几个1,说一下你的思路并手写代码

9、请你说一下你理解的c++中的smart pointer四个智能指针:

shared_ptr

unique_ptr

weak_ptr

https://blog.csdn.net/ypshowm/article/details/89034855

10、请回答一下数组和指针的区别

11、请你回答一下野指针是什么?

(1)指针变量没有被初始化。任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存。
(2)指针p被free或者delete之后,没有置为NULL,让人误以为p是个合法的指针。别看free和delete的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。通常会用语句if (p != NULL)进行防错处理。很遗憾,此时if语句起不到防错作用,因为即便p不是NULL指针,它也不指向合法的内存块。

12、请你介绍一下C++中的智能指针

13、请你回答一下**智能指针有没有内存泄露的情况

14、请你来说一下**智能指针的内存泄漏如何解决

15、请你理解的c++中的**引用和指针

16、请你来说一下C++中的**智能指针

17、请你回答一下为什么析构函数必须是虚函数?为什么C++默认的析构函数不是虚函数

https://blog.csdn.net/zhangqk2016/article/details/51849535

多态是面向对象的一个基本属性,包括静态多态(编译阶段)和动态多态(运行阶段),静态多态主要是指函数参数不同产生的多态性,是在编译阶段可以识别的一种多态机制,而运行时多态则主要用于基类指针指向派生类对象时,可以通过基类指针直接调用派生类的对象函数,当然这种多态是通过虚函数实现的。

虚函数的目的就是通知系统在函数调用时能够自动识别对应的类对象类型,从而能够根据指针所指类型调用对应的类对象,实现函数调用时的多态性。对于析构函数而言,同样适用于上述规则。如果析构函数不是虚函数,那么在调用该函数时(对象被删除时)则只会调用当前对象对应的类的析构函数,这对于直接定义的对象是没有什么影响的,但是对于使用基类指向派生类的指针而言,因为基类指针实际上是基类类型,所以析构时自然只会调用基类的析构函数,这就可能产生内存泄漏(因为派生类的析构函数不被调用)。所以如果确定程序中有基类指针指向派生类的问题,则必须将基类的析构函数指定为虚函数,如此才能确保NEW出来的对象被正确的DELETE。

18、请你来说一下函数指针

https://www.cnblogs.com/lvchaoshun/p/7806248.html

函数指针指向的是函数而非对象,和其他指针一样,函数指针指向某种特定类型,函数的类型由它的返回类型和形参类型共同决定,与函数名无关.如

bool (*pf)(const string &,const string &);

pf = lengthCompare;

19、请你来说一下**fork函数

20、请你来说一下C++中析构函数的作用**

1. 作用:对象消亡时,自动被调用,用来释放对象占用的空间
2.特点:
   (1) 名字与类名相同
   (2) 在前面需要加上"~"
   (3) 无参数,无返回值
   (4) 一个类最多只有一个析构函数
   (5) 不显示定义析构函数会调用缺省析构函数

21、请你来说一下静态函数和虚函数的区别

静态数据成员

    在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。

    使用静态数据成员可以节省内存,因为它是所有对象所公有的,因此,对多个对象来说,静态数据成员只存储一处,供所有对象共用。静态数据成员的值对每个对象 都是一样,但它的值是可以更新的。只要对静态数据成员的值更新一次,保证所有对象存取更新后的相同的值,这样可以提高时间效率。

静态成员函数

    静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,对静态成员的引用不需要用对象名。
在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员。如果静态成员函数中要引用非静态成员时,可通过对象来引用。

22、请你来说一说重载和覆盖

23、请你来说一说static关键字

24.、请你说一说strcpy和strlen

25、请你说一说你理解的虚函数和多态

面向对象:三大特性:封装,继承,多态;

多态性:向不同对象发送同一个消息,不同对象对应同一消息产生不同行为

简直写得太好了,鼓掌!!!:

http://www.cnblogs.com/CaiNiaoZJ/archive/2011/08/11/2134673.html

26、请你来回答一下++i和i++的区别

27、请你来说一说++i和i++的实现

28、请你来写个函数在main函数执行前先运行

  • 1、全局变量的构造函数
  • 2、全局变量的赋值函数
  • 3、指定入口点,入口点中调用原来的入口点

29、有段代码写成了下边这样,如果在只修改一个字符的前提下,使代码输出20个hello?

30、请你来说一下智能指针shared_ptr的实现

31、以下四行代码的区别是什么?

32、请你来说一下C++里是怎么定义常量的?常量存放在内存的哪个位置?

33、请你来回答一下const修饰成员函数的目的是什么?

说明其不会修改数据成员,任何不会修改数据成员的函数都应该声明为const 类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。

成员函数的声明看起来怪怪的:const关键字只能放在函数声明的尾部,大概是因为其它地方都已经被占用了。

关于Const函数的几点规则:

a.const对象只能访问const成员函数,而非const对象可以访问任意的成员函数,包括const成员函数.

b.const对象的成员是不可修改的,然而const对象通过指针维护的对象却是可以修改的.

c.const成员函数不可以修改对象的数据,不管对象是否具有const性质.它在编译时,以是否修改成员数据为依据,进行检查.

d.然而加上mutable修饰符的数据成员,对于任何情况下通过任何手段都可修改,自然此时的const成员函数是可以修改它的

const 函数只能调用 const函数

34、如果同时定义了两个函数,一个带const,一个不带,会有问题吗?

35、请你来说一说隐式类型转换

36、说说你了解的类型转换

37、请你来说一说C++函数栈空间的最大值

ulimit -a

ulimit -s ---8192

38、请你来说一说extern“C”

实现C++与C及其它语言的混合编程。

39、请你回答一下new/delete与malloc/free的区别是什么

http://www.cnblogs.com/biyeymyhjob/archive/2012/07/16/2593754.html

40、请你说说你了解的RTTI

Run-Time Type Identification

41、请你说说虚函数表具体是怎样实现运行时多态的?

多态性可分为两类:静态多态和动态多态。函数重载和运算符重载实现的多态属于静态多态,动态多态性是通过虚函数实现的。

每个含有虚函数的类有一张虚函数表(vtbl),表中每一项是一个虚函数的地址, 也就是说,虚函数表的每一项是一个虚函数的指针。

没有虚函数的C++类,是不会有虚函数表的。

http://www.cnblogs.com/Ripper-Y/archive/2012/05/15/2501930.html

42、请你说说C语言是怎么进行函数调用的?

函数调用也就是主调函数使用被调函数,函数调用的一般形式为:函数名({实际参数表})

对无参函数调用时则无实际参数表。

实际参数表中的参数可以是常数,变量或其他构造类型数据及表达式。

各实参之间用逗号分隔。

当在主调函数发生调用关系时 计算机会发生以下动作:

1、首先计算机自右至左依次求解主调函数实参的值。

2、系统给形参分配临时存储单元。

3、然后再自左至右把实参的值传给形参。

4、执行被调函数。

https://blog.csdn.net/zhang_kang/article/details/52988281

43、请你说说C语言参数压栈顺序?

C语言函数参数采用自右向左的入栈顺序,主要原因是为了支持可变长参数形式。C方式参数入栈顺序(从右至左)的好处就是可以动态变化参数个数。通过栈堆分析可知,自左向右的入栈方式,最前面的参数被压在栈底。除非知道参数个数,否则是无法通过栈指针的相对位移求得最左边的参数。这样就变成了左边参数的个数不确定,正好和动态参数个数的方向相反。

https://www.cnblogs.com/xkfz007/archive/2012/03/27/2420158.html

44、请你说说C++如何处理返回值?

https://www.cnblogs.com/fly1988happy/archive/2011/12/14/2286908.html

返回引用类型:

  • 当函数返回引用类型时,没有复制返回值,相反,返回的是对象本身。
  • 千万不要返回局部对象的引用!千万不要返回指向局部对象的指针!

45、请你回答一下C++中拷贝赋值函数的形参能否进行值传递?

https://blog.csdn.net/xiaoquantouer/article/details/70145348

注意程序分解分析部分

46、请你回答一下malloc与new区别

https://www.cnblogs.com/fly1988happy/archive/2012/04/26/2470542.html

47、请你说一说select

https://www.cnblogs.com/lonelycatcher/archive/2011/12/22/2297583.html

48、请你说说fork,wait,exec函数

这篇博客讲解的非常详细:

http://www.cnblogs.com/Vivian517/p/7707480.html

49、请你回答一下静态函数和虚函数的区别

50、请你说一说重载和覆盖

 

作者:匿名用户
链接:https://www.zhihu.com/question/60911582/answer/365832730
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 

多亏看过后面的书籍,几乎全答出来了。

语言面:

  1. 数组指针、指针数组、函数指针之类的问题。《C和指针》
  2. 如何判断大端小端char*=&int。《C和指针》
  3. 传参时防止数组退化成指针?《C++ Primer》
  4. 位运算的一些问题。《C和指针》
  5. inline的理解?《C++ Primer》
  6. 对象模型理解,EBO(空白基类最优化),virtual继承。《深入理解C++对象模型》
  7. dynamic_cast的作用?《Effective C++》
  8. 项目结构、namespace等。《C++ Primer》
  9. 对于模板的理解。《Effective C++》
  10. RAII的理解。《Effective C++》
  11. RTTI的理解。《C++ Primer》
  12. 是否了解函数式编程?《SICP》【underscore.js】
  13. C++11的理解?《C++标准库》
  14. 是否知道一些C和C++的不兼容?【网上资料】
  15. STL源码相关问题。《STL源码剖析》

应用面:

  1. 编写C++使用的编译器和IDE?【g++、clang和Clion】
  2. TCP连接和断开的方式。《图解TCP/IP》《TCP/IP卷1》
  3. Linux命令、BashShell脚本等。《Linux鸟哥的私房菜》《Shell脚本编程大全》
  4. 是否了解Linux下的Socket编程?《UNP》
  5. 是否知道抓包,用过WireShark?《WireShark数据包分析实战》
  6. 是否了解静态库、动态库?《程序员的自我修养》
  7. GCC、Make、CMake等【GNU Make】【GNU GCC】【Cmake实践】
  8. DMA是什么?《计算机组成原理》
  9. Linux下的进程间通信方式?《APUE》
  10. Linux下的线程和锁?《APUE》
  11. 其他脚本语言是否了解?《Python学习手册》《Perl语言入门》
  12. SQL数据库用过哪些,NoSQL呢?《高性能MySQL》《Redis实战》
  13. 是否了解其他开源网络库?《Linux多线程服务端编程 使用muduo C++网络库》
  14. 项目版本控制工具用过吗?《Git项目管理》【SVN】
  15. 算法学的怎么样?《算法导论》《算法竞赛入门经典》【竞赛经历】
  16. 对Web方向是否有了解?《HTML5权威指南》《Python Flask》《Spring实战》等
  17. 对爬虫方向是否有了解?《Python网络数据分析》
  18. 对逆向方向是否有了解?《Linux二进制分析》《有趣的0和1》
  19. 是否了解设计模式、重构?《设计模式》《重构》
  20. 是否了解Linux内核数据结构。 《Linux内核的设计与实现》
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值