腾讯大连电话面试题目

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.你还有什么问题要问我们的吗?暂时没有。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,874评论 18 399
  • 1.C和C++的区别?C++的特性?面向对象编程的好处? 答:c++在c的基础上增添类,C是一个结构化语言,它的重...
    杰伦哎呦哎呦阅读 9,799评论 0 45
  • 晚上吃柚子,小迪说:这块不甜,给爸爸吃。 我问:给妈妈吃行不行啊,妈妈也想吃。 不行。吴小迪很干脆的说,妈妈吃饱了...
    沉不住气小姐阅读 358评论 0 0
  • 终南山,一个注定不平凡的地方! 二月的三天的线下能量课让每个学员都充开心喜悦的能量,而就在课程现场旁的终南山更是吸...
    自在行者黄春浩阅读 1,150评论 2 4