暴风影音笔试题集锦

1)从一个表达式字符串中找到最深层圆括号内的表达式。如:从字符串x+(y*z)+(m-(3+4))中找到3+4.如果有多个表达式具有相同的最深深度则只需给出其中一个。 
备注:算术表达式本身是正确的,不用考虑括号不匹配等错误表达式的处理。

(2)我们通常使用子网掩码的形式表示IP段,如:172.16.2.64-172.16.2.127表示为 
172.16.2.64/26。请写出172.16.2.96-172.16.2.255的掩码形式。

(3)输入字符串,可能包含’,’ 或者数字,将这个字符串转换为整数 

例如:输入123,345 
输出: 123345 
输入:, 
输出:-1(错误码) 
输入: 123, 
输出:-1(错误码)

(4)给定一个 n * n 的网格,假设从网格的左上方开始走,每次只能向下或者向右,走到最右下方停止,问一共有多少种走法。 
假设:2*2的网格,一共有6种走法。 
3*3的网格,一共有20种走法

(5) 
这里写图片描述

void postorder(BinarySearchTree T)  
{  
    BinarySearchTree preNode, currNode;  
    stack<BinarySearchTree> s;  
  
    preNode = NULL;  
    s.push(T);  
    while(!s.empty())  
    {  
        currNode = s.top();  
        if(preNode == NULL || preNode->m_pLeft == currNode || preNode->m_pRight == currNode)  
        {  
            if(currNode->m_pLeft)  
                s.push(currNode->m_pLeft);  
            else if(currNode->m_pRight)  
                s.push(currNode->m_pRight);  
        }  
        else if(currNode->m_pLeft == preNode)  
        {  
            if(currNode->m_pRight)  
                s.push(currNode->m_pRight);  
        }  
        else  
        {  
            cout << currNode->m_nValue;  
            s.pop();  
        }  
        preNode = currNode;  
    }  
}  

(6) 

将内存中一张宽为X,高为Y的RGB32格式的图片向右旋转90度。源地址BYTE *pSrc为指向图片的首地址,目标地址BYTE *pDst为输出的目标缓冲区
备注:RGB32是一种图像格式,它用4个连续BYTE来表示一个像素,图片的存储方式为一行一样连续存储。
A B
C D
如上表为宽度为2且高度为2的图像,共4个像素,在内存中存储为A[4]B[4]C[4]D[4]
void rotate(BYTE *pSrc, BYTE *pDest, int X, int Y){ }

此问题先考虑每个像素占一个字节的情况,然后再将问题扩展为占四个字节的情况。
假设现在有8个像素,宽度为4高度为2,即
ABCD
EFGH
旋转之后变为宽度为2,高度为4,即
EA
FB
GC
HD
A[0][0]->A[0][1]
B[0][1]->B[1][1]
C[0][2]->C[2][1]
D[0][3]->D[3][1]
E[1][0]->E[0][0]
F[1][1]->F[0][1]
G[1][2]->G[0][2]
H[1][3]->H[0][3]
第0行的变为了第(x-1)列,其中原矩阵中的列号与旋转矩阵的行号相同,第(x-1)行变换为了第0行,其中原矩阵的列号与旋转矩阵的行号相同
这里用i表示行,j表示列,则旋转后的pDest[j][x-i-1] = pSrc[i][j],然后将其扩展为4字节问题,即赋值时要一次性复制4字节。

typedef char BYTE;  
const int size = 4;//4字节  
void rotate(BYTE *pSrc, BYTE *pDest, int x, int y)  
{  
    for(int i = 0; i < x; i++)  
    {  
        for(int j = 0; j < y; j++)  
        {  
            int dpos = (j * x + (x - i - 1) ) * size;  
            int spos  = (i * y + j) * size;  
            for(int k = 0; k < size; k++)//每次复制4个字节  
                pDest[dpos + k] = pSrc[spos + k];  
        }  
    }  
}  

(7) 
这里写图片描述

#define MAXLEN 50  
void LCS(char *A, char *B, char *sub, int tmp[][MAXLEN])  
{  
    int i, j, max, pos, len_a, len_b;  
  
    len_a = strlen(A);  
    len_b = strlen(B);  
      
    max = 0;  
    pos = -1;  
  
    for(i = 0; i < len_a; i++)  
    {  
        for(j = 0; j < len_b; j++)  
        {  
            if(A[i] == B[j])  
            {  
                if(i == 0 || j == 0)  
                    tmp[i][j] = 0;  
                else  
                    tmp[i][j] = tmp[i-1][j-1] + 1;  
                if(max < tmp[i][j])  
                {  
                    max = tmp[i][j];  
                    pos = i;  
                }  
            }  
        }  
    }  
    sub[max] = '\0';  
    for(i = 0; i < max; i++)  
        sub[max-i-1] = A[pos - i];  
}  

(8) 
这里写图片描述

1)TCP建立连接需要3次握手
2)

3)第三次握手失败,服务器端处于SYN_RCVD状态,服务器端发送复位报文请求建立连接(不知道理解对不对)

个人资料
onion
等级:6
文章:51篇
访问:4.2w
排名: 12
上一篇: 2013聚美优品前端笔试题解析(二)
下一篇:【面经】暴风影音校招高频问题汇总
猜你感兴趣的圈子:
暴风影音笔试面试圈
标签: currnode、prenode、psrc、pright、byte、面试题
隐藏