2022携程暑期实习后端开发二面面经

2022年3月25日13点30-14点10
没有自我介绍
上来直接问你对后端开发的研究有哪些?
我结合自己做的项目,从JavaWeb讲到了SpringBoot
接下来就做面试官出的算法题
public class Main {


    public static void main(String[] args) {

        Flight f1 = new Flight("F001", "SHA", "HKG");
        Flight f2= new Flight("F002", "SHA", "TYO");
        Flight f3 = new Flight("F003", "HKG", "NYC");
        Flight f4 = new Flight("F004", "TYO", "NYC");
        Flight f5 = new Flight("F005", "HKG", "TYO");
        Flight f6 = new Flight("F006", "TYO", "HKG");
        Flight f7 = new Flight("F007", "TYO", "OSA");
        Flight f8 = new Flight("F008", "OSA", "NYC");
        Flight f9 = new Flight("F009", "SHA", "OSA");

    }



    static class Flight{
        String flightId;
        String depart;
        String arrival;

        Flight (String id, String start, String end) {
            this.flightId = id;
            this.depart = start;
            this.arrival = end;
        }
    }
    
}
以上代码是面试官聊天框里发过来的题目:要求飞机从上海飞到纽约的所有路径
我的想法是:这是一道图论算法题,采用dfs就行了
由于这是一道应用题,不像力扣牛客那样直接秒就行了,还需要处理一下数据
我一开始光讲,面试官建议我画一下,我就用画图演示了一下,表示需要将数据转换成邻接表的形式
因为Java处理字符串比较麻烦,所以我想用数字代替字符串,其实是一样的,面试官同意了
以下是我的解题代码
public class Main {

    static List<List<Integer>> res=new LinkedList<>();
    static LinkedList<Integer> path=new LinkedList<>();

    public static void main(String[] args) {

        Flight f1 = new Flight("F001", 0, 1);
        Flight f2= new Flight("F002", 0, 2);
        Flight f3 = new Flight("F003", 1, 4);
        Flight f4 = new Flight("F004", 2, 4);
        Flight f5 = new Flight("F005", 1, 2);
        Flight f6 = new Flight("F006", 2, 1);
        Flight f7 = new Flight("F007", 2, 3);
        Flight f8 = new Flight("F008", 3, 4);
        Flight f9 = new Flight("F009", 0, 3);
        int[][] graph=new int[][]{{1,2,3},{2,4},{1,3,4},{3,4},{}};
        boolean[] vis=new boolean[5];
        dfs(graph,0,4,vis);
        for(List<Integer> a:res){
            for (int b:a){
                System.out.print(b);
            }
            System.out.println();
        }
    }

    static class Flight{
        String flightId;
        Integer depart;
        Integer arrival;

        Flight (String id, Integer start, Integer end) {
            this.flightId = id;
            this.depart = start;
            this.arrival = end;
        }
    }

    public static void dfs(int[][] graph,int cur,int end,boolean[] vis){
        if (vis[cur]==true)return;
        path.add(cur);
        vis[cur]=true;
        if (cur==end){
            res.add(new LinkedList<>(path));
            vis[cur]=false;
            path.removeLast();
            return;
        }
        for (int a:graph[cur]){
            dfs(graph,a,end,vis);
        }
        vis[cur]=false;
        path.removeLast();
    }

}
最后反问
结束


#携程##实习##后端开发##面经#
全部评论
咱俩怕是一个面试官,咱们的算法题都是同一道!感谢大佬的面经
1 回复 分享
发布于 2022-03-25 17:59
楼主什么部门
点赞 回复 分享
发布于 2022-03-25 15:14
有消息了吗,楼主
点赞 回复 分享
发布于 2022-04-04 18:18

相关推荐

点赞 评论 收藏
分享
无情咸鱼王的秋招日记之薛定谔的Offer:好拒信,偷了,希望有机会用到
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗?&nbsp;刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
4
16
分享
牛客网
牛客企业服务