美文网首页
6月17日面试总结

6月17日面试总结

作者: 拼搏男孩 | 来源:发表于2020-06-17 23:20 被阅读0次

    1、java中没有goto语句,但有goto保留字

    2、java的异常分类

    java.lang.Throwable类是错误(Error)和异常(Exception)的父类,Error中有常见的OutOfMemoryError与StackOverflowError,这两个都是常见虚拟机异常(VirtualMachineError),异常有RuntimeException、IOException、CloneNotSupportedException、InterruptedException等,非受检异常指的是java.lang.RuntimeException和java.lang.Error类及其子类,所有其他的异常类都称为受检异常。Java编译器要求程序必须捕获或声明抛出受检异常。

    现有四张表:student学生表、course课程表、teacher教师表、sc成绩表

    1. 查询选修了1号课程的成绩大于2号课程的学生的姓名

      分析:这道题可以拆分来看,首先查询这名学生的1号课程的成绩,然后查询这名学生的2号课程的成绩,做个比较就可以了。

      SELECT * FROM student s where (select score FROM sc AS a where a.stu_id=s.id AND a.course_id=1)>(select score FROM sc AS b where b.stu_id=s.id AND b.course_id=2);
      
    2. 查询没有选修张三老师教授课程的学生信息

      这道题的意思就是说张三老师的所有课程都没有选修,不存在一门课程是张三老师教授的这名课程却选修了,所以要使用NOT EXISTS

      SELECT * FROM student s where NOT EXISTS (SELECT * FROM sc INNER JOIN course c ON sc.course_id=c.id LEFT JOIN teacher t ON 
       t.id=c.teacher_id WHERE t.name="张三" AND sc.stu_id=s.id)
      
    3. 查询了选修的全部课程的学生姓名

      分析:没有一门课程这名学生没有选修,一个NOT EXISTS不能确定,需要两个NOT EXISTS

      SELECT * FROM student s WHERE NOT EXISTS (SELECT * FROM course c WHERE NOT EXISTS (SELECT * FROM sc WHERE sc.stu_id=s.id AND sc.course_id=c.id) )
      

      有点类似双重循环的感觉,从student表中每次取一个,然后针对student中的每一个元组再从course表中每次取一个。

    4. 查询至少选修了学号为2的学生选修的全部课程的学号

      SELECT DISTINCT(stu_id) FROM sc scx WHERE NOT EXISTS 
       (SELECT * FROM sc scy WHERE scy.stu_id=2 AND 
           NOT EXISTS (SELECT * FROM sc scz WHERE scz.stu_id=scx.stu_id AND             scz.course_id=scy.course_id))
      

    相关文章

      网友评论

          本文标题:6月17日面试总结

          本文链接:https://www.haomeiwen.com/subject/wgoexktx.html