2023,8.14 【4399Java开发】笔试
10道选择题,三道简答,三道编程,还有两道论述。做的人麻了。。。
简答:
1.MySQL的事务隔离级别?事务并发时存在的问题
2.描述一个高并发任务调度系统的架构设计。包括系统组成部分、各组件的功能、组件间的通信方式。(2)设计适合该系统的数据库模型(3)高并发情况下,有哪些优化策略来扩展系统的并发能力 。
3.说出4种,实现web流量的负载均衡的方式
编程
4399 应该时人工判题吧,也没有办法提交看过多少。但不用写输入输出了,都是过了用例。
T1:使用滑动数组,逆向思维求解,使用滑动窗口找到超过重复类型的重复子数组个数m。最后结果就是n+(n-1)+...+1-m;
public static void main(String[] args) { char[] s={'A','B','C','B'}; int K=1; int m=0; int res=0; //初始化res for(int i=0;i<=s.length;i++){ res+=i; } Map<Character,Integer> window=new HashMap<>(); //构建滑动窗口,滑动区间[left,right) int left=0,right=0; while (right < s.length) { // c 是将移入窗口的字符 char c = s[right]; // 增大窗口 right++; // 进行窗口内数据的更新 window.put(c, window.getOrDefault(c, 0) + 1); //判断是否需要缩小窗口 while (window.get(c)>K){ char d = s[left]; // 缩小窗口 left++; m++; // 进行窗口内数据的一系列更新 window.put(d, window.get(d) - 1); } } System.out.println("有趣的排列组合数有:"+res+"-"+m+"= "+(res-m)); }
T2:大数相减,样例过了
public class BigDataCompute { public static void main(String[] args) { String a = "123"; String b = "30"; subtraction(a, b); } public static void subtraction(String a, String b) { //翻转被减数和减数,从低位开始计算 char[] numA = new StringBuilder(a).reverse().toString().toCharArray(); char[] numB = new StringBuilder(b).reverse().toString().toCharArray(); int[] result = new int[numA.length]; for (int i = 0; i < result.length; i++) { int intA = i < numA.length ? numA[i] - '0' : 0; int intB = i < numB.length ? numB[i] - '0' : 0; result[i] = intA - intB; } //借位逻辑如果结果指针中存在负数,说明该位置向前借位了,处理借位 for (int i = 0; i < result.length; i++) { if (result[i] < 0) { result[i + 1] -= 1; result[i] += 10; } } StringBuilder sbr = new StringBuilder(); boolean bool = true; for (int i = result.length - 1; i >= 0; i--) { if (result[i] == 0 && bool) { continue; }else{ bool=false; } sbr.append(result[i]); } System.out.println(sbr); } }
T3:力扣原题:连续子数组和,放一个官方题解:
还有两到技术论述:
1 假如你的某个方案得到了上司的认可,但是推进过程当中来自组员的阻力比较大,他们的积极性比较低,你觉得原因会是什么?你会通过什么样的方式去获得组员的认可?
2.你是否曾经面对过非常复杂的问题或任务?你又是如何成功地解决它的?
#23届找工作求助阵地##秋招##4399秋招#