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秋招#