2020年腾讯实习生C++面试题&持续更新中(1)
腾讯面试整理(1)
最近大三的学生找实习生的同学非常多,给大家分享一篇腾讯实习生的面试题,关于面试题,会持续更新~~~
也算是今天开通博客的第一次为社区的贡献.
一面:
- 多态怎么实现的
- 虚表虚机制是怎么回事
- 构造函数可以是虚函数吗?为什么?
- 析构函数可以是虚函数吗?为什么?
- const是函数签名吗?是。有什么作用?区分只读操作和赋值操作
- C++11了解过吗?
- variatic template讲一讲
- 右值引用讲一讲
- lambda讲一讲
- 智能指针干嘛的,大概怎么实现的?
- override final关键字有什么用
- decltype有什么使用场景吗
- delete 和 delete[] 有什么区别
- delete 删除数组为什么会造成内存泄露?只调用一次析构函数
- delete[]怎么知道要调用多少次析构函数?讲了object的内存格式
二面:
- static、const(各种场景的用法)
- new、malloc区别、使用
- STL vector/list的实现、数组链表区别、map/unordered_map的实现、哈希表的相关问题(哈希冲突)
- 红黑树、AVL,主要问了特性和区别
- 纯虚函数、虚函数、多态(虚指针、虚函数表)、this 指针
- 构造函数(为什么不能是虚函数)、析构函数(可以是虚函数吗?什么时候必须是虚函数?)、类默认成员函数
- 堆和栈(内存布局,内核空间、用户空间)
- select/epoll
- IPC(方式,共享内存实现)
- 三次握手、socket函数
- mysql存储引擎、索引(B+树)、事务(ACID)、隔离级别(各个场景)、主仆复制
- Redis、与MySQL数据一致性问题
- Linux 常用命令:free/top
- GDB(x/p/bt/info)
- 18亿用户数据,设计一个系统根据唯一ID查找用户数据
三面
- map<int,string>删除key能被2整除的元素(代码,其实主要是erase导致迭代器失效的问题),map/vector的底层实现
- 一个C++空类编程默认提供的函数(6个,两个取址的操作符重载)
- 多线程/多进程的优势和劣势(n核CPU的线程数怎么选择)
- Linux 常用命令,find/awk/grep的使用,出了一个简单的awk使用的题目
- IPC、线程同步、进程同步(共享内存、信号量、记录锁)
- C++多态(函数重载、虚函数指针和虚函数表)
- B+树、聚簇索引、非聚簇索引,聚簇索引可以有多个吗?
- 事务ACID、隔离性、MySQL数据存储引擎
- select/poll/epoll, epoll的优势
- 浏览器输入URL的整个过程
- TCP四次挥手(为什么需要四次,状态,TIME_WAIT作用)
- 数据库一致性问题(Redis/MySQL,这里比较开放性)
- 文件系统(inode)、内存系统(虚拟内存)
四面
- C++内存模型(主要也还是虚函数指针和虚函数表)
- IPC
- epoll(使用边缘触发的注意点,信号中断时怎么处理?errno = EINTR)
- 共享内存的同步问题(互斥锁、记录锁、信号量,介绍一下各个方式)
- TCP/UDP的区别,详细讲讲
- 事务的隔离级别、两个事务操作加钱问题(一个+50,一个+100,怎么保证最终结果+150。InnoDB RR级别下MVVC的一致性视图、修改时是当前读,update set
k=k+50,这个当时好像没解释清楚,所以提了悲观锁,也就有了下面的问题)- select for update锁的机制
- 索引(聚簇索引、非聚簇索引、覆盖索引,相关原理)
- Redis、MySQL一致性问题(太喜欢问这个问题了吧,面试官还讲了个场景:活动期间导致海量用户注册,怎么解决缓存穿透问题?讲了布隆过滤器过滤未注册的用户,也提了相关的误判率,还讲了Redis/MySQL一致性的一些操作,面试官好像不太满意,解释了好久好久。)
据腾讯官方数据说,进入腾讯最好的方式就是:腾讯实习生,然后留用
腾讯实习生的成功率是校园招聘成功率的4倍 ,希望有兴趣的朋友看到这里,如果你现在大三、你现在研二一定要尝试一下腾讯的实习生。
欢迎各位看官的三连,点赞、转发、评论
和天天互动。