unity算法面试_字节跳动unity开发面试经验实习生

机试

标题写着是第2次算法方向。

一共有4道题目。我当时ac了三道题目。具体的题目名称我不记得了,我先把代码写出来。

//文本变换

// 本题为考试多行输入输出规范示例,无需提交,不计分。

#include

using namespace std;

int main() {

//freopen("1.in","r",stdin);

int t = 0;

cin >> t;

for (int i = 0; i < t; i++) {

int n = 0;

cin >> n;

vector a(n, 0);

vector b(n, 0);

for (int j = 0; j < n; j++) { int temp; cin >> temp; a[j] = temp; }

for (int j = 0; j < n; j++) { int temp; cin >> temp; b[j] = temp; }

for (int j = 0; j < n; j++) b[j] -= a[j];

int l = 0, r = n - 1;

while (!b[l]) { l++; if (l == n) break; }

if (l == n) cout << "YES" << endl;

else {

while (!b[r]) { r--; }

if (l == r) cout << "YES" << endl;

else {

int k = b[l];

bool flag = true;

for (int cur = l + 1; cur <= r; cur++)

if (b[cur] != k) flag = false;

if (flag) cout << "YES" << endl;

else cout << "NO" << endl;

}

}

}

return 0;

}

//折木棒

#include

using namespace std;

int main() {

int n = 0;

cin >> n;

vector len(n, 0);

for (int i = 0; i < n; i++) { int temp; cin >> temp; len[i] = temp; }

int count = 0;

for (int i = n - 1; i > 0; i--) {

if (len[i - 1] > len[i]) {

for (int j = 2; ; j++)

if (len[i] * j >= len[i - 1]) { len[i - 1] = len[i - 1] / j; count += (j - 1); break; }

}

}

cout << count << endl;

return 0;

}

//优惠券

#include

using namespace std;

bool static cmp(long long a, long long b) {

return a > b;

}

int main() {

long long n = 0, m = 0;

cin >> n >> m;

vector a(n, 0);

vector b(m, 0);

for (long long i = 0; i < n; i++) { long long temp; cin >> temp; a[i] = temp; }

for (long long i = 0; i < m; i++) { long long temp; cin >> temp; b[i] = temp; }

long long cost = 0;

sort(a.begin(), a.end(), cmp);

a.push_back(0);

sort(b.begin(), b.end(), cmp);

long long i = 0;

for (auto bi : b) {

for (; i <= n; i++) {

if (a[i] <= bi) { cost += (bi - a[i]); break; }

}

}

cout << cost << endl;

return 0;

}

//地铁线路

#include

using namespace std;

i

一面

刚进入的话,面试官是一个比较和蔼的大叔。

然后我就叙述了我的本科和研究生阶段的经历。

刚开始和他聊图形学相关的知识。

他一开始问我什么是渲染管线。

问了我什么是傅里叶变换。

什么是卷积?

我对这里比较熟悉,描述的非常形象,他当时还挺满意的。

然后他又问了我什么是向量的点乘和叉乘。

然后他又问了我熟不熟悉寻路的算法。

比如说a星算法。

二面

刚进入的话,面试官是一个表情很严肃的大叔,大概40多岁。他让我做了一下自我介绍,我问了一下需不需要详细阐述,他说不需要,然后就开始了他的提问。刚开始他就问我是不是学崔佳佳的,然后就开始了问题,先是问我static和const关键字用法,然后就问我堆和栈的区别。然后又问了vector,list,map的底层实现,然后又问了我虚表什么。

然后开始了算法的问题。第1个问题就是给我三个点,怎么判断另外一个点在这个三角形里面?我第1个想到的就是高中数学的线性规划。后来我想了半天,实在没想出来就要了一下提示,他提示说面积。然后我就知道了,这个顶点跟其他三个点构成了三个三角形的面积和与原三角形的面积比较就可以判断了,如果相等就说明在里面。如果大了就说明在外面。我又补充说到通过三个点求三角形面积的方法,就是比如有一个三角形abc,我们取向量ab和向量ac。通过两个向量外积的一半可以获取三角形的面积。外积的方法就是x1y2-y1x2。

然后面试官就问了我第1次面试有没有写算法题,我说没有。然后我就收到了面试官发出来的一个算法题,就是去除单练表当中重复的元素。这题本身是一个简单的题目,但是当着面试官的面在10分钟之内写出来还是有点压力的。毕竟有些细节没搞对的话,那就是容易写不出来。不过好在我调试了半天,最后终于做出来了。然后面试官说,你说一下你的思路。然后说完之后,面试官就问有没有什么要问我的,我说没有就结束了面试。

整个面试大概持续了40分钟左右。他叫我2~5天之内等hr的消息。

三面,未完待续

标签:字节,temp,int,++,long,cin,面试,unity,len

来源: https://blog.csdn.net/qq_38145502/article/details/105680662

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值