2018网易校招移动安全工程师笔试题

**声明,凭记忆写下。如有冒犯公司版权,请通知删除!

笔试题型:
20道单选 40分
3道编程 60分
2道问答 40分

一、单选题
安卓逆向知识:DexClassHeader的内容、快速排序一趟过后的顺序、Anti-Emulator技术、安卓反编译的保护方式、ios迭代、引起ANR的原因

二、编程题
(1)小易最初没有魔法币,但是可以通过魔法机器得到,第一台魔法机器输入x枚魔法币,得到2*x+1枚,第二台魔法器输入x枚银币得到,2*x+2枚。 现给定一个数字n,必须由第一二台魔法器得到。
输出投掷魔法器的顺序(题干中隐含意思是所有银币都要参与交易,不能由2个中拿出一个这样投)
输入:10
输出:122

代码如下

#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//小易投的钱币中,设为N
//n的解决方案为:(1)N位偶数,f(n)=f(n/2-1)+"2"
//(2)n为奇数:f(n)=f(n/2)+"1" 
int find(int n)
{   int i;
    if(n==1)
    {
     printf("1");
     return 0;
    }
     else if(n==2)
     {
      printf("2");
      return 0;
     }

    else if(n%2==0)
    {
        i=n/2;
        i--;
        find(i);
        printf("2");
        return 0;
    }
    else
    {
        i=n/2;
        find(i);
        printf("1");
        return 0;
    }

}
int main(int argc, char** argv) {
    int n;

    scanf("%d",&n);
    find(n);
    return 0;
}

已AC

(2)给定一个数列,请你将它排列成符合如下要求的数列:a[i]*a[i+1]可以被4整除。如果可以排列成这种数列,输出Yes,否则输出No.
输入:
(1)第一行表示有多少测试用例
(2)后面每两行的第一行为数列中数的个数
(3)第二行数为数列
样例输入:
2
3
1 10 100
4
1 2 3 4
样例输出:
Yes
No

代码如下,已AC

#include <iostream>

/* run this program using the console pauser or add your own getch, system("pause") or input loop */
//数列分为2的倍数,4的倍数,以及奇数
//其中2的倍数的最后一个数后面必须是4
//奇数中间必须插4的倍数
//所以满足的条件必须是4的倍数的个数=奇数个数+是否有2

#define MAX 100000 
int main(int argc, char** argv) {
    int t;
    int i;
    scanf("%d",&t);
    for(i=0;i<t;i++)
    {
        int n;
        int a[MAX];
        scanf("%d",&n);
        for(int j=0;j<n;j++)
        {
            scanf("%d",&a[j]);
        }
        //统计4的倍数,如果不是4的倍数,看是否为奇数
        int f4=0;
        int istwo=0;//是否有2的倍数
        int odd=0;//奇数个数
        for(int j=0;j<n;j++)
        {
            if(a[j]%4==0)
             f4++;
            else if(a[j]%2==0)
             istwo++;
             else 
             odd++;
         } 
        if(istwo!=0)
         {
            if(f4>=odd)
             printf("Yes\n");
            else
             printf("No\n"); 
         }
         else
         {
            if(f4>=odd-1)
             printf("Yes\n");
            else
             printf("No\n");
         }

    }
    return 0;
}

三、问答题
(1)怎么实现像360助手那样的悬浮框?
答:用windowManager的addView
(2)IOS逆向工具的介绍

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值