【求职】腾讯移动安全部门视频面

  • 本次面试本来是上周就要面的,但是因为各种原因推到了今天。

  • 首先他先出了两道题,我表现很不好,刺激了自己刷题的欲望,觉得刷题才是王道!!!当可以灵活运用一门语言进行刷题时,在提交运行时显绿色的时候才是最爽的时候,当然,有时候面试官不仅仅会看你做出来了没有,一个人的编程素养也很重要,优美的代码,就算没做出来,至少面试官知道你是有实力的。

  • 当我编程表现不好的时候,我主动放弃了,之后对方开始问项目。

  • 下面是两道题的描述,都很简单,很基础。

  1. 字符串“hello world”写一个简单的加密算法,要求密文为可见字符。

    我的思路是凯撒加密,偏C语言写的。不过写的不完美。做完第一道题,感觉脑袋有点大,第二道题没做,主动放弃了,其实非常简单,自己的编程熟练度还不够,一定要多刷题,从今天起,不管学习到多久,刷题将成为每一天的一部分。

#include <iostream>
#include <string.h>
using namespace std;

void encry(char *buf, int len)
{
    for(int i=0; i < len; i++)
    {
        if(' ' == buf[i])
        {
            continue;
        }
        buf[i] = (buf[i] + 1 - 'a')%26 + 'a';

    }
}

int main()
{
    char * str = "hello world";
    char * buf = (char *)malloc(12);
    buf [11] = '\0';
    memcpy(buf, str, 11);
    encry(buf, 11);
    cout << buf;
    free(buf);
    return 0;
}
  1. 小Q最近学习了密码学,为了应用他所学习到的知识,他发明了一种信息的加密方法。这种加密方法描述如下。
    假设没有加密的报文是,这个报文的长度为n,加密的方式如下:
    首先写下a1作为加密报文;
    然后将a2写到已经得到的加密报文的右边;
    然后将a3写到已经得到的加密报文的左边;
    然后将a4写到已经得到的加密报文的右边;
    然后将a5写到已经得到的加密报文的左边;

    这样循环一直到用完a的全部字符,假设有a=nowcoder,那么加密过程如下:
    “n” -> “no” -> “wno” -> “wnoc” -> “ownoc” -> “ownocd” -> “eownocd” -> “eownocdr”。
    现在你有一个已经加密好的报文b,请问原来的没有加密的报文是什么,请你还原。

输入描述一个字符串b,表示已经加密的报文,长度在1到50之间,只包含小写字母。
输出描述一个字符串,表示没有加密的报文。
示例1
输入
ohmrf
输出
mrhfo
示例2
输入
vsqcykhudx
输出
ykchqusdvx

自己实现的:

#include <iostream>
#include <string.h>
using namespace std;

void decode(char * str)
{
    int len = strlen(str);
    if(1 == len || 2 == len)
    {
        return;
    }
    char *res = (char *)malloc(len + 1);
    res[len] = '\0';
    int i = 0;
    if(0 != len % 2)   //起始位置,奇数取中间
    {
        i = len / 2;
    }
    else
    {
        i = len / 2 - 1;
    }

    int index = 0;       //res 一一赋值
    res[index++] = str[i];  
    for(int j = 1; j <= len / 2; j++)
    {
        if(i + j < len)
        {
            res[index++] = str[i + j];
        }
        if(i - j >= 0)
        {
            res[index++] = str[i - j];
        }

    }
    strcpy(str, res);
}

int main()
{
    char * str = (char *)malloc(50);
    memset(str, 0, sizeof(str));
    cin >> str;
    decode(str);
    cout << str;
    free(str);
    return 0;
}

要将自己会的表现的清清楚楚,淋漓尽致,揣摩对方想法。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值