面试总结和感想怎么写 个人面试成功后的感想500字( 四 )


21、mysql的建表、删除表、更新表、查询表用什么命令答:Create|Drop|Update|SelectTABLE[表名]mysql的索引有哪几种?答:(1)普通索引CREATINDEX[index_name]ONtable(column(length))(2)唯一索引(3)全文索引(4)单列、多列索引(5)组合索引索引的优缺点,索引是不是越多越好?答:主要就是可以有效的缩短数据的检索时间,建立索引的列可以保证行的唯一性,可以加快表与表的连接;但是创建索引、维护索引需要时间和空间成本,每条索引都要占据数据库的存储空间,此外,每次的增删改都需要对索引进行动态的维护,也会导致时间变长 。索引的适用场景答:(1)数据量大的并且查询频率高的应当使用索引(2)表与表连接时的联合查询,约束条件的字段应该建立索引(3)用于排序的字段可以使用索引 。索引的原理答:以空间换时间,建立索引之后,会将索引的KEY值放在一个 *** ree上,这个方式是一种n分法,btree适合在磁盘上动态查找表,每次以索引进行查找的时候,会根据key值进行搜索,logn级别的 。
22、腾讯天美工作室(实习)1、hash表使用开链,里面的链表过长说明了什么?答:hash函数设计的不好,导致冲突严重,进而导致同一个桶内的链表数目增多 。c++不能被继承的类答:(1)、可以将构造函数放入到private里面,这样是无法构造出子类对象的,同时增加一个static的getinstance的函数,来调用构造函数 。(但是这样得不到一个栈上的对象)(2)、让该类去虚继承一个模板类,传人的模板类型就是该类,使得该类成为模板类的友元,这样子类在构造时,他直接先构造祖先类的成分,显然他不是友元,所以失败 。
23、(3)、使用c++11新增的final关键字,使得申明的类是一个最终类,无法被继承 。什么叫字长?答:计算机在同一个时间能处理的一组二进制数称为计算机的一个字,这组二进制数的位数就是字长,所以现在计算机有16位、32位、64位等 。计算机的存储系统?答:分为内存和外存,其中内存有主存、cache、寄存器等,外存分为磁盘、光盘等static关键字的作用,存放位置答:static关键字有隔离隐藏作用,比如多个cpp文件,如果将全局变量声明为static,那么该变量只对该文件可见;变量声明为static,可以使得这个值的生命期是整个程序结束;此外,c++类中的staitic申明的变量和函数表示都是属于类的属性,而不是对象的成员 。
24、未初始化的放在bss段,初始化的放在data段中 。堆和栈的区别答:从管理方式上,栈是由编译器自动管理,无需我们手动控制;对于堆,开辟和释放工作由程序员控制,所以有内存泄漏等情况的发生 。从申请大小上,栈是有高地址向低地址扩展的,是一块连续的内存区域,所以栈的栈顶地址或者大小是一开始就分配好的 。
25、在使用过程中,比如递归调用层数过多,那么就有可能造成栈溢出,所以栈能获得的空间比较少;堆是向高地址扩展的,是链表组织的方式,所以有可能是不连续的,他的大小只受限于有效的虚拟内存大小,所以堆能开辟的空间较大 。从碎片问题上,栈是没有碎片的情况,因为他有严格的出栈入栈,不会存在一个内存块从栈的中间位置弹出;堆有碎片的情况,频繁的调用new/delete分配释放内存,必然会造成内存碎片 。从分配方式上,堆都是动态分配的栈大多是静态分配的,也可以动态分配,可以由alloc函数分配 。
26、从分配效率上,计算机会在底层对栈提供支持,比如有专门的寄存器分配,用来存放栈的地址,压栈出栈的指令等;堆是由c/c++函数库提供的,机制比较复杂(未了解)struct和class的区别答:这个在OMG面试中也出现过 。malloc和new的区别答:更大的区别在于malloc只是简单的分配了内存空间,而new在分配了内存空间之后调用了对象的构造函数 。详细的见:new和malloc的区别,或者delete和free.note引用和指针的区别答:引用是一个已有对象的别称,指针是一个地址,从非空性上说,引用不能为空,指针本身是个值,可以为空;在编码的时候,对引用我们不需要判断,但是对于指针,我们必须对其非空性进行判断;当指向的对象可能在发生变化的时候,往往使用指针,而引用一定固定的 。

推荐阅读