程序员面试

本文深入探讨了C++中的关键概念,包括内联函数与宏的区别、指针与引用的不同之处、new与delete和malloc/free的区别、句柄与指针的关系及区别、STL与容器的理解、面向对象的基本概念、空类默认成员函数、共享成员变量、虚析构函数的必要性及虚函数的开销。

1.内联函数和宏的差别

内联函数要做参数类型检查,这是内联函数和宏相比的优势

2.指针和引用的区别

1>.非空区别。一个引用不能指向空值,必须指向一个对象。指针可以为空。

2>.合法性区别。使用引用不用检测其合法性,但指针必须先检查是否合法。

3>.可修改区别。指针在初始化之后还可以修改其指向的内容,但是引用在初始化指向的对象后将不能改变,但是对象内容可以改变。

3.C++中有了malloc/free,为什么还有new/delete?

对于非内部数据类型的对象而言,malloc/free不能满足动态对象的需求,因为对象在创建时要执行构造函数,消亡时调用析构函数,这些都是malloc无法满足的。new和delete可以满足并实现对象的要求。malloc和free是库函数,而new和delete是运算符。

4.句柄和指针的区别和联系

句柄是一个指向指针的指针。windows是一个以虚拟内存为基础的操作系统。Windows内存管理器中的对象经常会变换地址。

Windows使用句柄标记系统资源,隐藏系统信息,是个32bit的uint。指针标记某个物理内存地址,两者是截然不同的概念。

5.简要介绍一下STL和包容器

STL 是标准模版库,现已成为C++的标准配置,它是一个基于模版的容器类库,包括链表,列表,队列和堆栈,包含许多常用的算法,如查找,排序等,其目的是提供对常用需求重新开发的一种替代方法。

包容器是包容其他对象的对象。可以帮助程序员处理常用的任务。

6. 面向对象技术的基本概念

对象,类和继承

7. C++的空类默认产生哪些类成员函数?

默认构造函数,析构函数,拷贝构造函数,赋值函数

8. 哪一种成员变量可以在同一个类的实例之间共享

静态成员变量

9. 为什么析构函数可以为虚函数,构造函数不能为虚函数?

虚函数采用虚调用的方法,虚调用允许调用一个只知道接口而不知道具体对象类型的函数,但是如果要构造一个对象,就必须知道对象的准确类型,所以构造函数不能为虚函数。

10. 虚函数的代价

虚函数的对象必须维护一个V表,因此在使用虚函数时会产生系统开销


根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值