美团面试
第一轮面试
第一题
student(sid,sname,sage,ssex) 学生表
course(cid,cname,tid) 课程表
sc(sid,cid,score) 成绩表
1、查出平均成绩大于80分的学生信息和平均成绩
2、查询“01”课程比“02”课程成绩高的所有学生的学号与分数
SELECT sid, sname, sage, ssex, Avg(score) as avg
FROM student join sc
on student.sid=sc.sid
group by student.sid, student.sname
having avg>80;
select distinct sc1.sid as sid, distinct sc1.score
from
(select * from sc where cid="01" ) t1 left join (select * from sc where cid="02" ) t2
on t1.sid=t2.sid
where t1.score > t2.score;
第二题
给定一个字符串A和其长度n,请返回一个bool值代表它是否为一个合法的括号串(只能由括号组成)。
测试样例: “(()())”,6
返回:true
测试样例: “()a()()”,7
返回:false
mport java.util.*;
public class Parenthesis {
public boolean chkParenthesis(String A, int n) {
// write code here
if(n%2==1){
return false;
}
Stack<Character> stack = new Stack<Character>();
for(char a : A.toCharArray()){
if(a=='('){
stack.push(a);
}else if(a==')'){
if(stack.isEmpty()){
return false;
}else if(stack.peek()=='('){
stack.pop();
}
}else{
return false;
}
}
return stack.isEmpty();
}
}
第二轮面试
写一个方法,入参是一个英文短文字符串,打印出出现频率最高的单词
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String strEng = sc.nextLine();
if(strEng==""){
System.out.println("");
}
String[] strArr = strEng.split("[,, ,;,!,.,:,\n]");
int i = 0;
String s = "";
Map<String, Integer> num = new HashMap<>();
for(int j=0; j<strArr.length; j++){
String temp = strArr[j].toLowerCase();
if(num.containsKey(temp)){
num.put(temp, num.get(temp)+1);
}else{
num.put(temp, 1);
}
if(i < num.get(temp)){
i = num.get(temp);
s = temp;
}
}
System.out.println(s);
}
}