秋招日记(4.24)腾讯笔试广联达面试字节笔试

腾讯笔试后端方向,20点到22点
广联达提前批15点30分面试
青训营笔试任选90分钟做就OK

今天😳又是被拷打的一天,话说广联达是个啥公司,有没有了解的说几句😍

广联达秋招提前批
一面  25min
自我介绍
项目追问
数据库索引
B+树的优点
如何快速判断一个二进制数是不是二的幂次方
有哪些排序在特定情况下达到O(n)
成绩排名
最近在读什么书
不准备读研吗?为什么?
反问环节
流程是怎样的,应该是两轮面试
提前批过了也是要尽快入职吗?会结合学生时间

感慨一句,太快了xdm实在是太快了

字节青训营
大坏特坏,字节青训营是Go的,而我是Java,咱也不懂架构,想着就做做编程题就行了,第一题很简单DFS直接秒了,第二题当场坐大牢😥

腾讯笔试
100 70 50 0 0

第四题有思路,但是不好调试,其实整体代码写出来了,但是应该有一些细节错误,这种链表题不方便构造测试用例,只能硬刚😓
第四题,给定一个ListNode 数组,数组中存储的是一个环形链表片段,比如环形链表为 1 -> 2 - > 3 -> 4 -> 1 ...
数组中为 1 - > 2 - > 3 ,  2 -> 3,  3 - > 4 - > 1这样的片段,找到使得这个环形链表的字典值最小的分割点,进行分割
第四题,代码如下,不知道对不对,我自己搞了个测试用例能用,蹲个大佬点评一下
 public static ListNode solve (ListNode[] a) {
        //拼接
        ListNode cur = a[0];
        HashMap<Integer, ListNode> map = new HashMap<>();
        for(int i = 0; i < a.length; i++){
            cur = a[i];
            boolean flag = true;
            while(cur != null){
                if(flag && map.containsKey(cur.val)){
                    ListNode tmp = map.get(cur.val);
                    tmp.next = cur.next;
                    flag = false;
                    if(i == a.length - 1)break;
                }
                map.put(cur.val, cur);
                cur = cur.next;
            }
        }
        //连成环
        ListNode head = a[0];
        while(head.next != null){
            head = head.next;
        }
        head.next = a[0];
        //查找字典序最小的数
        int min =  Integer.MAX_VALUE;
        ListNode pre = cur, start = cur, point = null;
        cur = cur.next;
        while(cur.val != start.val){
            if(min > cur.val){
                point = pre;
                min = cur.val;
            }
            pre = cur;
            cur = cur.next;
        }
        //截断链表
        assert point != null;
        ListNode ans = point.next;
        point.next = null;
        return ans;
    }
第三题,其实是前缀和 后缀和,套了个动态规划的壳子,只过了百分之五十,求指教哪里错了(刚刚又改了一下,不知道现在有没有问题)
        
Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        in.nextLine();
        String str = in.nextLine();
        int[] dpA = new int[str.length() + 1];
        int[] dpB = new int[str.length() + 1];

        for(int i = 1; i < dpA.length; i++){
            if(str.charAt(i - 1) == '0'){
                dpA[i] = dpA[i-1] + i;
            }else{
                dpA[i] = dpA[i-1];
            }
        }

        for(int i = dpB.length - 2; i >= 0; i--){
            if(str.charAt(i) == '1'){
                dpB[i] = dpB[i+1] + i + 1;
            }else{
                dpB[i] = dpB[i+1];
            }
        }
        int ans = Integer.MAX_VALUE;
        for(int i = 0; i < dpA.length; i++){
            ans = Math.min(ans,Math.abs(dpA[i]-dpB[i]));
        }
        ans = Math.min(ans,Math.abs(dpB[0]));
        ans = Math.min(ans,Math.abs(dpA[dpA.length - 1]));
        System.out.println(ans);




第二题,当时超时了,现在简单优化如下
                int[] a = new int[]{1,2,3,4};
        int min =  Integer.MAX_VALUE;
        List<Integer> list = new ArrayList<>();
        List<Integer> nums = new LinkedList<>();
        for(int i = 1; i <= a.length; i++){
            if(i == 1 || !check(i)){
                list.add(i);
            }
            nums.add(a[i-1]);
        }
        while(nums.size() > 1){
            for (int index : list) {
                if (nums.size() > 1 && index - 1 < nums.size()) {
                    nums.set(index-1, -1);
                }
            }
            for(int i = nums.size() - 1; i >= 0; i--){
                if(nums.get(i) == -1){
                    nums.remove(i);
                }
            }
        }
        System.out.println(nums.get(0));        



第一题
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String[] strs = new String[n];
        in.nextLine();
        for (int i = 0; i < n; i++) {
            strs[i] = in.nextLine();
        }
        int len = strs[0].length();
        int[] nums = new int[len];
        for (int i = 0; i < len; i++) {
            StringBuffer sb = new StringBuffer();
            int index = i;
            for (int j = 0; j < n; j++) {
                sb.append(strs[j].charAt(i));
            }
            int num = Integer.parseInt(sb.toString());
            nums[index] = num;
        }
        Arrays.sort(nums);
        for (int i = 0; i < nums.length; i++) {
            System.out.println(nums[i]);
        }




#找呀找呀找工作##腾讯#
全部评论
建筑行业软件吧,造价软件啥的
点赞 回复 分享
发布于 2022-04-24 13:37
同今晚笔试
点赞 回复 分享
发布于 2022-04-24 14:14
楼主广联达什么时候做的笔试啊 啥时候收到面试邀请的啊
点赞 回复 分享
发布于 2022-04-24 16:18

相关推荐

想润的芹菜人狠话不多:把其中一个老总放中间都会得罪另一个
点赞 评论 收藏
分享
one_t:硕还是本?什么岗
点赞 评论 收藏
分享
2 10 评论
分享
牛客网
牛客企业服务