腾讯大连电话面试题目

1.项目相关的细节问题。
2.讲讲STL里你常用的数据结构
2.1那么map的时间复杂度是多少
2.2map的底层实现是什么
3.讲解MVC每一层分别是什么
4.从一个长的字符串里查找子字符串用到的算法
这一题我知道是用那个O(m+n)的经典算法,但是名字我想不起来了,不过面试官说名字想不起来没关系。。。KMP!!!!
5.为什么在用迭代遍历vector的过程中不宜修改vector里面元素的值?从工程的角度考虑。
6.从工程的角度来说,有什么功能是new能做到而malloc做不到的。换句话说,是什么理由促使C++的发明者用new来替代malloc。

网上的答案,引用自https://blog.csdn.net/qq_26816591/article/details/52214313

有了malloc/free为什么还要new/delete?

1)它们都可用于申请动态内存和释放内存。
2)malloc是库函数只能作用于内部数据类型,对于非内部数据动态对象而言,就不能完成对象的初始化与销毁,即执行构造函数与析构函数,而new 与 delete此类运算符就能够在编译器的控制权限内完成,对象的初始化与销毁任务,即执行构造函数与析构函数。

为什么C++不把malloc/free淘汰出局呢

既然new/delete的功能完全覆盖了malloc/free,为什么C++不把malloc/free淘汰出局呢?这是因为C++程序经常要调用C函数,而C程序只能用malloc/free管理动态内存。
我们不要企图用malloc/free来完成动态对象的内存管理,应该用new/delete。由于内部数据类型的“对象”没有构造与析构的过程,对它们而言malloc/free和new/delete是等价的。
注意:如果用free释放“new创建的动态对象”,那么该对象因无法执行析构函数而可能导致程序出错。
如果用delete释放“malloc申请的动态内存”,结果也会导致程序出错,但是该程序的可读性很差。所以new/delete必须配对使用,malloc/free也一样。

7.你平时使用什么编译器。我说gnu,人家说没有人直接用gnu,提示我,“你编译的时候在命令行里敲什么代码?”。好吧,我说gcc。面试官说你是不是没编译过大型的工程。
8.那你平时使用什么IDE。visual stdio和pycharm。
9.你还有什么问题要问我们的吗?暂时没有。

你可能感兴趣的:(腾讯大连电话面试题目)