cvte這個公司還不錯,在廣州,菜鳥進入這個公司從校招渠道比較好進,當然校招也是要面試編程方面的題,如果在學校好好學了,或者培訓過的同學,對于你們而言很簡單。近期有朋友跟我講他有cvte2019秋季的校招面試題,因此分享一下。
package package_20180720;
/**
*
* @author 康茜
* 合并兩個有序數組交(從大到小排序)
*
* 分析:合并兩個有序數組,這里的關鍵點在于有序,如果是平常的合并數組的話,我們只需要用for循環將兩個數組中的元素加入到一個數組中,
*然后再對這個新數組進行排序(排序方式有很多中,選擇合適的就行);但是現在我們多了一個條件 “有序”,即兩個子數組中的元素是排好順序的,
*那么我們如果將它安照無序的狀態進行處理的話,會使程序的性能下降。
*現在來分析一下新思路:既然兩個數組有序,那么我們可以比較兩個數組的首元素,將首元素較大的放入新數組,然后移動指向子數組的指針,使其指向
*該數組的下一個元素。下面我用程序實現這一思路。
*/
public class Main2 {
/**
*
* @param ary1 有序子數組1
* @param ary2 有序子數組2
* @return 合并之后的數組
*/
public static int[] merge(int[] ary1, int[] ary2) {
int[] result = new int[ary1.length + ary2.length];
int i = 0;//子數組1的下標
int j = 0;//子數組2的下標
int k = 0;//合并數組的下標
//通過while循環先將一個子數組給全部放入新數組中
while(i < ary1.length && j < ary2.length) {
//通過這個if判斷將有序數組從大到小或從小到大排序
if(ary1[i] > ary2[j]) {
result[k++] = ary1[i];
i++;
} else {
result[k++] = ary2[j];
j++;
}
}
//根據下標將剩余部分的數組按照順序依次復制到新數組中
while(i < ary1.length) {
result[k++] = ary1[i++];
}
while(j < ary2.length) {
result[k++] = ary2[j++];
}
return result;
}
public static void main(String[] args) {
int[] ary1 = {99, 92, 87, 80};
int[] ary2 = {98, 90, 82};
// int[] ary3 = {1, 2, 3, 4};
// int[] ary4 = {2, 5, 7};
int[] ary = merge(ary1, ary2);
for(int i = 0; i < ary.length; i++) {
System.out.print(ary[i] + " ");
}
}
}
package package_20180720;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
/**
*
* @author 康茜
* ID生成器:
* 題目描述:要求每次生成一個不重復的長度為4的字符串,該字符串由字符0~9,a~z,A~Z組成,
* 需要實現一個生成ID 的方法及一個返回當前生成ID總數的方法。
*
*/
public class Main3 {
private static String sourceString;
private static int length;
private static List<String> list;
private static int num;
private static Random random;
static {
sourceString = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
length = sourceString.length();
list = new ArrayList<>();
num = 0;
random = new Random();
}
/**
* 生成一個長度為4的id
* @return ID
*/
public static String generate() {
StringBuffer result = new StringBuffer();
for(int i = 0; i < 4; i++) {
int index = random.nextInt(length);//返回一個大于等于0,小于length的整數
char ch = sourceString.charAt(index);
result.append(ch);
}
if(list.contains(result.toString())) {
System.out.println("當前生成的字符串與之前重復,重新生成……");
return generate();
} else {
list.add(result.toString());
num++;
return result.toString();
}
}
public static int getNum() {
return num;
}
public static void main(String[] args) {
System.out.println(generate());
System.out.println(generate());
System.out.println(generate());
System.out.println(getNum());
}
}