2020年 腾讯/网易/字节 春招秋招 面试记录
在3月初开始忙着找实习,投了挺多公司,参加各种笔试,面试。后来实习没去,准备考研,秋招就随意投了网易和腾讯,没想到突然收到网易offer,便放弃考研,记录下半年来的面试经历。PS:时间久远,上半年很多面试细节忘了
上半年
3月初刚开学,非常繁忙,投下的第一家是腾讯,那时刚开始提前批,找学长拿了内推就投了,此时我没刷题,没复习任何课程,白板一个。
一星期后,腾讯后台开发面我,我投的是游戏客户端(当时满脸问号),想着第一次面,去涨涨经验,果然白板上去,岗位还和我投的不一样,双方尴尬十几分钟,草草挂了电话。
过几天有了客户端面试,这次是魔方工作室,依旧白板上阵。。。
腾讯
魔方一面
先问了c++基础
数据结构:树相比于其他数据结构的优点,为什么有这些优点,
快速排序算法具体
c++: malloc申请到内存的详细过程,
堆内存区域与栈内存区域
返回一个结构体有什么问题
缓冲区溢出问题
操作系统:分配内存的过程,
管理内存的方法,为什么要管理内存
什么是虚拟内存
c# 反射,反射有什么用,从语言特性上说明反射如何实现
Unity 项目上 大地图生成是如何实现的,跑酷游戏实际的解决方案,为什么速度块会穿过碰撞体,如何避免
lua语言(无,跳过了)
图形:前后物体先渲染后渲染,shader
没想到过了,稀里糊涂的都没怎么答上来。
魔方二面
C# 编译过程
C#有几种构造函数,析构函数
图形学:直线与三角形相交算法
A*算法寻路过程,在我项目里的适用场景,又问了英雄联盟地图中怎么实现的自动寻路
看你用过行为树插件,原理是什么
TCP/IP 三次握手 四次挥手
设计模式观察者模式,如何在C#里实现,委托与事件的区别
C# GC机制-----字典string -Object object被删除可不可以再用这片内存
项目:配置代码生成怎么做的,动态生成代码可以吗.怎么动态生成代码
问了OpenGL和C++相关的问题,奈何我问题都听不懂
问得我当场去世,二面挂
天美一面
最随意的一次面试,上来就问项目,面试官很多疑问我无奈当场屏幕分享给他演示,结果一演示就是一个小时,中间给他讲了实现的算法,各种细节,问了挺多unity相关问题,后来面试官有事就走了。无语
天美二面
下午面完一面,当天晚上,突然一个电话叫我面试,毫无准备,而且是接着上面的问,面试官换了个人,难道一面的时候他在场但没说话?又谈了半个小时,后面问了碰撞检测算法,没答上来
这个项目是去年做的,很多细节我自己都忘了,而且算是半成品,没有好好想过后续发展,可惜了,二面挂
字节跳动
游戏客户端一面
面向对象概念
排序算法随便说一个
说说A*算法
设计模式,能说多少是多少
说说MVC模式
c++中的内存分配方式
c++空类中有什么函数
TCP/UDP
线程与进程的概念
Unity是多线程还是单线程
Unity协程是如何实现的
Unity脚本生命周期
说说渲染管线
详细一点,说说光栅化步骤做什么的
Shader中fallback做什么的
点乘和叉乘的概念
项目中比较满意的地方,怎么做的
游戏引擎一面(当时没做记录,很多问题已经忘了)
排序算法
c++动态链接与静态链接
图形:光照模型,光删化
给一个数组a,从数组里取任意个数,这些数的和等于x,求所有可能的组合
网易互娱
1.const
2.struct里一个int 一个char 那么长度是多少
union 里一个int 一个char 那么长度是多少
3.虚函数原理
4.一个vector有10个成员 有一个迭代器指针指向第九个,如果往里面加100个元素
会发生什么
5.vector初始化注意什么
6.vector 遍历的同时删除最后一个会发生什么
7.new、delete、malloc、free关系
8.new实现原理
9.一个空类的大小
10.一个空类+纯虚函数的大小
11.每各类都有构造函数吗
-----------------------------开始敲代码
构造函数初始化列表是怎么做的?写出来
他们的顺序呢
单例怎么实现的?写出来
静态类里面有什么要求?写出来
静态函数有什么要求
换个思路怎么做单例
虚继承知道吧,有什么用 你写出来我看看
左值与右值是什么 举个例子写出来
右值引用,,你写出来我看看
C#
ArryList 与 List的区别
又回到了c++
C++
map的结构
红黑树的效率
输出map是什么顺序
平衡二叉树的查找时间
平衡二叉树高度为k 那么叶子节点是多少个
-----算法---
闲聊: 你随便写个消息框架我看看(又回到了面试)
秋招
腾讯
数组与链表的区别,各有什么优势
c++一个类在内存中的结构(就是c++内存模型,全局变量区,代码区,常量区,堆区,栈区)
c++ map中用的什么数据结构
c++如何调用C函数 (extern C)
c++中一个struct里面一个char 变量一个int 变量,结构体的大小是多少(c++内存对齐机制)
union与struct有什么区别
平衡二叉树
红黑树的概念,在什么地方有应用
float位数,32位怎么构成
float 中与0比较有什么问题
虚拟内存
unity渲染管线
渲染管线中模板测试,深度测试
unity图集
网易互娱
一面(一个半小时)
前半小时给一题算法,现场编程
输入二维数组(m行n列),每一行已经排好序(升序),而且数字0表示该行结束,输出所有数字的升序排列(要求时间复杂度最低)
例子:
输入:
1 5 0 0 0
2 3 4 0 0
1 3 6 0 0
输出: 1 1 2 3 3 4 5 6
类似LeetCode困难题,归并排序思想,最低时间复杂度m *n * logm,其实不难,容易理解
class A
{
public:
virtual void f()const
{
cout << "A" << sizeof(*this) << endl;
}
};
class B :public A
{
public:
void f() const
{
cout << "B" << sizeof(this) << endl;
memset(this, 0, sizeof(this));
}
int a[10000];
};
int main()
{
A pa = (A)new B;
B pb = (B)new A;
pa->f();
pb->f();
return 0;
}
代码输出什么,如果把A类中f的virtual去掉输出什么?
(没有virtual时A1 B40000 有virtual时B40004 A4,这题真的绕,加了虚函数区别很大,类里多了虚函数指针和虚函数表)
memset(this, 0, sizeof(*this));这行代码有什么问题
计算机网络中三次握手,四次挥手
tcp与udp区别
之后问了用udp的一个场景设计,答得不好
虚拟内存
hashmap中如何确定key,发生冲突时有什么解决方法
给一个能随机返回0-m中一个数的函数,怎么获取0-m的随机排列(不能有重复的数字)
二面
1.智力题 :1000人中有一个新冠患者,试剂瓶1个小时获得检测结果,需要1个小时找出新冠患者,那么至少需要多少瓶试剂?
2^10=1024 >1000 我当时答案:10瓶 1瓶可代表两种状态,10瓶可以代表1024种状态
面试官要我具体写出实现方案(还要我在屏幕上打出来) 具体方案:二进制对人编号,二进制位中第几位是1则需混合入对应的试剂瓶检测 如9号人 二进制编号 1001 ,它的第一位和第四位是1,就放入1号瓶子和4号瓶子检测,最后10个瓶子检测结果有则代表1,无则代表0 比如试剂检测结果为 0001011010 可以确定90号是患者
2.实现洗牌算法,现场编程,写完后还要我证明算法有效,我说每一个数字出现在任何一个位置的概率相等,都是1/n,说明这算法就是完全随机
3.在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。
输入:
1 0 1 0 0
1 0 1 1 1
1 1 1 1 1
1 0 0 1 0
输出: 4
LeetCode中等题(221) 二维数组动态规划,现场写完了有点错误没调试出来,就和面试官说了思路(紧张!)
4.现有一个表,其中有大量ip地址和其对应的城市,如何快速查询一个ip对应的城市
当时说了一堆方法,竟然没想到二分法,答的不好
5.问项目,问我之前做的东西,然后询问了其中细节,都一一回答了,没什么问题
面试官有时停顿沉默一会,两人都不说话,气氛莫名尴尬,后面还有点时间就闲聊了会,问我玩啥游戏等等就结束了
结束
本来5月就准备考研的,秋招我就随手投了下腾讯,网易,笔试面试临阵磨枪,甚至腾讯就提前批面了一次,正式批笔试都是瞎做的,9月最后一次面完网易就复习去了.没想到一个多月后网易发了offer,最终还是决定去网易吧