昨晚,我去了广东才略金融信息科技有限公司进行面试,他们先让我用Java做了一道题
笔试题目:凯兰高每周都会举行康体活动,一般是分成几组进行对抗,现在想设计一个算法,来进行随机分组,假设员工都保存在一数组里面
Array["a1","a2","a3","a4"..."an"],分组数目为k,代码写出算法并分析其时间复杂度
下面是我做的答案
package demo;
import java.util.ArrayList;
import java.util.List;
public class Test {
public static void main(String[] args) {
List<String> employee = new ArrayList<>();
for(int i=0;i<8;i++){
employee.add("a"+i);
}
List<String> group1 = new ArrayList<>();
List<String> group2 = new ArrayList<>();
for(int i=0;i<4;i++){
int j=(int)(Math.random()*employee.size());
group1.add(employee.get(j));
employee.remove(j);
}
for(int i=0;i<4;i++){
int j=(int)(Math.random()*employee.size());
group2.add(employee.get(j));
employee.remove(j);
}
for(String str : group1){
System.out.println(str);
}
System.out.println("+++++++++++++");
for(String str : group2){
System.out.println(str);
}
}
}
另外,我看了笔试题上还有一道关于数据库的题目(这个题目没让我做)
有一个数据表score存有学生学号和各个科目的成绩,表结构有students math chinese english
a、写一条sql语句输出学生的学号和总分,按总分从高到低进行排名
b、写一条sql语句输出学生的各科的平均分和总平均分
c、求出至少有有一门学科高于平均分的学生学号
create table grade(
id char(10) not null primary key,
math double(4,2) not null,
chinese double(4,2) not null,
english double(4,2) not null
);
insert into grade values ('2013111601',89.0,91.0,78.5);
insert into grade values ('2013111602',80.5,78.0,92.5);
insert into grade values ('2013111603',82.5,67.0,88.5);
insert into grade values ('2013111604',68.5,75.0,83.5);
insert into grade values ('2013111605',89.5,88.0,96.5);
select id,(math+chinese+english) as sum from grade order by sum;
select avg(math) as agv_math,avg(chinese) as avg_chinese,avg(english) as avg_chinese,sum(math+chinese+english)/15 as avg_sum from grade;
select id from grade where math > (select avg(math) from grade) or chinese>(select avg(chinese) from grade) or english>(select avg(english) from grade);