腾讯模拟面试题一

1. 野指针是什么?会引发什么问题?该如何避免?

野指针是指向一个“垃圾内存”的指针,它的指向是随机的。而且它并不是空指针。引发的最大问题就是**内存泄漏。**内存泄漏不是物理上的内存的消失不见,而是由于操作失误对该段内存失去了控制权,从而造成内存的浪费。

那我们该如何避免呢?

  1. 首先,我们必须养成良好的编程习惯,尤其是在对指针进行操作时更应该注意。
  2. 其次,我们在定义一个指针时,可以直接初始化让其指向空。因为NULL的宏定义是 #define NULL(void *) 0,代表的是零地址,而零地址是无法进行读写的。
  3. 再次,我们在进行动态内存申请时,最好在申请完一片区域后检查一下是否分配成功。
  4. 最后,在使用完空间后,一定要用free()或delete来释放它,释放之后再让指针指向空。
    只有养成了上述的好习惯,我们在编程时才能尽可能地减少因为对野指针的操作而引起的程序错误。
2.C++多态是什么?其原理是什么呢?

通俗点来说,多态就是多种形态。具体说来就是为了完成某个行为,当不同对象去完成时会产生不同的状态。多态是根据虚函数来实现的,编译器在编译时遇到虚函数,就会采取晚绑定的技术,也就是说在编译时并不确定该调用哪个函数,而是在运行时依据对象的类型来确定该调用哪个函数,这就是C++的多态(可以举个例子:我们在买票时,普通人买票就是全票,学生买票就是学生票。这个就可以简单地理解为多态。)

当我们在类中声明一个虚函数时,编译器会在类中生成一个虚函数表,它由编译器自动生成和维护,可以用来存储一个类的成员函数指针。虚函数会被编译器放进虚函数表中。当存在虚函数时,每个对象都会有一个指向虚函数表的指针。在不涉及虚函数的情况下,当我们用一个指针/引用调用一个函数时,该调用哪一个函数是根据这个指针/引用的类型而确定的。当涉及到多态性时,采用了晚绑定技术,就不再单单地考虑指针/引用的类型,而是根据这个指针/引用指向的对象的类型确定调用哪个函数,也就是说根据这个对象的虚函数表的指针指向的虚函数表中的函数地址来确定该调用哪个函数。

3.快速排序的思想是什么?时间复杂度是多少?什么情况下最差?

快速排序采用的“分治思想”。即在一组数据里挑选一个元素作为基准值,然后把比基准值小的元素放在基准值左边,比基准值大的元素放在基准值右边。然后以该基准值为界,又可以把左右两边的看成为两个数组,重复以上的操作。

快速排序在最优的情况下时间复杂是O(nlog(n)).

快速排序的最差情况还得参考基准值的选择。我们一般选择最多端或最右端的元素作为基准值,这时,当数组是正序、倒序或者数组里的元素大小都一样时,就会出现最坏的情况。

4.http安全吗?https与http的区别是什么?

http不安全。
区别:

  1. http是超文本传输协议,信息是明文传输。而https(超文本传输安全协议)是具有安全性的加密传输协议,它可以说是http的安全版本。
  2. 两者是完全不同的连接方式,用的端口也不一样。http是80端口,而https是443端口。
  3. http的连接是无状态的,即对于事务处理是没有记忆能力的。缺少状态就意味着要是后续处理需要前面的信息,则必须重传,这样就会导致每次连接传输的数据量增大。
5.TCP三次握手过程,第三条丢了会怎么样,会出现什么现象
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值