美团-前端-笔试

感觉要G了,好难,选择题除了综测类感觉都考的很细,而且不是全部和前端相关的,和考研题目一样。个人记忆能力有限,尽量写一下相关的内容。算法也G了,第二题脑子出问题了,一个快速幂算法没写出来。之后等待下一次笔试,面试看情况吧,选择题做的还可以,万一过了呢!😂😂😂

算法部分:

第一题:输入一个字符串,每一次可以将一个字符改为大写或小写字母,最后要变为全大写、全小写、首字母大写三种情况之一,求最小变换次数。如AbC,输出1,可以变为ABC,或Abc。简单题,直接求大写字母个数就能求出解。

第二题:一个数组arr,每一次将其中除了第x个(从1开始)之外的其余元素乘以2,一共操作了q次,求最后操作完的元素和。

这个给个暴力解答案:

import java.util.Scanner;

public class Main {
  public static void main(String[] args){
    Scanner scanner =new Scanner(System.in);
    int n= scanner.nextInt();// 数组的大小
    int q= scanner.nextInt();// 操作次数
    long[] arr = new long[n];
    for(int i= 0;i <n; i++){
        arr[i]= scanner.nextLong();// 输入数组元素
    }
    Long mod = (long) 1000000007;// 10^9 + 7
    int[] countNotDoubled = new int[n];// 记录每个元素未翻倍的次数
    for(int i= 0;i< q; i++){
        int xi = scanner.nextInt()- 1;// 读取操作的元素,索引调整为从0开始countNotDoubled[xi]++;//记录该元素未被翻倍的次数
        countNotDoubled[xi]+=1;
    }
    long sum = 0;
    for(int i= 0;i< n; i++){
      long doubleTimes =q- countNotDoubled[i];// 计算实际翻倍的次数
      long addition =(arr[i]* powMod( 2,doubleTimes,mod))% mod;// 元素经过翻倍后的值
      sum =(sum + addition)% mod;// 累加到总和中
    }
    System.out.println(sum);
    }
  // 快速幂模算法,用于计算(base^exponent)% mod 的值1 usage
  public static long powMod(long base, long exponent, long mod) {
    long result = 1;
    base = base % mod;
    while(exponent>0){
        if(exponent %2 == 1)result =(result * base)% mod;exponent = exponent >> 1;
        base =(base * base)% mod;
    }
    return result;
  }
}

选择部分:

  1. 一个容量为m的循环队列,初始front和rear在同一位置,某一时刻队列长度计算方法
  2. 1型文法,2型文法,3型文法判断
  3. 操作系统使用抢占式优点调度算法,一共50个进程等待执行,高优先级事件片为200ms,低优先级为400ms,切换为10ms。若优先级队列中高优先级咱比为0.4.求系统开销占比率
  4. 已知一个文法求句柄,短语
  5. TPC三次握手,传说的ACK,seq之类
  6. DNS报文结构
  7. 依据类图看设计模式
  8. 责任链模式
  9. 16个页面,每个页面1K大小,传入64个物理磁盘,求地址位数
  10. 经典数字找规律题

#美团笔试#
全部评论
好难!
点赞 回复
分享
发布于 03-19 08:35 浙江
还考编译原理?
点赞 回复
分享
发布于 03-20 01:13 黑龙江
滴滴
校招火热招聘中
官网直投
怎么会还考编译原理这也太离谱了
点赞 回复
分享
发布于 03-23 11:56 安徽
友友你a了几道题啊
点赞 回复
分享
发布于 03-30 21:16 上海

相关推荐

14 18 评论
分享
牛客网
牛客企业服务