帮忙做几道有点棘手的J2EE面试题?

来源:百度知道 编辑:UC知道 时间:2024/05/14 10:59:32
去应聘J2EE的,被问到了一些数据库的问题:
1.如果一个SQL查询语句很长,执行速度很慢,你会想到哪些优化的方法
2.数据库里有些数据会反复被查询,问有什么好方法提高效率
非数据库的:
3.如何判定两条线段是否相交?(可以写成伪代码)
4.一堆数在一个集合中,总共2n个,问如何将这些数分成A,B两分,每分n个,要求A中的数均小于B中的数,需要考虑时间复杂度。

1.分段
2.使用缓存或者建立索引加快查询速度
3.写一段程序查找相同的坐标,如果两条线段某点XY坐标都相同,相交,否则不相交。
4抄jshmsch的就行了。

一点拙见,欢迎大牛补充并拍砖
1.
A检查sql语句,看能否优化
B在经常检查,全表扫描的字段上加索引
C观察数据库本身性能是否存在瓶颈
2.
把这些反复查询的先查询出来,
用的时候直接调就行了
3.
A先把两条线段所在直接全部表示为ax+by+c=0的形式
对于a或b为0要注意到
B判断a2b1-a1b2是否为0如为0,需要观察a1c2-a2c1是否为0
需要具体讨论
C如果B中第一个条件不为0,
只需要解出交点的x或y值,并用线段两个端点的x或y区间值比较即可
为0在B中就可讨论完毕
如何讨论感觉像在做初中或高中一元二次方程的解,
不是在做程序,
嘿嘿
4。把这么多数拉到一个数组中,
执行一个时间复杂度为O(n*lgn)的排序算法就行了,
但不一定保证最后分出的两个子数组能满意题目的结果
或者可以用一个容量为n的最大或最小堆,
这样能在空间复杂度上有所提高,
时间上好像提高不了多少

1.sql语句长:这是用存储过程!肯定比去查询数据库快的多!
2、反复查询时为表建立索引或者视图,查询时减轻遍历表的负担!
非数据库:
3、就是判断下一个线段上的点是不是可以再另一个线段上是吧:
一个线段需要2个点比如线段AB,A(X1,Y1),B(X2,Y2);线段CD,C(X3,Y3),D(X4,Y4);
根据斜率判断了::如果不平行就一定相交了。哈哈。
4、排序,这时就需要考虑排序法的优劣了。数据结构学的不咋样,我记得冒泡排序不错滴!

1、可考虑用分段程序进行。
2、可采用循环语句进行反复执行。
3、能确定没有交点。
4、用2n/2-1确定中间数,前面的为A组,后面的为B组。

(基本同意qiwt 的前两