面试题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

 
posted @ 2019-11-11 21:55  什么能让我为谁停留  阅读(94)  评论(0编辑  收藏  举报