[每日学习3.23] 筹备腾讯二面 - 阿V

昨日事件:

昨天腾讯一面,基础题80%都答的特别流畅!!!,但是应该过不了,因为项目不符合他们的要求,但是!人总要有希望的,我觉得这次一定给我过!准备二面!

面试题:

1. 野指针

野指针:没有指向内存的指针。

造成野指针的原因:

1. 指针变量未初始化

2. 指针指向的内存被释放,而指针没有处理。

3. 指针超过变量作用范围。例如函数局部变量的地址值被传出来,而局部变量会在函数执行完自动清理,此时的地址值是不安全的,随时都可能被覆盖。

2.  函数运行全过程的底层机制

1. 分配被调用函数所需的栈空间---代码执行需要相应空间

2. 保存当前函数的运行状态返回地址---被调函数执行完以后放回当前地址继续运行。

3. 传递参数---传值参数或者传地址。

4. 将控制权转交给被调函数。

5. 被调函数执行完毕,释放栈空间返回之前地址。

3.  typedef和define有什么区别

typedef:常用来定义一个标识符及关键字别名,语言编译过程的一部分,不分配内存空间。可以增强程序的可读性,标识符的灵活性。常用于:

1. 定义类型别名

2. 辅助struct定义别名(c++11不需要)

3. 定义与平台无关的类型不同平台支持的类型不同

define:宏定义语句,定义常量,在预编译过程就完成。

区别:

1. 宏定义只是简单的字符串代换(原地扩展),typedef具有一定的封装性。例如:

typedef (int*) pINT; pINT a,b效果等于int *a, *b;

#define pINT int*;  pINT a,b效果等于int *a, b;

4. define与const的区别 

共同作用:定义常量

区别:

1. 编译器处理方式不同:define作用于预处理,const作用于编译阶段

2. 类型检查不同:define无类型不进行类型安全检查,const有数据类型进行类型检查

3. 内存空间:define不分配内存,const在静态存储区分配内存

5.  vector中resize()和reserve()区别

resize(): 重新申请并改变当前vector对象的有效空间大小,改变有效空间大小:小于空间大小,裁剪多出来的数据,capacity不变,大于空间大小,赋值为定义数据capacity大小与改变大小相同

reserve()重新申请并改变当前vector对象的总空间(capacity)大小,不改变有效数据大小

6.  介绍RB-tree和时间复杂度

定义:红黑树是一种含有红黑结点并能自平衡的二叉树,时间复杂度为O(log2n)

性质:

1. 结点非黑即红

2. 根节点黑色叶子节点(NIL)也是黑色

3. 每个红色结点的两个子结点一定是黑色

4. 任意结点到每个叶子结点的路径都包含相同数量的黑结点

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZW游戏制造

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值