725用友Java开发笔试

选择太难了,而且每部分都要提交了才能看下一部分的题,搞得我好紧张,又怕前面的题选的太草率丢分多,又怕时间都浪费在前边了编程题没时间做。SQL的题以前只背了八股每怎么练过,就直接放弃了,结果两道编程题做完还有8分多钟干瞪眼。呜呜能不能全部做完提交了还有时间的话再给点时间反刍前边的题呀,太心疼那道SQL了。
编程题1:大概是有一个九键手机键盘,每个键代表三个或四个字符,如果想按某个键的第一个字符就要按这个键一下,如果想按某个键的第二个字符就要按这个键两下以此类推,问给定一个字符串,统计按下某个键的次数,以列表数组形式输出。
    public int[][] count(String str) {
        // write code here
        if (str == null || str.length() == 0) {
            return new int[0][0];
        }
        int n = str.length();
        HashMap<Integer, Integer> map = new HashMap<>();
        char c;
        for (int i = 0; i < n; i++) {
            c = str.charAt(i);
            if (c == '@' || c == '!' || c == '.' || c == '/') {
                if (c == '@') {
                    map.put(1, map.getOrDefault(1, 0) + 1);
                } else if (c == '!') {
                    map.put(1, map.getOrDefault(1, 0) + 2);
                } else if (c == '.') {
                    map.put(1, map.getOrDefault(1, 0) + 3);
                } else if (c == '/') {
                    map.put(1, map.getOrDefault(1, 0) + 4);
                }
            }
            if (c == 'a' || c == 'b' || c == 'c') {
                if (c == 'a') {
                    map.put(2, map.getOrDefault(2, 0) + 1);
                } else if (c == 'b') {
                    map.put(2, map.getOrDefault(2, 0) + 2);
                } else if (c == 'c') {
                    map.put(2, map.getOrDefault(2, 0) + 3);
                }
            }
            if (c == 'd' || c == 'e' || c == 'f') {
                if (c == 'd') {
                    map.put(3, map.getOrDefault(3, 0) + 1);
                } else if (c == 'e') {
                    map.put(3, map.getOrDefault(3, 0) + 2);
                } else if (c == 'f') {
                    map.put(3, map.getOrDefault(3, 0) + 3);
                }
            }
            if (c == 'g' || c == 'h' || c == 'i') {
                if (c == 'g') {
                    map.put(4, map.getOrDefault(4, 0) + 1);
                } else if (c == 'h') {
                    map.put(4, map.getOrDefault(4, 0) + 2);
                } else if (c == 'i') {
                    map.put(4, map.getOrDefault(4, 0) + 3);
                }
            }
            if (c == 'j' || c == 'k' || c == 'l') {
                if (c == 'j') {
                    map.put(5, map.getOrDefault(5, 0) + 1);
                } else if (c == 'k') {
                    map.put(5, map.getOrDefault(5, 0) + 2);
                } else if (c == 'l') {
                    map.put(5, map.getOrDefault(5, 0) + 3);
                }
            }
            if (c == 'm' || c == 'n' || c == 'o') {
                if (c == 'm') {
                    map.put(6, map.getOrDefault(6, 0) + 1);
                } else if (c == 'n') {
                    map.put(6, map.getOrDefault(6, 0) + 2);
                } else if (c == 'o') {
                    map.put(6, map.getOrDefault(6, 0) + 3);
                }
            }
            if (c == 'p' || c == 'q' || c == 'r' || c == 's') {
                if (c == 'p') {
                    map.put(7, map.getOrDefault(7, 0) + 1);
                } else if (c == 'q') {
                    map.put(7, map.getOrDefault(7, 0) + 2);
                } else if (c == 'r') {
                    map.put(7, map.getOrDefault(7, 0) + 3);
                } else if (c == 's') {
                    map.put(7, map.getOrDefault(7, 0) + 4);
                }
            }
            if (c == 't' || c == 'u' || c == 'v') {
                if (c == 't') {
                    map.put(8, map.getOrDefault(8, 0) + 1);
                } else if (c == 'u') {
                    map.put(8, map.getOrDefault(8, 0) + 2);
                } else if (c == 'v') {
                    map.put(8, map.getOrDefault(8, 0) + 3);
                }
            }
            if (c == 'w' || c == 'x' || c == 'y' || c == 'z') {
                if (c == 'w') {
                    map.put(9, map.getOrDefault(9, 0) + 1);
                } else if (c == 'x') {
                    map.put(9, map.getOrDefault(9, 0) + 2);
                } else if (c == 'y') {
                    map.put(9, map.getOrDefault(9, 0) + 3);
                } else if (c == 'z') {
                    map.put(9, map.getOrDefault(9, 0) + 4);
                }
            }
        }
        int[][] ans = new int[map.keySet().size()][2];
        int idx = 0;
        for (int i = 0; i < 9; i++) {
            if (map.get(i + 1) != null) {
                ans[idx][0] = i + 1;
                ans[idx][1] = map.get(i + 1);
                idx++;
            }
        }
        return ans;
    }
编程题第二题:给一个01组成的数组,和一个整数n,最多有n次将任意数反转的机会,问能得到的最长连续相同字符的子数组长度是多少,刚开始想用动规,但是有点解不出来,最后用了双指针。
    public int getMaxConsecutiveOnes(int[] arr, int n) {
        // write code here
        int left = 0;
        int count = 0;
        int max = 0;
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] == 1) {
                continue;
            } else if (arr[i] == 0 && count < n) {
                count++;
            } else {
                max = Math.max(max, (i - left));
                while (arr[left] != 0) {
                    left++;
                }
                left++;
            }
        }
        max = Math.max(max, arr.length - left);
        return max;
    }



#用友#
全部评论
大佬,笔试编程题是核心代码还是acm模式
1 回复 分享
发布于 2022-08-01 11:48
你们的笔试结果出来了没
1 回复 分享
发布于 2022-07-27 18:51
这个第二题是求最长的连续的1的个数吧
点赞 回复 分享
发布于 2022-07-28 19:58
约面试了 但是告诉我笔试太差 高潜批次要求达不到 给我搞成提前批内推了
点赞 回复 分享
发布于 2022-07-27 21:41
最后一题好像是滑动窗口
点赞 回复 分享
发布于 2022-07-26 11:52

相关推荐

2025-12-24 15:25
已编辑
门头沟学院 前端工程师
是腾讯的csig腾讯云,前天晚上九点突然打电话约面,激动的通宵学了一晚上,第二天状态很差改了今天(以后再也不通宵学习了)感觉自己浪费了面试官一个半小时单纯手写+场景,无八股无项目无算法,打击真的很大,全是在面试官提醒的情况下完成的,自己技术方面真的还是有待提高,实力匹配不上大厂和已经面试的两个公司完全不一样,很注重编码能力和解决问题的能力,然而我这两个方面都很薄弱,面试官人很好很耐心的等我写完题目,遇到瓶颈也会提醒我,写不出题也会很耐心的跟我讲解好感动,到最后面试结束还安慰我打算把下周最后一场面试面完之后就不面啦,如果能去实习还是很开心,但是最重要的还是好好努力提高技术以下是面经第一题//&nbsp;实现一个解析&nbsp;url&nbsp;参数的函数function&nbsp;parseUrl(urlStr)&nbsp;{//&nbsp;TODO}parseUrl('*********************************************');//&nbsp;返回&nbsp;{a:&nbsp;1,&nbsp;b:&nbsp;2,&nbsp;c:&nbsp;3}追问:在链接里见过什么部分?用&nbsp;hash&nbsp;路由的话放在哪第二题//&nbsp;考虑有一个异步任务要执行,返回&nbsp;Promise,这个任务可能会失败,请实现&nbsp;retry&nbsp;方法,返回新方法,可以在失败后自动重试指定的次数。/***&nbsp;异步任务重试*&nbsp;@param&nbsp;task&nbsp;要执行的异步任务*&nbsp;@param&nbsp;times&nbsp;需要重试的次数,默认为&nbsp;3&nbsp;次*/function&nbsp;retry(task,&nbsp;times&nbsp;=&nbsp;3)&nbsp;{//&nbsp;TODO:&nbsp;请实现}//&nbsp;---------------测试示例&nbsp;----------------//&nbsp;原方法const&nbsp;request&nbsp;=&nbsp;async&nbsp;(data)&nbsp;=&gt;&nbsp;{//&nbsp;模拟失败if&nbsp;(Math.random()&nbsp;&lt;&nbsp;0.7)&nbsp;{throw&nbsp;new&nbsp;Error('request&nbsp;failed');}const&nbsp;res&nbsp;=&nbsp;await&nbsp;fetch(&#39;https://jsonplaceholder.typicode.com/posts&#39;,&nbsp;{method:&nbsp;'POST',body:&nbsp;JSON.stringify(data),});return&nbsp;res.json();}//&nbsp;新的方法const&nbsp;requestWithRetry&nbsp;=&nbsp;retry(request);//&nbsp;使用async&nbsp;function&nbsp;run()&nbsp;{const&nbsp;res&nbsp;=&nbsp;await&nbsp;requestWithRetry({&nbsp;body:&nbsp;'content'&nbsp;});console.log(res);}run();第三题就是给&nbsp;retry&nbsp;函数添加类型注释,用到泛型第四题:在组件库中将&nbsp;Alert&nbsp;用&nbsp;api&nbsp;的形式实现(应该就是&nbsp;message&nbsp;这个组件)怎么渲染到一个浮层里而不是原地渲染出来
不知道怎么取名字_:技术这个东西,太杂了,而且要下功夫的
查看5道真题和解析
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
3
20
分享

创作者周榜

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