前言:
hhaa,在笔试之前还是有很多小插曲——像qq邮箱竟然把京东笔试邮件屏蔽了,没想到,以后要注意翻翻邮箱了  ~

正题:
笔试分30道选择题和2道编程题~

选择题的话,还好自己下午刷了一下去年的京东选择题,有些考点今年又考了(小确幸鸭~)
但还是有很多不确定的选项,害!

编程题
1、求由数字 2,3,5 组成的第 n 小的数。(n<=1000)
如,从小到大有,2,3,5,22,23,25,......。第 4 小的数是 22
解题:很明显,直接BFS,而且还不用考虑很多条件,队列里存的String,一是方便操作,二是怕太大int不够存。然后直接就AC,抬走下一个
public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    int n = sc.nextInt();
    
    Queue<String> queue = new LinkedList<>();
    queue.add("2");
    queue.add("3");
    queue.add("5");
    String temp = "";
    while(n > 0){
    	temp = queue.poll();
    	n--;
    	String a = temp+"2";
    	String b = temp+"3";
    	String c = temp+"5";
    	queue.add(a);
    	queue.add(b);
    	queue.add(c);
    }
    System.out.println(temp);
}

2、有这么个东西,如图,有 n 行,每行的方格的数量是 2*n - 1,每个方格都有权值,求从最上面到最底层最大的权值!

解题:也很明显,即可以BFS,也可DFS,BFS的话可能需要自己定义一个结果存放走的下标和当前总权值,比较麻烦,笔者想了一下,还是DFS吧
            DFS,按照DFS的套路,确定好函数作用——画决策数——确定好函数参数、终止条件、返回值——循环所有选择——回溯操作——AC
            这里的递归方法题也是极其简单就递归函数就行了,笔者写的时候也愣了一下,这...么...简洁(dan)...
            
static List<List<Integer>> list;
static int n;
static int max = 0;
public static void main(String[] args){
    Scanner sc = new Scanner(System.in);
    n = sc.nextInt();
    list = new ArrayList<>();
    for(int i = 1 ; i<= n;i++){
        List<Integer> temp = new ArrayList<>();
        for(int j= 1 ; j <=2*i-1;j++){
            temp.add(sc.nextInt());
        }
        list.add(temp);
    }
    dfs(list.get(0).get(0),0,0);
    System.out.println(max);
}

static void dfs(int grade,int i,int heigh){
    if(heigh == n-1){
        max = grade>max?grade:max;
        return;
    }

    dfs(grade+list.get(heigh+1).get(i),i,heigh+1);
    dfs(grade+list.get(heigh+1).get(i+1),i+1,heigh+1);
    dfs(grade+list.get(heigh+1).get(i+2),i+2,heigh+1);
}

总结:
1、选择题可能才是京东注重的吧,这难度有点大(也可能我的提升空间还很大很大....)

2、编程题就没什么好说的,算大厂里为数不多的好AC题

最后的最后,请JD的HR捞我吧,我会好好做人的