嵌入式面试题
cvte2019秋招面试编程题(有嵌入式研发岗) 来源 : 未知     2018-07-31

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());
}
}

扫码申领本地嵌入式教学实录全套视频及配套源码

上一篇:没有了

下一篇:嵌入式工程师面试题宝典,过来人总结

400-611-6270

Copyright © 2004-2024 华清远见教育科技集团 版权所有
京ICP备16055225号-5京公海网安备11010802025203号