今天参加了CVTE的一次秋招笔试(WEB后台开发工程师),在此稍微记录一下。
笔试给的时间还是很充裕的,比前几天的某某证券的好多了。一共有二十多道题,前面是选择题,后面是两道编程题,和一道设计题。
选择题就之记住了几个,这里只说一下考点吧:
jvm的参数,java8的新特性,连通图,回溯法,CMS垃圾回收,数据库的事物和幻读,http的请求信息,tcp的三次握手四次挥手,volatile和Synchronized,集合等等。
编程题:
1.两个已经降序排好的数组,将两个数组合并,合并后依然保持降序。(实际题干更长给了实际的需求场景)
以下是我的解答:
public static int[] together(int[] A,int[] B) {
/**
* 定义合并后的数组
*/
int[] res=new int[A.length+B.length];
/**
* ra,rb保存ia,ib下标对应的值,ir表示res插入的下表
*/
int ra=-1,rb=-1,ia=0,ib=0,ir=0;
while(true) {
/**
* 两个数组遍历完结束
*/
if(ia>=A.length&&ib>=B.length) {
return res;
}
/**
* 依次从给定数组中取值,若数组值已经取完,赋值-1
*/
if(iarb) {
res[ir]=ra;
ia++;
}else {
res[ir]=rb;
ib++;
}
}
ir++;
}
}
2.使用1-9,a-z,A-Z,生成不重复的长度为4的ID(Sring),写两个方法一个获取不重复的ID,一个获取生成ID的总数.
以下是我的解答:
/**
* 构造字符数组,用四个变量下标去遍历数组
* @author zxl
*
* @date 2018年7月20日
*/
public class Generator {
private static final char[] ch={'1','2','3','4','5','6','7','8','9'
,'a','b','c','d','e','f','g','h','i'
,'j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'
,'A','B','C','D','E','F','G','H','I'
,'J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
private int i1=0,i2=0,i3=0,i4=0;
/**
* 获取ID
* 假设生成的字符串是“ZBCD”,i4:D在ch中的下标;i3:C在ch中的下标;i2:B在ch中的下标;i1:A在ch中的下标;
* @return
*/
public String generator() {
/**
* 全部用if,用if-else会出错:下标越界。因为当i4和i3同时遍历完最后一位时,用if-else只把i4重置为0,i3则是ch.length+1
* (考试时自己没有考虑到,用的if-else)
*/
if(i4>=Generator.ch.length) {
i4=0;
i3++;
}
if(i3>=Generator.ch.length) {
i3=0;
i2++;
}if(i2>=Generator.ch.length) {
i2=0;
i1++;
}
if(i1>=Generator.ch.length) {
return "ID已经全部生成完毕";
}
String str=""+ch[i1]+ch[i2]+ch[i3]+ch[i4];
i4++;
return str;
}
/**
* 获取生成的ID总数
* @return
*/
public long getTotal() {
return Generator.ch.length*Generator.ch.length*Generator.ch.length*Generator.ch.length;
}
public static void main(String[] args) {
Generator gen=new Generator();
System.out.println("total:"+gen.getTotal());
for (int i = 0; i
最后一个设计题比较外放,题目是:学校有几个信息系统,但现在需要开发一款校园移动信息系统。
使用webService改造原有的信息系统,开放几个数据接口,新系统调用接口获取数据