招银笔试:
十五个选择题,涉及一些计算机知识包括操作系统计算机网络和算法,考的比较广有几个忘了怎么做了。。。
算法题:
1.给定一个A工厂的加工顺序如123,B工厂可以随时取出进行加工,取出顺序为先加工的后取(栈),然后求B工厂可能的加工顺序(123,132,231,213,321):没写出来,第一反应以为是全排列,劈里啪啦敲了半天一看结果不对,然后不知道该怎么约束这样的一个条件,是不是直接用一个栈结构然后再递归就可以了好像,交卷了才反应过来了,好气
2.程序填空,好像不是很难
3.这个涉及到多线程和加锁的一些操作,要A,B班分别添加偶数和奇数学生进入班级,还要加锁解锁乱七八糟,完全不会写瞎写了点
很气,感觉第一个题可以写出来的,结果我跳过第一个先做后面两个以后发现不能返回去做第一个了,希望大家参加招银的笔试的时候千万小心!!!
下来以后自己写了一遍,好像还是不太对,晕乎乎的,有没有大佬教教我呜呜
import java.util.*; import java.io.*; class test { public static void main (String[] args) throws java.lang.Exception { System.out.println("hi"); Stack<Integer> stack = new Stack<Integer>(); int[] nums = {1,2,3,4}; int[] visited = new int[4]; List<List<Integer>> rs = new ArrayList<List<Integer>>(); List<Integer> temp = new ArrayList<Integer>(); solution(nums,stack,temp,rs,visited); for(List<Integer> list : rs){ for(int num : list){ System.out.print(num); } System.out.print(','); } } public static void solution(int[] nums,Stack<Integer> stack,List<Integer> temp,List<List<Integer>> rs,int[] visited){ if(temp.size() == nums.length) rs.add(new ArrayList<Integer>(temp)); for(int i = 0;i < nums.length;i++){ if(visited[i] == 1) continue; stack.push(nums[i]); visited[i] = 1; temp.add(stack.pop()); solution(nums,stack,temp,rs,visited); temp.remove(temp.size() - 1); stack.push(nums[i]); visited[i] = 0; } } }
全部评论
(6) 回帖