只是总结,不确定正确答案
- 有一个方法check,作用是这样的:对于入参a, b, 如果有且仅有一个大于5, 就返回true, 否则返回 false;请实现。
public void hash(){
if(a>5 && b<=5 || a<=5 && b>5){
return true;
}else{
return false;
}
}
2.分别实现冒泡排序和快速排序
冒泡排序:
public void buubleSort(int[] arrays) {
for (int count = arrays.length; count > 1; count--) {
for (int i = 1; i < count; i++) {
if (arrays[i - 1] > arrays[i]) {
int temp = arrays[i - 1];
arrays[i - 1] = arrays[i];
arrays[i] = temp;
}
}
}
return arrays;
}
快速排序:
public void quickSort(int[] array){
sort(0,array.length, array);
}
public void sort(int begin, int end,int[] array) {
if (end - begin < 2) return ;
//确定轴点
int pivot = pivotIndex(begin, end, array);
//对左边子集排序
sort(begin,pivot, array);
//对右边子集排序
sort(pivot + 1,end, array);
}
private int pivotIndex(int begin, int end,int[] array) {
//备份begin位置元素
int pivot = array[begin];
end--;
while (begin < end){
while (begin < end){
//先从end开始遍历
if (array[end] > pivot) {
end--;
}else{ //end元素<=begin元素 覆盖begin,掉头,从begin开始遍历
array[begin] = array[end];
begin++;
break;
}
}
while (begin < end){
if (array[begin] < pivot) {
begin++;
} else { //begin元素大于或者等于end元素 覆盖end,掉头,从end开始遍历
array[end] = array[begin];
end--;
break;
}
}
}
array[begin] = pivot;
return begin;
}
3.Stream API 和 lambda
有以下的代码,问 1)代码能否编译通过?2)如果能编译通过,那么运行之后会输出什么?为什么?
public void stream() {
List<String> list = Arrays.asList("123", "123", "456","123");
List<String> collect = list.stream().filter("456"::equals)
.filter(k -> {
System.out.println(k);
return true;
});
}
1)能
2) 什么都不会输出.因为 Stream 有个特性就是惰性求值即没有终止操作的时候,流的中间过程是不会执行的
有以下的代码,问 1)代码能否编译通过?2)如果能编译通过,说一下运行逻辑以及运行之后会输出什么?
public void stream(){
List<String> list = Arrays.asList("abcd", "Ab1", "ABC2", "abE","abCD");
list.stream().map(String::toUpperCase)
.filter("ABCDEFGH"::startsWith)
.map(String::toLowerCase)
.distinct()
.forEach(System.out::println);
}
1)能
2)将流里面的每一个串先转换为大写,过滤掉不包含ABCDEFGH这样连续的串,再将通过过滤的串转换为小写,去重,输出.
输出:abcd
#注意 "ABCDEFGH"::startsWith 表示不需要完全以ABCDEFGH开头,但是开头的串必须被其包含,如ABC、ABCD等等 而e-> e.startWith("ABCDEFGH")需要你的串是ABCDEFGH开头的.
4.查找文件用什么命令?查找文件内容用什么命令?
find 查找文件
grep 查找文件内容
5.Java中的String是否是线程安全的?为什么?
是线程安全的,String是final修饰的,是不可变的,所以是线程安全的。
6.有如下表,按10~20,20~30这样的年龄段和性别对数据分类.
name | age | gender |
---|---|---|
张三 | 11 | 男 |
里斯 | 14 | 女 |
王武 | 16 | 男 |
Lily | 22 | 女 |
结果:
age | gender | 数量 |
---|---|---|
10~20 | 女 | 1 |
10~20 | 男 | 1 |
20~30 | 女 | 1 |
20~30 | 男 | 1 |
SELECT age_range,gender,COUNT(*) AS 数量 FROM(
SELECT CASE
WHEN age>=10 AND age<=20 THEN '1-10'
WHEN age>=21 AND age<=30 THEN '11-20'
END
AS age_range,gender FROM student) a
GROUP BY age_range,gender;
#注意这里a代表别名,必须存在.mysql要求每一个派生出来的表都必须有一个自己的别名!