英雄游戏面经---冷不丁的挂了
十月份的KPI面,我也是无语,真的全部都答上了,面试官问问题的时候 总停顿十几秒 场面上真的尴尬。
不过没有游戏经验,就这样吧。
一、笔试题:
二叉树权值
有一棵二叉树,树上每个点标有权值,权值各不相同,请设计一个算法算出权值最大的叶节点到权值最小的叶节点的距离。二叉树每条边的距离为1,一个节点经过多少条边到达另一个节点为这两个节点之间的距离。 给定二叉树的根节点root,请返回所求距离。 我看大佬用的map算二进制编码,然后计算距离。 大佬们太秀了,好好学学
struct TreeNode{
int val;
struct TreeNode *left;
struct TreeNode *right;
TreeNode(int x) :
val(x), left(NULL), right(NULL) {
}
};
void GetCode(map<int,string>& treeMap,TreeNode* root,string s)
{
if(root->left==nullptr && root->right==nullptr){
//给出01编码
treeMap[root->val] = s;
return;
}
if(root->left!=nullptr){
GetCode(treeMap,root->left,s+'0');
}
if(root->right!=nullptr){
GetCode(treeMap,root->right,s+'1');
}
}
int getDis(TreeNode* root)
{
if(root == nullptr)
return 0;
map<int,string> treeMap;
GetCode(treeMap,root,"");
//利用迭代器获取开头结尾的值(map会自动排序)
auto minNum = treeMap.begin();
string s1 = minNum->second;
auto maxNum = (--treeMap.end());
string s2 = maxNum->second;
//根据编码计算距离
int i = 0,j = 0;
while(i<s1.size() && j<s2.size() && s1[i] == s2[j]){
i++;j++;
}
return s1.size() + s2.size() - i - j;
}
分割链表
class Solution {
public:
ListNode* partition(ListNode* head, int x) {
ListNode* small = new ListNode(0);
ListNode* smallHead = small;
ListNode* large = new ListNode(0);
ListNode* largeHead = large;
while (head != nullptr) {
if (head->val < x) {
small->next = head;
small = small->next;
} else {
large->next = head;
large = large->next;
}
head = head->next;
}
large->next = nullptr;
small->next = largeHead->next;
return smallHead->next;
}
};
最大正方形
class Solution {
public:
int maximalSquare(vector<vector<char>>& matrix) {
if(matrix.size() == 0 || matrix[0].size() == 0) return 0;
int rows = matrix.size();
int cols = matrix[0].size();
vector<vector<int>> dp(rows, vector<int>(cols,0));
int maxSize = 0;
for(int i = 0; i < rows; ++i){
for(int j = 0; j < cols; ++j){
if(matrix[i][j] == '1'){
if(i == 0 || j == 0){
dp[i][j] = 1;
}else{
dp[i][j] = min(dp[i-1][j],min(dp[i-1][j-1], dp[i][j-1])) + 1;
}
maxSize = max(dp[i][j], maxSize);
}
}
}
return maxSize*maxSize;
}
};
二、面试
- 自我介绍
- Web服务器简单介绍
- epol机制
- 红黑树
- 相比哈希表的优势
- 线程池机制
- 线程认是如何被唤醒的
- 两种事件并发模式以及区别
- TCP、UDP区别
- TCP分为几部分
- TCP是如何保证可靠性的
- RPC讲一下
- TCP是如何进行流量控制
- 滑动窗口机制具体讲讲
- Redis底层通信原理 五种数据结构
MySQL索引功能- 索引的种类
- 如何解决哈希冲突
- 堆排序介绍一下
- 如何实现堆排序 口述算法
- 插入30个数字的堆排序的效率
- C++多态
- 迭代器失效的原因
基本都答上了 比似乎也A了 就是挂了 无语。。。
三、面试笔试题
不用递归实现二叉树的中序遍历
合并k个升序链表笔试题:
分割链表
最大正方形
面试笔试题
不用递归实现二叉树的中序遍历
合并k个升序链表
#英雄游戏#
查看10道真题和解析