腾讯天美游戏客户端一面 30min 凉

腾讯天美一面(30min)

1.C++基础内置类型大小

单位:字节
char: 1
short: 2
int: 4
long: 4/8
long long: 8
float: 4
double: 8

2.值传参和引用传参的区别

3.值传参和引用传参传递效率的区别, 对于内置类型也是引用传参的效率高吗

引用传参: 先获得参数值, 再获得实际指向或引用的值. 值传参: 参数直接在栈上, 直接使用即可.

内置类型值传递的效率更高

4.int最小值, 最大值的二进制表示

0x80000000
10000000 00000000 00000000 00000000

0x7fffffff
01111111 11111111 11111111 11111111

5.有符号整数和无符号整数的右移操作

无符号整数: 空位补0
有符号整数:

6.无符号整数最大值, 右移一位最高位是1还是0

7.上面的移位概念

有符号数: 算术移位 无符号数: 逻辑移位

算数左移, 逻辑左移: 低位补0

算数右移: 高位补1
正数直接移
负数:实际存储补码, 右移高位补1
-8:
原码: 1000 0000 .... 0000 1000
补码: 1111 1111 .... 1111 1000

右移两位:
补码: 1111 1111 .... 1111 1110
原码: 1000 0000 .... 0000 0010

结果为 -2;

逻辑右移: 高位补0

8.C语言 位段/位域

结构体定义时指定成员变量锁占用的二进制位数
https://blog.csdn.net/qq_44443986/article/details/110196939

9.const int* 和 int* const

const 在*左边表示被指物是常量
const 在*右边表示指针是常量

10.const修饰函数体

const成员函数不可修改对象内任何非静态成员变量
mutabel 修饰成员变量: 可以在const成员函数内修改

11.const是否可以修饰全局函数或静态成员函数

NO 静态成员函数访问的值为其参数, 静态成员数据和全局变量, 都不属于对象的一部分. const表示不会修改函数访问目标对象的数据成员. 静态成员函数根本不访问非静态数据成员, 没有必要使用const.

12.void*的用法

特殊的指针类型, 可以存放任意对象地址. 通用指针

1.任何类型指针可以赋值给void*, 无需进行强制类型转换
2.需要显示转换赋值给其他类型指针
3.void*作为函数的输入输出时, 表示可以接受任意类型的输入指针和输出任意类型的指针.

13.void* 类型是否能做算术运算

泛型指针, 编译器无法推导其指向的元素类型. 可以执行算术运算, 加1移动一个字节.

14.普通函数指针和成员函数指针的区别

https://blog.csdn.net/shaosunrise/article/details/83795230
成员函数指针调用的时候也必须加*

15.什么是字节序, 字节序的定义, 什么情况下需要注意字节序, 如何判断本机的字节序

大端序: 高位存低地址
小端序: 低位存低地址

int b = 0x12345678
char a = b;

小端序
12
34
56
78
a = 0x78 小端序

大端序
78
56
34
12
a = 0x12 大端序

16.new 和 malloc 的区别

  1. new操作符从自由存储区(free store)(由 operator new实现决定, 可以是堆也可以是静态存储区)上为对象动态分配内存空间,而malloc函数从堆上动态分配内存。
  2. new返回对象类型指针, malloc返回void*
  3. new无需指定分配内存大小, malloc需要指定大小
  4. new分配完成后调用构造函数, malloc不调用
  5. 分配失败, new抛出异常, malloc返回NULL

17.知不知道什么是placement new

传递一个已分配内存, 在此内存上构造对象.
既可以在栈上生成对象, 也可以在堆上生成对象.
https://www.cnblogs.com/weekbo/p/8533368.html

18.什么是内存对齐, 为什么要进行内存对齐

元素放置的位置一定会在自己宽度的整数倍上开始

为什么:
处理器的内存存取粒度一般是双字节/四字节等, 不是按位来存取的
内存对齐后提高了处理器的存取效率

19.C++中一个空的class大小

C++标准指出,不允许一个对象(当然包括类对象)的大小为0

1字节
如果是空基类, 则在子类中不会增加这一个字节的空间

class CEmpty {};
class CDerived1 {
	CEmpty m_base;
	int m_i;
	//other function...
};
// sizeof(CDerived1): 8

class CDerived2 : public CEmpty {
	int m_i;
	//other function...
};
// sizeof(CDerived2): 4

20.含有一个虚函数成员的class大小

虚函数指针大小

21.讲讲智能指针的作用

https://blog.csdn.net/cpp_learner/article/details/118912592

RAII(Resource Acquisition Is Initialization):RAII是一种在C++中广泛使用的编程技巧,它将资源的分配和释放与对象的生命周期关联起来。这有助于防止资源泄漏和简化资源管理。

22.左值和右值的定义, 左值引用可以指向右值吗

左值是可寻址的变量,有持久性;
右值一般是不可寻址的常量,或在表达式求值过程中创建的无名临时对象,短暂性的。

int a = 5;
int &ref_a = a; // 左值引用指向左值,编译通过
int &ref_a = 5; // 左值引用指向了右值,会编译失败

23.移动语义的目的

把数据从一个对象中转移到另一个对象中,从而避免拷贝操作所带来的性能损耗。

24.C#的class和struct有什么区别

https://www.cnblogs.com/jjg0519/p/10341010.html

25.讲一下数组和链表的区别

26.如何找到一个链表的中间节点

快慢指针

27.STL的sort函数由什么组成

https://zhuanlan.zhihu.com/p/36274119
快排, 结合插入排序和堆排序

28.快排的基本思路, 什么情况出现最坏情况

29.进程和线程的区别, 进程有哪些资源, 线程有哪些私有资源

线程私有资源
https://www.cnblogs.com/ludai/p/thread.html

  1. 线程运行的本质就是函数的执行,函数运行时的信息保存在栈帧中,包括函数的返回值、使用的局部变量、寄存器信息等,因此每个进程都有自己独立的、私有的栈区

  2. 程序计数器、函数运行使用的寄存器组的值也是线程私有的

  3. 每个线程用户独立的线程ID、独立的调度优先级、错误返回码

30.平时开发有没有用到一些设计模式

31.知不知道ECS架构, MVC架构

ECS:
https://zhuanlan.zhihu.com/p/30538626
MVC:
https://zhuanlan.zhihu.com/p/101038664

32.笔试题有没有没做出来然后后面看了知识点的

#腾讯##天美##游戏客户端##面经##25暑期实习#
全部评论
怎么这么多计组的内容
点赞 回复 分享
发布于 2024-04-17 21:27 广东
面试官有说自己是干什么的吗?面试我的是做性能优化的,也问了我很多底层的东西
点赞 回复 分享
发布于 2024-04-18 15:53 湖北
问题一模一样,我是面完三天后结束流程,然后又被捞起来,感觉是kpi
点赞 回复 分享
发布于 2024-04-19 09:19 黑龙江

相关推荐

01-07 21:34
已编辑
浙江大学 Java
时间线12.19 官网投递简历12.20 hr打电话问了一些基本情况12.21 约一面12.27 一面,一小时内约二面1.2 二面,当晚挂一面1. 请自我介绍一下。2. 这个项目是由你们几个人一起做的吗?3. 未来这个平台大家是做什么样的打算呢?4. 它的核心竞争力是什么?5. 作为后端开发者,整个数据库层面的设计是什么样的?有哪些主要的表?它们之间的关系如何?6. 业务是如何实现的?7. 系统最难的地方或技术上挑战最大的地方在哪里?8. ThreadLocal的作用是什么?它的实现原理是怎样的?9. 使用ThreadLocal的过程中需要注意什么?10. 除了手动释放ThreadLocal中的值外,它里面还有其他设计来避免内存泄漏吗?11. 动态线程池是怎么实现的?12. 动态调整机制是什么?我们应该设置多少核心线程数和最大线程数,以及通过哪里去设置?13. 动态线程池的“动态”体现在什么地方?14. 设置线程池参数是实时生效的吗?15. 什么是自旋锁?16. 除了自旋锁策略以外,Java里对同步(synchronized)还有什么其他设计?17. 请介绍下synchronized的工作原理。18. 提到了限流,请问常见的限流算法有哪些?19. 下面我们来做个编程题。您现在可以开始解题了。20. 写题(先用 Cpp 写了个大暴力,后面让用 Java 再实现一遍,讲了时间复杂度,又讲了一遍 DP 做法的思路,没让再写一遍)21. 反问:对实习生的要求,上班时间。结果:一小时后通知过了,约二面。二面1. 你的网站是一个创业项目吗?(怎么可能...)2. 你这个网站和其他同类型的有什么区别?3. 它们的核心竞争力是什么?(哪里有什么个人竞争力啊555)4. 现在有多少用户了?(说还在推广)5. 除了你自己之外,还有其他人参与这个项目吗?6. 如果这个网站能够发展起来,最核心的依赖是什么?或者说你觉得最重要的一件事是什么?7. 内容是如何获取的?8. 如何解决内容采集方面的人力瓶颈问题?9. 你们计划如何解决内容时效性的问题?10. 你们有没有考虑过通过什么方式来吸引用户贡献?(搞个排行榜?)11. 对于用户创作内容的行为,有考虑过给予什么形式的激励吗?(红包激励?被反问没钱)12. 推广网站时,实际能做哪些事情?(引流)13. 团队目前使用的是哪个版本的Java?(1.8)14. 如果让你调研是否要从Java 8升级到更新的版本(如11或17),你会如何评估其必要性?(性能提升)15. 升级JDK版本时,核心考量点是什么?(我答的是兼容性和性能提升)16. JDK团队在性能提升方面做了哪些优化?(我答的是JIT)17. 你接触过的最大一张表有多少条记录?18. 如果有一张业务表已经有六七亿条数据,并且它是一张大宽表,大概有六七十个字段,其中一些字段的尺寸较大,在日常使用中会遇到什么问题?(我答的是四层,比较慢)19. 即使有了索引,查询仍然很慢,你觉得可能是什么原因?(不知道了)20. 在表上新增一个字段时,如果这个表正在进行读写操作,应该如何处理以确保不影响现有操作?(我答的是搞一个副本)21. 如果是在单独的一个数据库实例上进行这样的变更,而不是主从架构下,是否会有额外的挑战?(面试官好像理解错了,把我说的副本理解成了主从架构)22. 在学习或做项目过程中,对你来说最有挑战的部分是什么?(这个问题之后需要细化一下)23. 你之前有面试过其他公司吗?目前那些面试流程走到哪一步了?(我答的在走流程)24. 面试者是否有任何想要问面试官的问题,比如团队主要负责的业务内容?25.无手撕代码26. 反问:什么时候出结果,业务内容。结果:当晚挂。反思:问了很多关于项目管理,项目推广这块的问题,但是真没啥想法,然后场景题现在还没接触过,回答的不行。#小红书##日常实习##凉经#
查看43道真题和解析
点赞 评论 收藏
分享
评论
5
76
分享

创作者周榜

更多
牛客网
牛客企业服务