腾讯面试一面、二面、C++后台开发、回馈社区
前言
提前批有两次电话一面,这里略过了。
首发于:https://www.jianshu.com/p/d5aa63a27172
一面
成都4月11日
- 介绍自己的项目、难点在哪里、怎么解决的
- 介绍C++11特性
- 介绍fork函数
- 介绍time_wait状态
- 为什么tcp连接握手需要三次
- 介绍迭代器失效。push_back会导致迭代器失效吗。
- 红黑树的特征,介绍
- 哈希冲突的解决方法。
- 进程和线程的区别
- 你都使用什么线程模型
- 介绍协程
- 介绍快排算法
- 什么是稳定性排序,快排是稳定性的吗,为什么
- 快排算法最差情况推导公式
- 析构函数虚函数为什么
- 构造函数为什么不能是虚函数
- 打印在纸上的题目,考察:new [] 对象。static 成员。子类构造函数具体调用了啥。拷贝构造函数与赋值函数的区别。等号在拷贝构造函数出现的时机。什么时候需要赋值函数。深拷贝与浅拷贝。虚函数的调用时机。
下面是其中一道题目,请写出运行结果
#include <iostream> using namespace std; struct A{ A(){ local_var++; } virtual void func(){ cout << "A" << endl; } static int local_var; }; int A::local_var = 0; struct B : A{ B(){ local_var+=2; } virtual void func(){ cout << "B" << endl; } }; int main(){ A* a1 = new B[3]; cout << a1[0].local_var << endl; a1->func(); A a2 = a1[0]; cout << a2.local_var << endl; a2.func(); A a3; a3 = a1[0]; cout << a3.local_var << endl; a3.func(); }
以下代码会出现什么问题。
#include <iostream> using namespace std; struct A{ virtual void func1(){ cout << a << endl; } void func2(){ cout << a << endl; } void func3(){ cout << "a" << endl; } int a; }; int main(){ A * a = (A*)malloc(sizeof(A)); a->func1(); a->func2(); a->func3(); }
- 笔试过程中(之前牛客笔试。面试官居然打印了我的笔试所有答案和结果,包括选择题和算法题,提交了多少次,失败了多少次)一道题的思路。考察虚指针的初始化时机。
- 随机出一道纸上的题目。给定前序遍历ABC后序遍历CBA,求中序遍历是什么,画出来两种情况。
- 笔试过程中(之前牛客笔试),第一道算法题的思路
- 有100个弹珠,双方轮流拿,每个人只能拿1~5个,无法拿的人输,必胜解法。
- 最近学什么(服务器编程)。之前学什么(TensorFlow),怎么学习的。你对Tensorflow强大的神经网络是怎么看待的。
- 家庭情况了解。
- 离开后在大厅手写代码,求char a数组中有的元素和char b数组中没有的元素,放到char c数组。这里我忘记把char字符转成unsigned char类型。
二面
成都4月13日
- 自我介绍
- 系统调用是什么。你用过哪些系统调用。什么系统调用会耗时长。
- gdb调试用过吗。什么是条件断点。
- 函数指针和指针函数的区别。写个例子出来。
- 手写fork调用示例。你在哪些场合使用过fork调用。
- 介绍udp的connect函数。
- 索引是什么。多加索引一定会好吗?(索引这个承认了看面经,但是后一个问题自己想出来了)
- 上一次面试中,你有哪些问题你回去查了。
- 上一次面试中,你的代码有问题,你知道吗。
- 你回答的问题是从哪里学习的。你这两天在干什么?
- 给你提一些建议,看下gdb调试,看下数据库知识,看下网络编程,多实践。
后续
4月20日收到腾讯的电话offer确认。稍晚收到了邮件确认。
#实习##笔试题目##春招##腾讯#