京东笔试ak贴 2021/9/11

第一题:键盘输入
package jdtest;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**

  • @author: long
  • @date: 2021/9/11 20:02
  • @description:
  • /
    public class Main1 {
    public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      int n = in.nextInt(), m = in.nextInt();
      int x = in.nextInt(), y = in.nextInt(), z = in.nextInt();
      String[] keyboard = new String[n];
      in.nextLine();
      for(int i=0;i<n;i++){
          keyboard[i] = in.nextLine();
      }
      String str = in.nextLine();
      char[][] keyboardChArray = new char[n][];
      //将字符串转化为字符串数组
      for(int i=0;i<n;i++){
          keyboardChArray[i] = keyboard[i].toCharArray();
      }
      //构建HashMap,保存每个字符的位置
      Map<Character,int[]> map = new HashMap<>();
      for(int i=0;i<n;i++){
          for(int j=0;j<m;j++){
              map.put(keyboardChArray[i][j],new int[]{i,j});
          }
      }
      //pre数组保存前一个字符位置
      int[] pre = new int[]{0,0};
      long time = 0;
      for(int i=0;i<str.length();i++){
          //拿到新的位置
          char ch = str.charAt(i);
          int row = map.get(ch)[0];
          int col = map.get(ch)[1];
          if(row == pre[0] && col == pre[1]){  //同一字符
              time += z;
          } else if(row == pre[0] || col == pre[1]){ //同行或同列字符不转向
              time += (Math.abs(row - pre[0]) + Math.abs(col - pre[1])) * x;
              time += z;
          } else{
              time += y;
              time += (Math.abs(row - pre[0]) + Math.abs(col - pre[1])) * x;
              time += z;
          }
          pre[0] = row;
          pre[1] = col;
      }
      System.out.println(time);
    }
    }

第二题:systemd
package jdtest;

import java.util.*;

/**

  • @author: long
  • @date: 2021/9/11 19:34
  • @description: 构建两个List,postList保存每个服务后继的服务列表,用来找到开启某个服务后随之开启的服务
  • preList保存每个服务前继的服务列表,用来找到关闭某个服务后随之关闭的服务
  • /
    public class Main2 {
    public static void main(String[] args) {
      Scanner in = new Scanner(System.in);
      int n = in.nextInt();
      int q = in.nextInt();
      List<List<Integer>> postlist = new ArrayList<>();
      List<List<Integer>> prelist = new ArrayList<>();
      for(int i=0;i<=n;i++){
          postlist.add(new ArrayList<>());
          prelist.add(new ArrayList<>());
      }
      for(int i=1;i<=n;i++){
          int c = in.nextInt();
          for(int j=0;j<c;j++){
              int y = in.nextInt();
              postlist.get(i).add(y);
              prelist.get(y).add(i);
          }
      }
      //用一个set保存开启的服务
      Set<Integer> set = new HashSet<>();
      //保存每次操作结果
      int[] res = new int[q];
      int idx = 0;
      for(int i=0;i<q;i++){
          int x = in.nextInt();
          int y = in.nextInt();
          //建立队列,将开启的服务或关闭的服务加入队列
          Queue<Integer> queue = new LinkedList<>();
          queue.add(y);
          //开启状态
          if(x == 1){
              while(!queue.isEmpty()){
                  int z = queue.poll();
                  set.add(z);
                  for(Integer task : postlist.get(z)){
                      //如果服务已经开启了,就不要加入队列,否则产生循环依赖超时
                      if(!set.contains(task)){
                          queue.add(task);
                      }
                  }
              }
              res[idx++] = set.size();
          } else{  //关闭状态
              while(!queue.isEmpty()){
                  int z = queue.poll();
                  set.remove(z);
                  for(Integer task : prelist.get(z)){
                      if(set.contains(task)){
                          queue.add(task);
                      }
                  }
              }
              res[idx++] = set.size();
          }
      }
      for(int i=0;i<q;i++){
          System.out.println(res[i]);
      }
    }
    }
#京东笔试##京东##笔经#
全部评论
彼此彼此,ak快乐力尽
点赞 回复 分享
发布于 2021-09-11 21:01

相关推荐

点赞 评论 收藏
分享
避坑恶心到我了大家好,今天我想跟大家聊聊我在成都千子成智能科技有限公司(以下简称千子成)的求职经历,希望能给大家一些参考。千子成的母公司是“同创主悦”,主要经营各种产品,比如菜刀、POS机、电话卡等等。听起来是不是有点像地推销售公司?没错,就是那种类型的公司。我当时刚毕业,急需一份临时工作,所以在BOSS上看到了千子成的招聘信息。他们承诺无责底薪5000元,还包住宿,这吸引了我。面试的时候,HR也说了同样的话,感觉挺靠谱的。于是,我满怀期待地等待结果。结果出来后,我通过了面试,第二天就收到了试岗通知。试岗的内容就是地推销售,公司划定一个区域,然后你就得见人就问,问店铺、问路人,一直问到他们有意向为止。如果他们有兴趣,你就得摇同事帮忙推动,促进成交。说说一天的工作安排吧。工作时间是从早上8:30到晚上18:30。早上7点有人叫你起床,收拾后去公司,然后唱歌跳舞(销售公司都这样),7:55早课(类似宣誓),8:05同事间联系销售话术,8:15分享销售技巧,8:30经理训话。9:20左右从公司下市场,公交、地铁、自行车自费。到了市场大概10点左右,开始地推工作。中午吃饭时间大约是12:00,公司附近的路边盖饭面馆店自费AA,吃饭时间大约40分钟左右。吃完饭后继续地推工作,没有所谓的固定中午午休时间。下午6点下班后返回公司,不能直接下班,需要与同事交流话术,经理讲话洗脑。正常情况下9点下班。整个上班的一天中,早上到公司就是站着的,到晚上下班前都是站着。每天步数2万步以上。公司员工没有自己的工位,百来号人挤在一个20平方米的空间里听经理洗脑。白天就在市场上奔波,公司的投入成本几乎只有租金和工资,没有中央空调。早上2小时,晚上加班2小时,纯蒸桑拿。没有任何福利,节假日也没有3倍工资之类的。偶尔会有冲的酸梅汤和西瓜什么的。公司的晋升路径也很有意思:新人—组长—领队—主管—副经理—经理。要求是业绩和团队人数,类似传销模式,把人留下来。新人不能加微信、不能吐槽公司、不能有负面情绪、不能谈恋爱、不能说累。在公司没有任何坐的地方,不能依墙而坐。早上吃早饭在公司外面的安全通道,未到上班时间还会让你吃快些不能磨蹭。总之就是想榨干你。复试的时候,带你的师傅会给你营造一个钱多事少离家近的工作氛围,吹嘘工资有多高、还能吹自己毕业于好大学。然后让你早点来公司、无偿加班、抓住你可能不会走的心思进一步压榨你。总之,大家在找工作的时候一定要擦亮眼睛,避免踩坑!———来自网友
qq乃乃好喝到咩噗茶:不要做没有专业门槛的工作
点赞 评论 收藏
分享
白火同学:只是实习的话,你这份简历应该也差不多了。真要优化的话,因为面实习的话,没有开发经验,面试更重视技术栈水平。 1、重视JavaSE的基础吧,集合、泛型算是比较基础的基础,多线程、反射、JVM内存模型才是基础; 2、技术栈写到具体的点,比如Elasticsearch的使用写到某个点,限制面试官自由发挥,防止问了相关问题最后又答不上,如果真没把握建议不写,降低面试官的心理预期; 3、技术栈不要重复,比如技术栈第二条和第八条可以合并改为“熟悉Redis中间件,包括基本数据结构、缓存策略、持久化机制,了解缓存三剑客及其解决方案,并有相关项目经验。”; 4、项目指标量化,比如“达到xx秒的响应速度”(不过这个就有点偏校招社招的要求了,实习简历不写也无伤大雅)。
点赞 评论 收藏
分享
评论
点赞
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务