• 面试题01


    Java中&&和&的区别

    &&表示逻辑与,或短路与,只有当符号两边都为真时,表达式才为真,只要左边为假,则不需要计算符号右边的表达式即可判断这个表达式为假,因此称为短路与。短路或与这个的原理类似,只要左边为真,则不需要计算右边的真假,因为这已经够判断表达式为真了。

    &表示按位与,只有符号两边都为真才可判断表达式的真假。即无论左边的表达式真假,符号右边的表达式都会被计算。

    Java中如何跳出多重嵌套的循环

    方法一

    在需要跳出的地方加标签tag

    再break tag;

     

    方法二

    Ref

    https://www.cnblogs.com/Xieyang-blog/p/8488612.html

    在循环外添加一个boolean类型的判断条件,将判断条件加到循环的判断条件中

    ArrayList、Vector、LinkedList存储性能和特性

    Ref :疯狂java讲义第五版 p317

    ArrayList和Vector的对比

    第一点:ArrayList和Vector的功能基本相同,且都是基于数组实现的List类,它们的长度都可以手动分配,也可以根据元素的增加而自动增长,也正因为它们是由数组实现的,所以随机访问list中的元素时性能较好,但是增删元素时的性能很差。但是Vector是一个古老的集合,从JDK1.0开始就存在了,那时java还没有提供系统的集合框架,所以Vector中有很多方法名很长的方法;而JDK1.2后,Java提供了系统的集合框架,之后才将Vector整合到了集合框架中(让Vector实现List接口)Vector有很多缺点,开发中应尽量少用。

    第二点,ArrayList和Vector的一大区别是:ArrayList线程不安全,需要手动同步数据,Vector线程安全,因此ArrayList的性能更高。但是还要注意,ArrayList可以使用Collections工具类来使ArrayList变成线程安全的,因此还是要避免使用Vector。

    第三点,Vector有一个古老的子类“Stack”栈,它的性能也很差,因此要少用,如果程序需要使用栈这种数据及结构,建议使用ArrayDeque。

    LinkedList

    LinkedList实现了List、Deque两个接口,说明LinkedList既可以充当list使用,又可以充当栈和队列来使用,是一种功能强大的集合类。它的内部以链表的形式来保存集合中的元素,因此随机访问集合内的元素时性能很差,因为每次都需要遍历,但是在插入和删除时的性能较好,因为只需要改变指针的地址。

    小结:ArrayList和Vector在随机访问方面性能高,LinkedList在增删方面性能高。总体来说ArrayList的性能比LinkedList好。

    数据库

    在答题前,要先有数据库模型:即至少有学生表、课程表、分数表这三张表,其中

    student表至少有sid、sname字段

    course表至少有cid、cname字段

    score表至少有sid、cid、score字段

    这个基本模型是答题的前提。很重要,要能快速识别并建立这个模型。

    查询平均成绩大于60的同学的学号和平均成绩

    Ref

    https://www.cnblogs.com/yuanyuan2017/p/11322831.html

    查询 平均成绩大于60 的同学的 学号 和 平均成绩

    这里提到平均分,用到avg分组函数,需要按照学生分组,再求平均分,之后用having来过滤分组结果。

    Select sid, avg(score) from student group by studentid having avg(socre) > 60

    https://blog.csdn.net/weixin_30561177/article/details/98888830

    查询同时学过课程1和课程2的同学的学号、姓名

    查询学过课程1的同学的id,结果用tb1表示

    (Select sid from stu_score where cid=1) tb1

    查询学过课程2的同学的id,结果用tb2表示

    (Select sid from stu_score where cid=2) tb2

    查询同时学过课程1和2的同学的id,结果用r表示

    Select sid from tb1, tb2 where tb1.sid=tb2.sid)r

    查询学生的详细信息

    Select sid, sname from student s left join r on s.id=r.sid

    整合

    Select sid , sname from student s

    Left join (

    Select sid from (

    (Select sid from stu_score where cid=1) tb1,

    (Select sid from stu_score where cid=2) tb2

    ) where tb1.sid=tb2.sid r

    ) on s.id=r.sid

     
  • 相关阅读:
    [置顶] 算法设计基础
    .net 多线程学习
    如何获得Repeater中的列
    npoi导出excel
    字符串的格式化问题
    用线程修改页面中的值(一)
    正则表达式的验证数值验证
    .net 线程更新页面中的值(方法二)
    .net 线程更新页面中的值(方法一)
    字符串的分割
  • 原文地址:https://www.cnblogs.com/leejunwei/p/mianshiti01.html
Copyright © 2020-2023  润新知