岗位:C++开发人员

电话面试

开始还是项目,很重视自己写的代码量,包括后续面试中也不断强调实际代码多少行

 

核心问题:C++和C语言

一.C++和C语言的关系和区别

C语言是一种结构化语言,面向过程,基于算法和数据结构,所考虑的是如何通过一个过程或者函数,对输入进行处理运算,得到输出结果;C语言最重要的特点是函数,通过main函数来调用各个子函数。程序运行的顺序都是程序员事先决定好的。

C++是面向对象语言,基于类、对象和继承,所考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题,通过获取对象的状态信息得到输出或实现过程控制。类是它的主要特点,在程序执行过程中,先由主main函数进入,定义一些类,根据需要执行类的成员函数,以类驱动程序运行。面向对象在分析和解决问题的时候,将涉及到的数据和数据的操作封装在类中,通过类可以创建对象,以事件或消息来驱动对象执行处理。(过程的概念被淡化了,实际上过程还是有的,就是主函数的哪些语句),

面试时只强调了面向过程和面向对象的区别,操作对象是函数和类的等问题,回来查资料后汇总如下:

 

C++是面向对象的编程,

区别:

1、C语言是面向过程的,而C++是面向对象的。

2、C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。但你也可能单独调用API。

3、特别是C++中的图形处理,它和C语言的图形有很大的区别。C语言中的图形处理函数基本上是不能用在C++中的。C语言标准中不包括图形处理。

4、C和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;而在VC++中它没有加限定符的为私有的。

5、C语言可以写很多方面的程序,但是C++可以写得更多更好,C++可以写基于DOS的程序,写DLL,写控件,写系统。

6、C语言对程序的文件的组织是松散的,几乎是全要程序处理;而c++对文件的组织是以工程,各文件分类明确。

7、C++中的IDE很智能,和VB一样,有的功能可能比VB还强。

8、C++对可以自动生成你想要的程序结构使你可以省很多时间。有很多可用工具如加入MFC中的类的时候,加入变量的时候等等。

9、C++中的附加工具也有很多,可以进行系统的分析,可以查看API;可以查看控件。

10、C++调试功能强大,并且方法多样。

 

C++对C的“增强”,表现在以下几个方面:

类型检查更为严格。增加了面向对象的机制。增加了泛型编程的机制(Template)。增加了异常处理。增加了运算符重载。增加了标准模板库(STL)。增加了命名空间,避免全局命名冲突。

 

二.如何用C语言实现面向对象的功能

我第一个问题一直在强调C++和C语言在面向对象和面向过程上的不同,所以面试官没有提问库函数、类等问题,直接引到:用C语言实现面向对象功能,这个当时不会(之前完全没有想过,一个面向过程的语言怎么实现面向对象的功能?)

网上的资料:

C语言面向对象风格编程https://www.cnblogs.com/fang-io/p/5182962.html

C 语言如何实现面向对象编程https://www.jianshu.com/p/d10043105b79

简单的C语言结构体实现面向对象的方法https://blog.csdn.net/hhl3065212/article/details/78113464

C语言也可以“面向对象”https://blog.csdn.net/sehanlingfeng/article/details/78647653

 

 

面试官一直在强调独立写代码的能力,因为我的项目更多是维护测试,所以没有细问。而问到我具体写了多少代码(我其实也没有写多少),所以没有深入,草草结束了

10-04 21:57